Removed dst_handle in duplicate_handle request.
[wine] / include / ntddk.h
1 /*
2         this file defines interfaces mainly exposed to device drivers and
3         native nt dll's
4
5 */
6 #ifndef __WINE_NTDDK_H
7 #define __WINE_NTDDK_H
8
9 #include <ntdef.h>
10
11 /* end fixme */
12
13 /****************** 
14  * asynchronous I/O 
15  */
16 #undef Status   /* conflict with X11-includes*/
17
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;    
25
26 typedef VOID (NTAPI *PIO_APC_ROUTINE) ( PVOID ApcContext, PIO_STATUS_BLOCK IoStatusBlock, ULONG Reserved );
27
28 typedef enum _KEY_INFORMATION_CLASS {
29         KeyBasicInformation,
30         KeyNodeInformation,
31         KeyFullInformation
32 } KEY_INFORMATION_CLASS;
33
34 typedef enum _KEY_VALUE_INFORMATION_CLASS {
35         KeyValueBasicInformation,
36         KeyValueFullInformation,
37         KeyValuePartialInformation,
38         KeyValueFullInformationAlign64,
39         KeyValuePartialInformationAlign64
40 } KEY_VALUE_INFORMATION_CLASS;
41
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;
72
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;
93
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;
133
134 typedef enum _SECTION_INHERIT 
135 {       ViewShare = 1,
136         ViewUnmap = 2
137 } SECTION_INHERIT;
138  
139 /*
140         placeholder
141 */
142 typedef enum _OBJECT_INFORMATION_CLASS
143 {       DunnoTheConstants1
144 } OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS;
145
146 typedef enum SYSTEM_INFORMATION_CLASS
147 {       DunnoTheConstants2
148 } SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS;
149
150 /*
151  *      NtQuerySystemInformation interface
152  */
153 typedef struct _SYSTEM_TIME_ADJUSTMENT
154 {
155         ULONG   TimeAdjustment;
156         BOOLEAN TimeAdjustmentDisabled;
157
158 } SYSTEM_TIME_ADJUSTMENT, *PSYSTEM_TIME_ADJUSTMENT;
159
160 typedef struct _SYSTEM_CONFIGURATION_INFO 
161 {
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;
178
179 } SYSTEM_CONFIGURATION_INFO, *PSYSTEM_CONFIGURATION_INFO;
180
181
182 typedef struct _SYSTEM_CACHE_INFORMATION 
183 {
184         ULONG   CurrentSize;
185         ULONG   PeakSize;
186         ULONG   PageFaultCount;
187         ULONG   MinimumWorkingSet;
188         ULONG   MaximumWorkingSet;
189         ULONG   Unused[4];
190
191 } SYSTEM_CACHE_INFORMATION;
192
193 /*
194         timer
195 */
196 typedef enum _TIMER_TYPE 
197 {       NotificationTimer,
198         SynchronizationTimer
199 } TIMER_TYPE;
200
201 /*      ##############################
202         ######  SID FUNCTIONS   ######
203         ##############################
204 */
205
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);
218         
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);
227
228 /*      ##############################################
229         ######  SECURITY DESCRIPTOR FUNCTIONS   ######
230         ##############################################
231 */
232
233 NTSTATUS WINAPI RtlCreateSecurityDescriptor(
234         PSECURITY_DESCRIPTOR lpsd,
235         DWORD rev);
236
237 BOOLEAN WINAPI RtlValidSecurityDescriptor(
238         PSECURITY_DESCRIPTOR SecurityDescriptor);
239
240 DWORD WINAPI RtlGetDaclSecurityDescriptor(
241         IN PSECURITY_DESCRIPTOR pSecurityDescriptor,
242         OUT PBOOLEAN lpbDaclPresent,
243         OUT PACL *pDacl,
244         OUT PBOOLEAN lpbDaclDefaulted);
245
246 NTSTATUS WINAPI RtlSetDaclSecurityDescriptor (
247         PSECURITY_DESCRIPTOR lpsd,
248         BOOLEAN daclpresent,
249         PACL dacl,
250         BOOLEAN dacldefaulted );
251
252 ULONG WINAPI RtlLengthSecurityDescriptor(
253         PSECURITY_DESCRIPTOR SecurityDescriptor);
254
255 DWORD  WINAPI RtlSetSaclSecurityDescriptor (
256         PSECURITY_DESCRIPTOR lpsd,
257         BOOLEAN saclpresent,
258         PACL sacl,
259         BOOLEAN sacldefaulted);
260
261 NTSTATUS WINAPI RtlGetOwnerSecurityDescriptor(
262         PSECURITY_DESCRIPTOR SecurityDescriptor,
263         PSID *Owner,
264         PBOOLEAN OwnerDefaulted);
265
266 NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor(
267         PSECURITY_DESCRIPTOR lpsd,
268         PSID owner,
269         BOOLEAN ownerdefaulted);
270
271 NTSTATUS WINAPI RtlSetGroupSecurityDescriptor (
272         PSECURITY_DESCRIPTOR lpsd,
273         PSID group,
274         BOOLEAN groupdefaulted);
275
276 NTSTATUS WINAPI RtlGetGroupSecurityDescriptor(
277         PSECURITY_DESCRIPTOR SecurityDescriptor,
278         PSID *Group,
279         PBOOLEAN GroupDefaulted);
280
281 /*      ##############################
282         ######  ACL FUNCTIONS   ######
283         ##############################
284 */
285
286 DWORD WINAPI RtlCreateAcl(PACL acl,DWORD size,DWORD rev);
287
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);
297         
298 DWORD WINAPI RtlAddAccessAllowedAce(DWORD x1,DWORD x2,DWORD x3,DWORD x4);
299 DWORD WINAPI RtlGetAce(PACL pAcl,DWORD dwAceIndex,LPVOID *pAce );
300
301 /*      ######################################
302         ######  STRING FUNCTIONS        ######
303         ######################################
304 */
305
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);
324
325 /*      ######################################
326         ######  RESOURCE FUNCTIONS      ######
327         ######################################
328 */
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);
335
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) ;
362
363
364
365 #endif