Release 990226.
[wine/gsoc-2012-control.git] / include / ntddk.h
blob186a5e19377226d0c72d2a80cfe321dd4564c28f
1 /*
2 this file defines interfaces mainly exposed to device drivers and
3 native nt dll's
5 */
6 #ifndef __WINE_NTDDK_H
7 #define __WINE_NTDDK_H
9 #include <ntdef.h>
11 /* end fixme */
13 /******************
14 * asynchronous I/O
16 #undef Status /* conflict with X11-includes*/
18 typedef struct _IO_STATUS_BLOCK
19 { union
20 { NTSTATUS Status;
21 PVOID Pointer;
22 } u;
23 ULONG_PTR Information;
24 } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
26 typedef VOID (NTAPI *PIO_APC_ROUTINE) ( PVOID ApcContext, PIO_STATUS_BLOCK IoStatusBlock, ULONG Reserved );
28 typedef enum _KEY_INFORMATION_CLASS {
29 KeyBasicInformation,
30 KeyNodeInformation,
31 KeyFullInformation
32 } KEY_INFORMATION_CLASS;
34 typedef enum _KEY_VALUE_INFORMATION_CLASS {
35 KeyValueBasicInformation,
36 KeyValueFullInformation,
37 KeyValuePartialInformation,
38 KeyValueFullInformationAlign64,
39 KeyValuePartialInformationAlign64
40 } KEY_VALUE_INFORMATION_CLASS;
42 typedef enum _PROCESSINFOCLASS
43 { ProcessBasicInformation,
44 ProcessQuotaLimits,
45 ProcessIoCounters,
46 ProcessVmCounters,
47 ProcessTimes,
48 ProcessBasePriority,
49 ProcessRaisePriority,
50 ProcessDebugPort,
51 ProcessExceptionPort,
52 ProcessAccessToken,
53 ProcessLdtInformation,
54 ProcessLdtSize,
55 ProcessDefaultHardErrorMode,
56 ProcessIoPortHandlers,
57 ProcessPooledUsageAndLimits,
58 ProcessWorkingSetWatch,
59 ProcessUserModeIOPL,
60 ProcessEnableAlignmentFaultFixup,
61 ProcessPriorityClass,
62 ProcessWx86Information,
63 ProcessHandleCount,
64 ProcessAffinityMask,
65 ProcessPriorityBoost,
66 ProcessDeviceMap,
67 ProcessSessionInformation,
68 ProcessForegroundInformation,
69 ProcessWow64Information,
70 MaxProcessInfoClass
71 } PROCESSINFOCLASS;
73 typedef enum _THREADINFOCLASS
74 { ThreadBasicInformation,
75 ThreadTimes,
76 ThreadPriority,
77 ThreadBasePriority,
78 ThreadAffinityMask,
79 ThreadImpersonationToken,
80 ThreadDescriptorTableEntry,
81 ThreadEnableAlignmentFaultFixup,
82 ThreadEventPair_Reusable,
83 ThreadQuerySetWin32StartAddress,
84 ThreadZeroTlsCell,
85 ThreadPerformanceCount,
86 ThreadAmILastThread,
87 ThreadIdealProcessor,
88 ThreadPriorityBoost,
89 ThreadSetTlsArrayAddress,
90 ThreadIsIoPending,
91 MaxThreadInfoClass
92 } THREADINFOCLASS;
94 typedef enum _FILE_INFORMATION_CLASS {
95 FileDirectoryInformation = 1,
96 FileFullDirectoryInformation,
97 FileBothDirectoryInformation,
98 FileBasicInformation,
99 FileStandardInformation,
100 FileInternalInformation,
101 FileEaInformation,
102 FileAccessInformation,
103 FileNameInformation,
104 FileRenameInformation,
105 FileLinkInformation,
106 FileNamesInformation,
107 FileDispositionInformation,
108 FilePositionInformation,
109 FileFullEaInformation,
110 FileModeInformation,
111 FileAlignmentInformation,
112 FileAllInformation,
113 FileAllocationInformation,
114 FileEndOfFileInformation,
115 FileAlternateNameInformation,
116 FileStreamInformation,
117 FilePipeInformation,
118 FilePipeLocalInformation,
119 FilePipeRemoteInformation,
120 FileMailslotQueryInformation,
121 FileMailslotSetInformation,
122 FileCompressionInformation,
123 FileObjectIdInformation,
124 FileCompletionInformation,
125 FileMoveClusterInformation,
126 FileQuotaInformation,
127 FileReparsePointInformation,
128 FileNetworkOpenInformation,
129 FileAttributeTagInformation,
130 FileTrackingInformation,
131 FileMaximumInformation
132 } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
134 typedef enum _SECTION_INHERIT
135 { ViewShare = 1,
136 ViewUnmap = 2
137 } SECTION_INHERIT;
140 placeholder
142 typedef enum _OBJECT_INFORMATION_CLASS
143 { DunnoTheConstants1
144 } OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS;
146 typedef enum SYSTEM_INFORMATION_CLASS
147 { DunnoTheConstants2
148 } SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS;
151 * NtQuerySystemInformation interface
153 typedef struct _SYSTEM_TIME_ADJUSTMENT
155 ULONG TimeAdjustment;
156 BOOLEAN TimeAdjustmentDisabled;
158 } SYSTEM_TIME_ADJUSTMENT, *PSYSTEM_TIME_ADJUSTMENT;
160 typedef struct _SYSTEM_CONFIGURATION_INFO
162 union
163 { ULONG OemId;
164 struct
165 { WORD ProcessorArchitecture;
166 WORD Reserved;
167 } tag1;
168 } tag2;
169 ULONG PageSize;
170 PVOID MinimumApplicationAddress;
171 PVOID MaximumApplicationAddress;
172 ULONG ActiveProcessorMask;
173 ULONG NumberOfProcessors;
174 ULONG ProcessorType;
175 ULONG AllocationGranularity;
176 WORD ProcessorLevel;
177 WORD ProcessorRevision;
179 } SYSTEM_CONFIGURATION_INFO, *PSYSTEM_CONFIGURATION_INFO;
182 typedef struct _SYSTEM_CACHE_INFORMATION
184 ULONG CurrentSize;
185 ULONG PeakSize;
186 ULONG PageFaultCount;
187 ULONG MinimumWorkingSet;
188 ULONG MaximumWorkingSet;
189 ULONG Unused[4];
191 } SYSTEM_CACHE_INFORMATION;
194 timer
196 typedef enum _TIMER_TYPE
197 { NotificationTimer,
198 SynchronizationTimer
199 } TIMER_TYPE;
201 /* ##############################
202 ###### SID FUNCTIONS ######
203 ##############################
206 BOOLEAN WINAPI RtlAllocateAndInitializeSid (
207 PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,
208 DWORD nSubAuthorityCount,
209 DWORD x3,
210 DWORD x4,
211 DWORD x5,
212 DWORD x6,
213 DWORD x7,
214 DWORD x8,
215 DWORD x9,
216 DWORD x10,
217 PSID pSid);
219 DWORD WINAPI RtlEqualSid(DWORD x1,DWORD x2);
220 DWORD WINAPI RtlFreeSid(DWORD x1);
221 DWORD WINAPI RtlLengthRequiredSid(DWORD nrofsubauths);
222 DWORD WINAPI RtlLengthSid(PSID sid);
223 DWORD WINAPI RtlInitializeSid(PSID PSID,PSID_IDENTIFIER_AUTHORITY PSIDauth, DWORD c);
224 LPDWORD WINAPI RtlSubAuthoritySid(PSID PSID,DWORD nr);
225 LPBYTE WINAPI RtlSubAuthorityCountSid(PSID PSID);
226 DWORD WINAPI RtlCopySid(DWORD len,PSID to,PSID from);
228 /* ##############################################
229 ###### SECURITY DESCRIPTOR FUNCTIONS ######
230 ##############################################
233 NTSTATUS WINAPI RtlCreateSecurityDescriptor(
234 PSECURITY_DESCRIPTOR lpsd,
235 DWORD rev);
237 BOOLEAN WINAPI RtlValidSecurityDescriptor(
238 PSECURITY_DESCRIPTOR SecurityDescriptor);
240 DWORD WINAPI RtlGetDaclSecurityDescriptor(
241 IN PSECURITY_DESCRIPTOR pSecurityDescriptor,
242 OUT PBOOLEAN lpbDaclPresent,
243 OUT PACL *pDacl,
244 OUT PBOOLEAN lpbDaclDefaulted);
246 NTSTATUS WINAPI RtlSetDaclSecurityDescriptor (
247 PSECURITY_DESCRIPTOR lpsd,
248 BOOLEAN daclpresent,
249 PACL dacl,
250 BOOLEAN dacldefaulted );
252 ULONG WINAPI RtlLengthSecurityDescriptor(
253 PSECURITY_DESCRIPTOR SecurityDescriptor);
255 DWORD WINAPI RtlSetSaclSecurityDescriptor (
256 PSECURITY_DESCRIPTOR lpsd,
257 BOOLEAN saclpresent,
258 PACL sacl,
259 BOOLEAN sacldefaulted);
261 NTSTATUS WINAPI RtlGetOwnerSecurityDescriptor(
262 PSECURITY_DESCRIPTOR SecurityDescriptor,
263 PSID *Owner,
264 PBOOLEAN OwnerDefaulted);
266 NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor(
267 PSECURITY_DESCRIPTOR lpsd,
268 PSID owner,
269 BOOLEAN ownerdefaulted);
271 NTSTATUS WINAPI RtlSetGroupSecurityDescriptor (
272 PSECURITY_DESCRIPTOR lpsd,
273 PSID group,
274 BOOLEAN groupdefaulted);
276 NTSTATUS WINAPI RtlGetGroupSecurityDescriptor(
277 PSECURITY_DESCRIPTOR SecurityDescriptor,
278 PSID *Group,
279 PBOOLEAN GroupDefaulted);
281 /* ##############################
282 ###### ACL FUNCTIONS ######
283 ##############################
286 DWORD WINAPI RtlCreateAcl(PACL acl,DWORD size,DWORD rev);
288 BOOLEAN WINAPI RtlFirstFreeAce(
289 PACL acl,
290 LPACE_HEADER *x);
291 NTSTATUS WINAPI RtlAddAce(
292 PACL acl,
293 DWORD rev,
294 DWORD xnrofaces,
295 LPACE_HEADER acestart,
296 DWORD acelen);
298 DWORD WINAPI RtlAddAccessAllowedAce(DWORD x1,DWORD x2,DWORD x3,DWORD x4);
299 DWORD WINAPI RtlGetAce(PACL pAcl,DWORD dwAceIndex,LPVOID *pAce );
301 /* ######################################
302 ###### STRING FUNCTIONS ######
303 ######################################
306 DWORD WINAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING uni,PANSI_STRING ansi,BOOLEAN doalloc);
307 DWORD WINAPI RtlOemStringToUnicodeString(PUNICODE_STRING uni,PSTRING ansi,BOOLEAN doalloc);
308 DWORD WINAPI RtlMultiByteToUnicodeN(LPWSTR unistr,DWORD unilen,LPDWORD reslen,LPSTR oemstr,DWORD oemlen);
309 DWORD WINAPI RtlOemToUnicodeN(LPWSTR unistr,DWORD unilen,LPDWORD reslen,LPSTR oemstr,DWORD oemlen);
310 VOID WINAPI RtlInitAnsiString(PANSI_STRING target,LPCSTR source);
311 VOID WINAPI RtlInitString(PSTRING target,LPCSTR source);
312 VOID WINAPI RtlInitUnicodeString(PUNICODE_STRING target,LPCWSTR source);
313 VOID WINAPI RtlFreeUnicodeString(PUNICODE_STRING str);
314 VOID WINAPI RtlFreeAnsiString(PANSI_STRING AnsiString);
315 DWORD WINAPI RtlUnicodeToOemN(LPSTR oemstr,DWORD oemlen,LPDWORD reslen,LPWSTR unistr,DWORD unilen);
316 DWORD WINAPI RtlUnicodeStringToOemString(PANSI_STRING oem,PUNICODE_STRING uni,BOOLEAN alloc);
317 DWORD WINAPI RtlUnicodeStringToAnsiString(PANSI_STRING oem,PUNICODE_STRING uni,BOOLEAN alloc);
318 DWORD WINAPI RtlEqualUnicodeString(PUNICODE_STRING s1,PUNICODE_STRING s2,DWORD x);
319 DWORD WINAPI RtlUpcaseUnicodeString(PUNICODE_STRING dest,PUNICODE_STRING src,BOOLEAN doalloc);
320 UINT WINAPI RtlxOemStringToUnicodeSize(PSTRING str);
321 UINT WINAPI RtlxAnsiStringToUnicodeSize(PANSI_STRING str);
322 DWORD WINAPI RtlIsTextUnicode(LPVOID buf, DWORD len, DWORD *pf);
323 NTSTATUS WINAPI RtlCompareUnicodeString(PUNICODE_STRING String1, PUNICODE_STRING String2, BOOLEAN CaseInSensitive);
325 /* ######################################
326 ###### RESOURCE FUNCTIONS ######
327 ######################################
329 void WINAPI RtlInitializeResource(LPRTL_RWLOCK rwl);
330 void WINAPI RtlDeleteResource(LPRTL_RWLOCK rwl);
331 BYTE WINAPI RtlAcquireResourceExclusive(LPRTL_RWLOCK rwl, BYTE fWait);
332 BYTE WINAPI RtlAcquireResourceShared(LPRTL_RWLOCK rwl, BYTE fWait);
333 void WINAPI RtlReleaseResource(LPRTL_RWLOCK rwl);
334 void WINAPI RtlDumpResource(LPRTL_RWLOCK rwl);
336 void __cdecl DbgPrint(LPCSTR fmt,LPVOID args);
337 DWORD NtRaiseException ( DWORD dwExceptionCode, DWORD dwExceptionFlags, DWORD nNumberOfArguments,CONST ULONG_PTR *lpArguments);
338 DWORD RtlRaiseException ( DWORD x);
339 VOID WINAPI RtlAcquirePebLock(void);
340 VOID WINAPI RtlReleasePebLock(void);
341 DWORD WINAPI RtlAdjustPrivilege(DWORD x1,DWORD x2,DWORD x3,DWORD x4);
342 DWORD WINAPI RtlIntegerToChar(DWORD x1,DWORD x2,DWORD x3,DWORD x4);
343 DWORD WINAPI RtlSystemTimeToLocalTime(DWORD x1,DWORD x2);
344 DWORD WINAPI RtlTimeToTimeFields(DWORD x1,DWORD x2);
345 DWORD WINAPI RtlSetEnvironmentVariable(DWORD x1,PUNICODE_STRING key,PUNICODE_STRING val);
346 DWORD WINAPI RtlNewSecurityObject(DWORD x1,DWORD x2,DWORD x3,DWORD x4,DWORD x5,DWORD x6);
347 DWORD WINAPI RtlDeleteSecurityObject(DWORD x1);
348 BOOLEAN WINAPI RtlTimeToSecondsSince1980(LPFILETIME ft,LPDWORD timeret);
349 BOOLEAN WINAPI RtlTimeToSecondsSince1970(LPFILETIME ft,LPDWORD timeret);
350 LPVOID WINAPI RtlNormalizeProcessParams(LPVOID x);
351 DWORD WINAPI RtlNtStatusToDosError(DWORD error);
352 BOOLEAN WINAPI RtlGetNtProductType(LPDWORD type);
353 DWORD WINAPI RtlTimeToElapsedTimeFields( DWORD x1, DWORD x2 );
354 INT WINAPI RtlExtendedLargeIntegerDivide(LARGE_INTEGER dividend, DWORD divisor, LPDWORD rest);
355 LARGE_INTEGER WINAPI RtlExtendedIntegerMultiply(LARGE_INTEGER factor1,INT factor2);
356 DWORD WINAPI RtlFormatCurrentUserKeyPath(DWORD x);
357 DWORD WINAPI RtlOpenCurrentUser(DWORD x1, DWORD *x2);
358 BOOLEAN WINAPI RtlDosPathNameToNtPathName_U( LPWSTR from,PUNICODE_STRING us,DWORD x2,DWORD x3);
359 DWORD WINAPI RtlCreateEnvironment(DWORD x1,DWORD x2);
360 DWORD WINAPI RtlDestroyEnvironment(DWORD x);
361 DWORD WINAPI RtlQueryEnvironmentVariable_U(DWORD x1,PUNICODE_STRING key,PUNICODE_STRING val) ;
365 #endif