include: Add the missing guiddef.h include directives.
[wine] / include / winternl.h
1 /*
2  * Internal NT APIs and data structures
3  *
4  * Copyright (C) the Wine project
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  */
20
21 #ifndef __WINE_WINTERNL_H
22 #define __WINE_WINTERNL_H
23
24 #include <windef.h>
25
26 #ifdef __cplusplus
27 extern "C" {
28 #endif /* defined(__cplusplus) */
29
30
31 /**********************************************************************
32  * Fundamental types and data structures
33  */
34
35 #ifndef WINE_NTSTATUS_DECLARED
36 #define WINE_NTSTATUS_DECLARED
37 typedef LONG NTSTATUS;
38 #endif
39
40 typedef CONST char *PCSZ;
41
42 typedef short CSHORT;
43 typedef CSHORT *PCSHORT;
44
45 #ifndef __STRING_DEFINED__
46 #define __STRING_DEFINED__
47 typedef struct _STRING {
48   USHORT Length;
49   USHORT MaximumLength;
50   PCHAR Buffer;
51 } STRING, *PSTRING;
52 #endif
53
54 typedef STRING ANSI_STRING;
55 typedef PSTRING PANSI_STRING;
56 typedef const STRING *PCANSI_STRING;
57
58 typedef STRING OEM_STRING;
59 typedef PSTRING POEM_STRING;
60 typedef const STRING *PCOEM_STRING;
61
62 #ifndef __UNICODE_STRING_DEFINED__
63 #define __UNICODE_STRING_DEFINED__
64 typedef struct _UNICODE_STRING {
65   USHORT Length;        /* bytes */
66   USHORT MaximumLength; /* bytes */
67   PWSTR  Buffer;
68 } UNICODE_STRING, *PUNICODE_STRING;
69 #endif
70
71 typedef const UNICODE_STRING *PCUNICODE_STRING;
72
73 #ifndef _FILETIME_
74 #define _FILETIME_
75 /* 64 bit number of 100 nanoseconds intervals since January 1, 1601 */
76 typedef struct _FILETIME
77 {
78 #ifdef WORDS_BIGENDIAN
79   DWORD  dwHighDateTime;
80   DWORD  dwLowDateTime;
81 #else
82   DWORD  dwLowDateTime;
83   DWORD  dwHighDateTime;
84 #endif
85 } FILETIME, *PFILETIME, *LPFILETIME;
86 #endif /* _FILETIME_ */
87
88 /*
89  * RTL_SYSTEM_TIME and RTL_TIME_ZONE_INFORMATION are the same as
90  * the SYSTEMTIME and TIME_ZONE_INFORMATION structures defined
91  * in winbase.h, however we need to define them separately so
92  * winternl.h doesn't depend on winbase.h.  They are used by
93  * RtlQueryTimeZoneInformation and RtlSetTimeZoneInformation.
94  * The names are guessed; if anybody knows the real names, let me know.
95  */
96 typedef struct _RTL_SYSTEM_TIME {
97     WORD wYear;
98     WORD wMonth;
99     WORD wDayOfWeek;
100     WORD wDay;
101     WORD wHour;
102     WORD wMinute;
103     WORD wSecond;
104     WORD wMilliseconds;
105 } RTL_SYSTEM_TIME, *PRTL_SYSTEM_TIME;
106
107 typedef struct _RTL_TIME_ZONE_INFORMATION {
108     LONG Bias;
109     WCHAR StandardName[32];
110     RTL_SYSTEM_TIME StandardDate;
111     LONG StandardBias;
112     WCHAR DaylightName[32];
113     RTL_SYSTEM_TIME DaylightDate;
114     LONG DaylightBias;
115 } RTL_TIME_ZONE_INFORMATION, *PRTL_TIME_ZONE_INFORMATION;
116
117 typedef struct _CLIENT_ID
118 {
119    HANDLE UniqueProcess;
120    HANDLE UniqueThread;
121 } CLIENT_ID, *PCLIENT_ID;
122
123 typedef struct _CURDIR
124 {
125     UNICODE_STRING DosPath;
126     PVOID Handle;
127 } CURDIR, *PCURDIR;
128
129 typedef struct RTL_DRIVE_LETTER_CURDIR
130 {
131     USHORT              Flags;
132     USHORT              Length;
133     ULONG               TimeStamp;
134     UNICODE_STRING      DosPath;
135 } RTL_DRIVE_LETTER_CURDIR, *PRTL_DRIVE_LETTER_CURDIR;
136
137 typedef struct tagRTL_BITMAP {
138     ULONG  SizeOfBitMap; /* Number of bits in the bitmap */
139     PULONG Buffer; /* Bitmap data, assumed sized to a DWORD boundary */
140 } RTL_BITMAP, *PRTL_BITMAP;
141
142 typedef const RTL_BITMAP *PCRTL_BITMAP;
143
144 typedef struct tagRTL_BITMAP_RUN {
145     ULONG StartingIndex; /* Bit position at which run starts */
146     ULONG NumberOfBits;  /* Size of the run in bits */
147 } RTL_BITMAP_RUN, *PRTL_BITMAP_RUN;
148
149 typedef const RTL_BITMAP_RUN *PCRTL_BITMAP_RUN;
150
151 typedef struct _RTL_USER_PROCESS_PARAMETERS
152 {
153     ULONG               AllocationSize;
154     ULONG               Size;
155     ULONG               Flags;
156     ULONG               DebugFlags;
157     HANDLE              ConsoleHandle;
158     ULONG               ConsoleFlags;
159     HANDLE              hStdInput;
160     HANDLE              hStdOutput;
161     HANDLE              hStdError;
162     CURDIR              CurrentDirectory;
163     UNICODE_STRING      DllPath;
164     UNICODE_STRING      ImagePathName;
165     UNICODE_STRING      CommandLine;
166     PWSTR               Environment;
167     ULONG               dwX;
168     ULONG               dwY;
169     ULONG               dwXSize;
170     ULONG               dwYSize;
171     ULONG               dwXCountChars;
172     ULONG               dwYCountChars;
173     ULONG               dwFillAttribute;
174     ULONG               dwFlags;
175     ULONG               wShowWindow;
176     UNICODE_STRING      WindowTitle;
177     UNICODE_STRING      Desktop;
178     UNICODE_STRING      ShellInfo;
179     UNICODE_STRING      RuntimeInfo;
180     RTL_DRIVE_LETTER_CURDIR DLCurrentDirectory[0x20];
181 } RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;
182
183 /* value for Flags field (FIXME: not the correct name) */
184 #define PROCESS_PARAMS_FLAG_NORMALIZED 1
185
186 typedef struct _PEB_LDR_DATA
187 {
188     ULONG               Length;
189     BOOLEAN             Initialized;
190     PVOID               SsHandle;
191     LIST_ENTRY          InLoadOrderModuleList;
192     LIST_ENTRY          InMemoryOrderModuleList;
193     LIST_ENTRY          InInitializationOrderModuleList;
194 } PEB_LDR_DATA, *PPEB_LDR_DATA;
195
196 typedef struct _GDI_TEB_BATCH
197 {
198     ULONG  Offset;
199     HANDLE HDC;
200     ULONG  Buffer[0x136];
201 } GDI_TEB_BATCH;
202
203 typedef struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME
204 {
205     struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME *Previous;
206     struct _ACTIVATION_CONTEXT                 *ActivationContext;
207     ULONG                                       Flags;
208 } RTL_ACTIVATION_CONTEXT_STACK_FRAME, *PRTL_ACTIVATION_CONTEXT_STACK_FRAME;
209
210 typedef struct _ACTIVATION_CONTEXT_STACK
211 {
212     ULONG                               Flags;
213     ULONG                               NextCookieSequenceNumber;
214     RTL_ACTIVATION_CONTEXT_STACK_FRAME *ActiveFrame;
215     LIST_ENTRY                          FrameListCache;
216 } ACTIVATION_CONTEXT_STACK, *PACTIVATION_CONTEXT_STACK;
217
218 /***********************************************************************
219  * PEB data structure
220  */
221 typedef struct _PEB
222 {                                                                 /* win32/win64 */
223     BOOLEAN                      InheritedAddressSpace;             /* 000/000 */
224     BOOLEAN                      ReadImageFileExecOptions;          /* 001/001 */
225     BOOLEAN                      BeingDebugged;                     /* 002/002 */
226     BOOLEAN                      SpareBool;                         /* 003/003 */
227     HANDLE                       Mutant;                            /* 004/008 */
228     HMODULE                      ImageBaseAddress;                  /* 008/010 */
229     PPEB_LDR_DATA                LdrData;                           /* 00c/018 */
230     RTL_USER_PROCESS_PARAMETERS *ProcessParameters;                 /* 010/020 */
231     PVOID                        SubSystemData;                     /* 014/028 */
232     HANDLE                       ProcessHeap;                       /* 018/030 */
233     PRTL_CRITICAL_SECTION        FastPebLock;                       /* 01c/038 */
234     PVOID /*PPEBLOCKROUTINE*/    FastPebLockRoutine;                /* 020/040 */
235     PVOID /*PPEBLOCKROUTINE*/    FastPebUnlockRoutine;              /* 024/048 */
236     ULONG                        EnvironmentUpdateCount;            /* 028/050 */
237     PVOID                        KernelCallbackTable;               /* 02c/058 */
238     ULONG                        Reserved[2];                       /* 030/060 */
239     PVOID /*PPEB_FREE_BLOCK*/    FreeList;                          /* 038/068 */
240     ULONG                        TlsExpansionCounter;               /* 03c/070 */
241     PRTL_BITMAP                  TlsBitmap;                         /* 040/078 */
242     ULONG                        TlsBitmapBits[2];                  /* 044/080 */
243     PVOID                        ReadOnlySharedMemoryBase;          /* 04c/088 */
244     PVOID                        ReadOnlySharedMemoryHeap;          /* 050/090 */
245     PVOID                       *ReadOnlyStaticServerData;          /* 054/098 */
246     PVOID                        AnsiCodePageData;                  /* 058/0a0 */
247     PVOID                        OemCodePageData;                   /* 05c/0a8 */
248     PVOID                        UnicodeCaseTableData;              /* 060/0b0 */
249     ULONG                        NumberOfProcessors;                /* 064/0b8 */
250     ULONG                        NtGlobalFlag;                      /* 068/0bc */
251     LARGE_INTEGER                CriticalSectionTimeout;            /* 070/0c0 */
252     SIZE_T                       HeapSegmentReserve;                /* 078/0c8 */
253     SIZE_T                       HeapSegmentCommit;                 /* 07c/0d0 */
254     SIZE_T                       HeapDeCommitTotalFreeThreshold;    /* 080/0d8 */
255     SIZE_T                       HeapDeCommitFreeBlockThreshold;    /* 084/0e0 */
256     ULONG                        NumberOfHeaps;                     /* 088/0e8 */
257     ULONG                        MaximumNumberOfHeaps;              /* 08c/0ec */
258     PVOID                       *ProcessHeaps;                      /* 090/0f0 */
259     PVOID                        GdiSharedHandleTable;              /* 094/0f8 */
260     PVOID                        ProcessStarterHelper;              /* 098/100 */
261     PVOID                        GdiDCAttributeList;                /* 09c/108 */
262     PVOID                        LoaderLock;                        /* 0a0/110 */
263     ULONG                        OSMajorVersion;                    /* 0a4/118 */
264     ULONG                        OSMinorVersion;                    /* 0a8/11c */
265     ULONG                        OSBuildNumber;                     /* 0ac/120 */
266     ULONG                        OSPlatformId;                      /* 0b0/124 */
267     ULONG                        ImageSubSystem;                    /* 0b4/128 */
268     ULONG                        ImageSubSystemMajorVersion;        /* 0b8/12c */
269     ULONG                        ImageSubSystemMinorVersion;        /* 0bc/130 */
270     ULONG                        ImageProcessAffinityMask;          /* 0c0/134 */
271     HANDLE                       GdiHandleBuffer[28];               /* 0c4/138 */
272     ULONG                        unknown[6];                        /* 134/218 */
273     PVOID                        PostProcessInitRoutine;            /* 14c/230 */
274     PRTL_BITMAP                  TlsExpansionBitmap;                /* 150/238 */
275     ULONG                        TlsExpansionBitmapBits[32];        /* 154/240 */
276     ULONG                        SessionId;                         /* 1d4/2c0 */
277     ULARGE_INTEGER               AppCompatFlags;                    /* 1d8/2c8 */
278     ULARGE_INTEGER               AppCompatFlagsUser;                /* 1e0/2d0 */
279     PVOID                        ShimData;                          /* 1e8/2d8 */
280     PVOID                        AppCompatInfo;                     /* 1ec/2e0 */
281     UNICODE_STRING               CSDVersion;                        /* 1f0/2e8 */
282     PVOID                        ActivationContextData;             /* 1f8/2f8 */
283     PVOID                        ProcessAssemblyStorageMap;         /* 1fc/300 */
284     PVOID                        SystemDefaultActivationData;       /* 200/308 */
285     PVOID                        SystemAssemblyStorageMap;          /* 204/310 */
286     SIZE_T                       MinimumStackCommit;                /* 208/318 */
287     PVOID                       *FlsCallback;                       /* 20c/320 */
288     LIST_ENTRY                   FlsListHead;                       /* 210/328 */
289     PRTL_BITMAP                  FlsBitmap;                         /* 218/338 */
290     ULONG                        FlsBitmapBits[4];                  /* 21c/340 */
291 } PEB, *PPEB;
292
293
294 /***********************************************************************
295  * TEB data structure
296  */
297 typedef struct _TEB
298 {                                                                 /* win32/win64 */
299     NT_TIB                       Tib;                               /* 000/0000 */
300     PVOID                        EnvironmentPointer;                /* 01c/0038 */
301     CLIENT_ID                    ClientId;                          /* 020/0040 */
302     PVOID                        ActiveRpcHandle;                   /* 028/0050 */
303     PVOID                        ThreadLocalStoragePointer;         /* 02c/0058 */
304     PPEB                         Peb;                               /* 030/0060 */
305     ULONG                        LastErrorValue;                    /* 034/0068 */
306     ULONG                        CountOfOwnedCriticalSections;      /* 038/006c */
307     PVOID                        CsrClientThread;                   /* 03c/0070 */
308     PVOID                        Win32ThreadInfo;                   /* 040/0078 */
309     ULONG                        Win32ClientInfo[31];               /* 044/0080 used for user32 private data in Wine */
310     PVOID                        WOW32Reserved;                     /* 0c0/0100 */
311     ULONG                        CurrentLocale;                     /* 0c4/0108 */
312     ULONG                        FpSoftwareStatusRegister;          /* 0c8/010c */
313     PVOID                        SystemReserved1[54];               /* 0cc/0110 used for kernel32 private data in Wine */
314     LONG                         ExceptionCode;                     /* 1a4/02c0 */
315     ACTIVATION_CONTEXT_STACK     ActivationContextStack;            /* 1a8/02c8 */
316     BYTE                         SpareBytes1[24];                   /* 1bc/02e8 used for ntdll private data in Wine */
317     PVOID                        SystemReserved2[10];               /* 1d4/0300 used for ntdll private data in Wine */
318     GDI_TEB_BATCH                GdiTebBatch;                       /* 1fc/0350 used for vm86 private data in Wine */
319     HANDLE                       gdiRgn;                            /* 6dc/0838 */
320     HANDLE                       gdiPen;                            /* 6e0/0840 */
321     HANDLE                       gdiBrush;                          /* 6e4/0848 */
322     CLIENT_ID                    RealClientId;                      /* 6e8/0850 */
323     HANDLE                       GdiCachedProcessHandle;            /* 6f0/0860 */
324     ULONG                        GdiClientPID;                      /* 6f4/0868 */
325     ULONG                        GdiClientTID;                      /* 6f8/086c */
326     PVOID                        GdiThreadLocaleInfo;               /* 6fc/0870 */
327     ULONG                        UserReserved[5];                   /* 700/0878 */
328     PVOID                        glDispachTable[280];               /* 714/0890 */
329     PVOID                        glReserved1[26];                   /* b74/1150 */
330     PVOID                        glReserved2;                       /* bdc/1220 */
331     PVOID                        glSectionInfo;                     /* be0/1228 */
332     PVOID                        glSection;                         /* be4/1230 */
333     PVOID                        glTable;                           /* be8/1238 */
334     PVOID                        glCurrentRC;                       /* bec/1240 */
335     PVOID                        glContext;                         /* bf0/1248 */
336     ULONG                        LastStatusValue;                   /* bf4/1250 */
337     UNICODE_STRING               StaticUnicodeString;               /* bf8/1258 used by advapi32 */
338     WCHAR                        StaticUnicodeBuffer[261];          /* c00/1268 used by advapi32 */
339     PVOID                        DeallocationStack;                 /* e0c/1478 */
340     PVOID                        TlsSlots[64];                      /* e10/1480 */
341     LIST_ENTRY                   TlsLinks;                          /* f10/1680 */
342     PVOID                        Vdm;                               /* f18/1690 */
343     PVOID                        ReservedForNtRpc;                  /* f1c/1698 */
344     PVOID                        DbgSsReserved[2];                  /* f20/16a0 */
345     ULONG                        HardErrorDisabled;                 /* f28/16b0 */
346     PVOID                        Instrumentation[16];               /* f2c/16b8 */
347     PVOID                        WinSockData;                       /* f6c/1738 */
348     ULONG                        GdiBatchCount;                     /* f70/1740 */
349     ULONG                        Spare2;                            /* f74/1744 */
350     PVOID                        Spare3;                            /* f78/1748 */
351     PVOID                        Spare4;                            /* f7c/1750 */
352     PVOID                        ReservedForOle;                    /* f80/1758 */
353     ULONG                        WaitingOnLoaderLock;               /* f84/1760 */
354     PVOID                        Reserved5[3];                      /* f88/1768 */
355     PVOID                       *TlsExpansionSlots;                 /* f94/1780 */
356     ULONG                        ImpersonationLocale;               /* f98/1788 */
357     ULONG                        IsImpersonating;                   /* f9c/178c */
358     PVOID                        NlsCache;                          /* fa0/1790 */
359     PVOID                        ShimData;                          /* fa4/1798 */
360     ULONG                        HeapVirtualAffinity;               /* fa8/17a0 */
361     PVOID                        CurrentTransactionHandle;          /* fac/17a8 */
362     PVOID                        ActiveFrame;                       /* fb0/17b0 */
363 #ifdef _WIN64
364     PVOID                        unknown[2];                        /*     17b8 */
365 #endif
366     PVOID                       *FlsSlots;                          /* fb4/17c8 */
367 } TEB, *PTEB;
368
369 /***********************************************************************
370  * Enums
371  */
372
373 typedef enum _FILE_INFORMATION_CLASS {
374     FileDirectoryInformation = 1,
375     FileFullDirectoryInformation,
376     FileBothDirectoryInformation,
377     FileBasicInformation,
378     FileStandardInformation,
379     FileInternalInformation,
380     FileEaInformation,
381     FileAccessInformation,
382     FileNameInformation,
383     FileRenameInformation,
384     FileLinkInformation,
385     FileNamesInformation,
386     FileDispositionInformation,
387     FilePositionInformation,
388     FileFullEaInformation,
389     FileModeInformation,
390     FileAlignmentInformation,
391     FileAllInformation,
392     FileAllocationInformation,
393     FileEndOfFileInformation,
394     FileAlternateNameInformation,
395     FileStreamInformation,
396     FilePipeInformation,
397     FilePipeLocalInformation,
398     FilePipeRemoteInformation,
399     FileMailslotQueryInformation,
400     FileMailslotSetInformation,
401     FileCompressionInformation,
402     FileObjectIdInformation,
403     FileCompletionInformation,
404     FileMoveClusterInformation,
405     FileQuotaInformation,
406     FileReparsePointInformation,
407     FileNetworkOpenInformation,
408     FileAttributeTagInformation,
409     FileTrackingInformation,
410     FileIdBothDirectoryInformation,
411     FileIdFullDirectoryInformation,
412     FileValidDataLengthInformation,
413     FileShortNameInformation = 40,
414     /* 41, 42, 43 undocumented */
415     FileSfioReserveInformation = 44,
416     FileSfioVolumeInformation = 45,
417     FileHardLinkInformation = 46,
418     /* 47 undocumented */
419     FileNormalizedNameInformation = 48,
420     /* 49 undocumented */
421     FileIdGlobalTxDirectoryInformation = 50,
422     /* 51, 52, 53 undocumented */
423     FileStandardLinkInformation = 54,
424     FileMaximumInformation
425 } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
426
427 typedef struct _FILE_DIRECTORY_INFORMATION {
428     ULONG               NextEntryOffset;
429     ULONG               FileIndex;
430     LARGE_INTEGER       CreationTime;
431     LARGE_INTEGER       LastAccessTime;
432     LARGE_INTEGER       LastWriteTime;
433     LARGE_INTEGER       ChangeTime;
434     LARGE_INTEGER       EndOfFile;
435     LARGE_INTEGER       AllocationSize;
436     ULONG               FileAttributes;
437     ULONG               FileNameLength;
438     WCHAR               FileName[ANYSIZE_ARRAY];
439 } FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION;
440
441 typedef struct _FILE_FULL_DIRECTORY_INFORMATION {
442     ULONG               NextEntryOffset;
443     ULONG               FileIndex;
444     LARGE_INTEGER       CreationTime;
445     LARGE_INTEGER       LastAccessTime;
446     LARGE_INTEGER       LastWriteTime;
447     LARGE_INTEGER       ChangeTime;
448     LARGE_INTEGER       EndOfFile;
449     LARGE_INTEGER       AllocationSize;
450     ULONG               FileAttributes;
451     ULONG               FileNameLength;
452     ULONG               EaSize;
453     WCHAR               FileName[ANYSIZE_ARRAY];
454 } FILE_FULL_DIRECTORY_INFORMATION, *PFILE_FULL_DIRECTORY_INFORMATION,
455   FILE_FULL_DIR_INFORMATION, *PFILE_FULL_DIR_INFORMATION;
456
457 typedef struct _FILE_ID_FULL_DIRECTORY_INFORMATION {
458     ULONG               NextEntryOffset;
459     ULONG               FileIndex;
460     LARGE_INTEGER       CreationTime;
461     LARGE_INTEGER       LastAccessTime;
462     LARGE_INTEGER       LastWriteTime;
463     LARGE_INTEGER       ChangeTime;
464     LARGE_INTEGER       EndOfFile;
465     LARGE_INTEGER       AllocationSize;
466     ULONG               FileAttributes;
467     ULONG               FileNameLength;
468     ULONG               EaSize;
469     LARGE_INTEGER       FileId;
470     WCHAR               FileName[ANYSIZE_ARRAY];
471 } FILE_ID_FULL_DIRECTORY_INFORMATION, *PFILE_ID_FULL_DIRECTORY_INFORMATION;
472
473 typedef struct _FILE_BOTH_DIRECTORY_INFORMATION {
474     ULONG               NextEntryOffset;
475     ULONG               FileIndex;
476     LARGE_INTEGER       CreationTime;
477     LARGE_INTEGER       LastAccessTime;
478     LARGE_INTEGER       LastWriteTime;
479     LARGE_INTEGER       ChangeTime;
480     LARGE_INTEGER       EndOfFile;
481     LARGE_INTEGER       AllocationSize;
482     ULONG               FileAttributes;
483     ULONG               FileNameLength;
484     ULONG               EaSize;
485     CHAR                ShortNameLength;
486     WCHAR               ShortName[12];
487     WCHAR               FileName[ANYSIZE_ARRAY];
488 } FILE_BOTH_DIRECTORY_INFORMATION, *PFILE_BOTH_DIRECTORY_INFORMATION,
489   FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;
490
491 typedef struct _FILE_ID_BOTH_DIRECTORY_INFORMATION {
492     ULONG               NextEntryOffset;
493     ULONG               FileIndex;
494     LARGE_INTEGER       CreationTime;
495     LARGE_INTEGER       LastAccessTime;
496     LARGE_INTEGER       LastWriteTime;
497     LARGE_INTEGER       ChangeTime;
498     LARGE_INTEGER       EndOfFile;
499     LARGE_INTEGER       AllocationSize;
500     ULONG               FileAttributes;
501     ULONG               FileNameLength;
502     ULONG               EaSize;
503     CHAR                ShortNameLength;
504     WCHAR               ShortName[12];
505     LARGE_INTEGER       FileId;
506     WCHAR               FileName[ANYSIZE_ARRAY];
507 } FILE_ID_BOTH_DIRECTORY_INFORMATION, *PFILE_ID_BOTH_DIRECTORY_INFORMATION;
508
509 typedef struct _FILE_BASIC_INFORMATION {
510     LARGE_INTEGER CreationTime;
511     LARGE_INTEGER LastAccessTime;
512     LARGE_INTEGER LastWriteTime;
513     LARGE_INTEGER ChangeTime;
514     ULONG FileAttributes;
515 } FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
516
517 typedef struct _FILE_STANDARD_INFORMATION {
518     LARGE_INTEGER AllocationSize;
519     LARGE_INTEGER EndOfFile;
520     ULONG NumberOfLinks;
521     BOOLEAN DeletePending;
522     BOOLEAN Directory;
523 } FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;
524
525 typedef struct _FILE_INTERNAL_INFORMATION {
526     LARGE_INTEGER IndexNumber;
527 } FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;
528
529 typedef struct _FILE_EA_INFORMATION {
530     ULONG EaSize;
531 } FILE_EA_INFORMATION, *PFILE_EA_INFORMATION;
532
533 typedef struct _FILE_ACCESS_INFORMATION {
534     ACCESS_MASK AccessFlags;
535 } FILE_ACCESS_INFORMATION, *PFILE_ACCESS_INFORMATION;
536
537 typedef struct _FILE_NAME_INFORMATION {
538     ULONG FileNameLength;
539     WCHAR FileName[1];
540 } FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
541
542 typedef struct _FILE_RENAME_INFORMATION {
543     BOOLEAN Replace;
544     HANDLE RootDir;
545     ULONG FileNameLength;
546     WCHAR FileName[1];
547 } FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;
548
549 typedef struct _FILE_NAMES_INFORMATION {
550     ULONG NextEntryOffset;
551     ULONG FileIndex;
552     ULONG FileNameLength;
553     WCHAR FileName[1];
554 } FILE_NAMES_INFORMATION, *PFILE_NAMES_INFORMATION;
555
556 typedef struct _FILE_DISPOSITION_INFORMATION {
557     BOOLEAN DoDeleteFile;
558 } FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION;
559
560 typedef struct _FILE_POSITION_INFORMATION {
561     LARGE_INTEGER CurrentByteOffset;
562 } FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;
563
564 typedef struct _FILE_ALIGNMENT_INFORMATION {
565     ULONG AlignmentRequirement;
566 } FILE_ALIGNMENT_INFORMATION, *PFILE_ALIGNMENT_INFORMATION;
567
568 typedef struct _FILE_ALLOCATION_INFORMATION {
569     LARGE_INTEGER AllocationSize;
570 } FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION;
571
572 typedef struct _FILE_END_OF_FILE_INFORMATION {
573     LARGE_INTEGER EndOfFile;
574 } FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;
575
576 typedef struct _FILE_NETWORK_OPEN_INFORMATION {
577     LARGE_INTEGER CreationTime;
578     LARGE_INTEGER LastAccessTime;
579     LARGE_INTEGER LastWriteTime;
580     LARGE_INTEGER ChangeTime;
581     LARGE_INTEGER AllocationSize;
582     LARGE_INTEGER EndOfFile;
583     ULONG FileAttributes;
584 } FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;
585
586 typedef struct _FILE_FULL_EA_INFORMATION {
587     ULONG NextEntryOffset;
588     UCHAR Flags;
589     UCHAR EaNameLength;
590     USHORT EaValueLength;
591     CHAR EaName[1];
592 } FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
593
594 typedef struct _FILE_MODE_INFORMATION {
595     ULONG Mode;
596 } FILE_MODE_INFORMATION, *PFILE_MODE_INFORMATION;
597
598 typedef struct _FILE_STREAM_INFORMATION
599 {
600     ULONG NextEntryOffset;
601     ULONG StreamNameLength;
602     LARGE_INTEGER StreamSize;
603     LARGE_INTEGER StreamAllocationSize;
604     WCHAR StreamName[1];
605 } FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
606
607 typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION
608 {
609     ULONG FileAttributes;
610     ULONG ReparseTag;
611 } FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION;
612
613 typedef struct _FILE_MAILSLOT_QUERY_INFORMATION {
614     ULONG MaximumMessageSize;
615     ULONG MailslotQuota;
616     ULONG NextMessageSize;
617     ULONG MessagesAvailable;
618     LARGE_INTEGER ReadTimeout;
619 } FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION;
620
621 typedef struct _FILE_MAILSLOT_SET_INFORMATION {
622     LARGE_INTEGER ReadTimeout;
623 } FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION;
624
625 typedef struct _FILE_PIPE_LOCAL_INFORMATION {
626     ULONG NamedPipeType;
627     ULONG NamedPipeConfiguration;
628     ULONG MaximumInstances;
629     ULONG CurrentInstances;
630     ULONG InboundQuota;
631     ULONG ReadDataAvailable;
632     ULONG OutboundQuota;
633     ULONG WriteQuotaAvailable;
634     ULONG NamedPipeState;
635     ULONG NamedPipeEnd;
636 } FILE_PIPE_LOCAL_INFORMATION, *PFILE_PIPE_LOCAL_INFORMATION;
637
638 typedef struct _FILE_ALL_INFORMATION {
639     FILE_BASIC_INFORMATION     BasicInformation;
640     FILE_STANDARD_INFORMATION  StandardInformation;
641     FILE_INTERNAL_INFORMATION  InternalInformation;
642     FILE_EA_INFORMATION        EaInformation;
643     FILE_ACCESS_INFORMATION    AccessInformation;
644     FILE_POSITION_INFORMATION  PositionInformation;
645     FILE_MODE_INFORMATION      ModeInformation;
646     FILE_ALIGNMENT_INFORMATION AlignmentInformation;
647     FILE_NAME_INFORMATION      NameInformation;
648 } FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION;
649
650 typedef enum _FSINFOCLASS {
651     FileFsVolumeInformation = 1,
652     FileFsLabelInformation,
653     FileFsSizeInformation,
654     FileFsDeviceInformation,
655     FileFsAttributeInformation,
656     FileFsControlInformation,
657     FileFsFullSizeInformation,
658     FileFsObjectIdInformation,
659     FileFsMaximumInformation
660 } FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
661
662 typedef enum _KEY_INFORMATION_CLASS {
663     KeyBasicInformation,
664     KeyNodeInformation,
665     KeyFullInformation,
666     KeyNameInformation
667 } KEY_INFORMATION_CLASS;
668
669 typedef enum _KEY_VALUE_INFORMATION_CLASS {
670     KeyValueBasicInformation,
671     KeyValueFullInformation,
672     KeyValuePartialInformation,
673     KeyValueFullInformationAlign64,
674     KeyValuePartialInformationAlign64
675 } KEY_VALUE_INFORMATION_CLASS;
676
677 typedef enum _OBJECT_INFORMATION_CLASS {
678     ObjectBasicInformation,
679     ObjectNameInformation,
680     ObjectTypeInformation,
681     ObjectAllInformation,
682     ObjectDataInformation
683 } OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS;
684
685 typedef enum _PROCESSINFOCLASS {
686     ProcessBasicInformation = 0,
687     ProcessQuotaLimits = 1,
688     ProcessIoCounters = 2,
689     ProcessVmCounters = 3,
690     ProcessTimes = 4,
691     ProcessBasePriority = 5,
692     ProcessRaisePriority = 6,
693     ProcessDebugPort = 7,
694     ProcessExceptionPort = 8,
695     ProcessAccessToken = 9,
696     ProcessLdtInformation = 10,
697     ProcessLdtSize = 11,
698     ProcessDefaultHardErrorMode = 12,
699     ProcessIoPortHandlers = 13,
700     ProcessPooledUsageAndLimits = 14,
701     ProcessWorkingSetWatch = 15,
702     ProcessUserModeIOPL = 16,
703     ProcessEnableAlignmentFaultFixup = 17,
704     ProcessPriorityClass = 18,
705     ProcessWx86Information = 19,
706     ProcessHandleCount = 20,
707     ProcessAffinityMask = 21,
708     ProcessPriorityBoost = 22,
709     ProcessDeviceMap = 23,
710     ProcessSessionInformation = 24,
711     ProcessForegroundInformation = 25,
712     ProcessWow64Information = 26,
713     ProcessImageFileName = 27,
714     ProcessLUIDDeviceMapsEnabled = 28,
715     ProcessBreakOnTermination = 29,
716     ProcessDebugObjectHandle = 30,
717     ProcessDebugFlags = 31,
718     ProcessHandleTracing = 32,
719     ProcessExecuteFlags = 34,
720     MaxProcessInfoClass
721 } PROCESSINFOCLASS, PROCESS_INFORMATION_CLASS;
722
723 #define MEM_EXECUTE_OPTION_DISABLE   0x01
724 #define MEM_EXECUTE_OPTION_ENABLE    0x02
725 #define MEM_EXECUTE_OPTION_PERMANENT 0x08
726
727 typedef enum _SECTION_INHERIT {
728     ViewShare = 1,
729     ViewUnmap = 2
730 } SECTION_INHERIT;
731
732 typedef enum _SYSTEM_INFORMATION_CLASS {
733     SystemBasicInformation = 0,
734     SystemCpuInformation = 1,
735     SystemPerformanceInformation = 2,
736     SystemTimeOfDayInformation = 3, /* was SystemTimeInformation */
737     Unknown4,
738     SystemProcessInformation = 5,
739     Unknown6,
740     Unknown7,
741     SystemProcessorPerformanceInformation = 8,
742     Unknown9,
743     Unknown10,
744     SystemModuleInformation = 11,
745     Unknown12,
746     Unknown13,
747     Unknown14,
748     Unknown15,
749     SystemHandleInformation = 16,
750     Unknown17,
751     SystemPageFileInformation = 18,
752     Unknown19,
753     Unknown20,
754     SystemCacheInformation = 21,
755     Unknown22,
756     SystemInterruptInformation = 23,
757     SystemDpcBehaviourInformation = 24,
758     SystemFullMemoryInformation = 25,
759     SystemNotImplemented6 = 25,
760     SystemLoadImage = 26,
761     SystemUnloadImage = 27,
762     SystemTimeAdjustmentInformation = 28,
763     SystemTimeAdjustment = 28,
764     SystemSummaryMemoryInformation = 29,
765     SystemNotImplemented7 = 29,
766     SystemNextEventIdInformation = 30,
767     SystemNotImplemented8 = 30,
768     SystemEventIdsInformation = 31,
769     SystemCrashDumpInformation = 32,
770     SystemExceptionInformation = 33,
771     SystemCrashDumpStateInformation = 34,
772     SystemKernelDebuggerInformation = 35,
773     SystemContextSwitchInformation = 36,
774     SystemRegistryQuotaInformation = 37,
775     SystemCurrentTimeZoneInformation = 44,
776     SystemTimeZoneInformation = 44,
777     SystemLookasideInformation = 45,
778     SystemSetTimeSlipEvent = 46,
779     SystemCreateSession = 47,
780     SystemDeleteSession = 48,
781     SystemInvalidInfoClass4 = 49,
782     SystemRangeStartInformation = 50,
783     SystemVerifierInformation = 51,
784     SystemAddVerifier = 52,
785     SystemSessionProcessesInformation   = 53,
786     Unknown54,
787     Unknown55,
788     Unknown56,
789     Unknown57,
790     Unknown58,
791     Unknown59,
792     Unknown60,
793     Unknown61,
794     Unknown62,
795     Unknown63,
796     Unknown64,
797     Unknown65,
798     Unknown66,
799     Unknown67,
800     Unknown68,
801     Unknown69,
802     Unknown70,
803     Unknown71,
804     Unknown72,
805     SystemLogicalProcessorInformation = 73,
806     SystemInformationClassMax
807 } SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS;
808
809 typedef enum _TIMER_TYPE {
810     NotificationTimer,
811     SynchronizationTimer
812 } TIMER_TYPE;
813
814 typedef enum _THREADINFOCLASS {
815     ThreadBasicInformation,
816     ThreadTimes,
817     ThreadPriority,
818     ThreadBasePriority,
819     ThreadAffinityMask,
820     ThreadImpersonationToken,
821     ThreadDescriptorTableEntry,
822     ThreadEnableAlignmentFaultFixup,
823     ThreadEventPair_Reusable,
824     ThreadQuerySetWin32StartAddress,
825     ThreadZeroTlsCell,
826     ThreadPerformanceCount,
827     ThreadAmILastThread,
828     ThreadIdealProcessor,
829     ThreadPriorityBoost,
830     ThreadSetTlsArrayAddress,
831     ThreadIsIoPending,
832     ThreadHideFromDebugger,
833     MaxThreadInfoClass
834 } THREADINFOCLASS;
835
836 typedef struct _THREAD_BASIC_INFORMATION
837 {
838     NTSTATUS  ExitStatus;
839     PVOID     TebBaseAddress;
840     CLIENT_ID ClientId;
841     ULONG_PTR AffinityMask;
842     LONG      Priority;
843     LONG      BasePriority;
844 } THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION;
845
846 typedef struct _THREAD_DESCRIPTOR_INFORMATION
847 {
848     DWORD       Selector;
849     LDT_ENTRY   Entry;
850 } THREAD_DESCRIPTOR_INFORMATION, *PTHREAD_DESCRIPTOR_INFORMATION;
851
852 typedef struct _KERNEL_USER_TIMES {
853     LARGE_INTEGER  CreateTime;
854     LARGE_INTEGER  ExitTime;
855     LARGE_INTEGER  KernelTime;
856     LARGE_INTEGER  UserTime;
857 } KERNEL_USER_TIMES, *PKERNEL_USER_TIMES;
858
859 typedef enum _WINSTATIONINFOCLASS {
860     WinStationInformation = 8
861 } WINSTATIONINFOCLASS;
862
863 typedef enum _MEMORY_INFORMATION_CLASS {
864     MemoryBasicInformation,
865     MemoryWorkingSetList,
866     MemorySectionName,
867     MemoryBasicVlmInformation
868 } MEMORY_INFORMATION_CLASS;
869
870 typedef enum _MUTANT_INFORMATION_CLASS
871 {
872     MutantBasicInformation
873 } MUTANT_INFORMATION_CLASS, *PMUTANT_INFORMATION_CLASS;
874
875 typedef struct _MUTANT_BASIC_INFORMATION {
876     LONG        CurrentCount;
877     BOOLEAN     OwnedByCaller;
878     BOOLEAN     AbandonedState;
879 } MUTANT_BASIC_INFORMATION, *PMUTANT_BASIC_INFORMATION;
880
881 typedef enum _TIMER_INFORMATION_CLASS
882 {
883     TimerBasicInformation = 0
884 } TIMER_INFORMATION_CLASS;
885
886 typedef struct _TIMER_BASIC_INFORMATION
887 {
888     LARGE_INTEGER RemainingTime;
889     BOOLEAN       TimerState;
890 } TIMER_BASIC_INFORMATION, *PTIMER_BASIC_INFORMATION;
891
892
893 /* return type of RtlDetermineDosPathNameType_U (FIXME: not the correct names) */
894 typedef enum
895 {
896     INVALID_PATH = 0,
897     UNC_PATH,              /* "//foo" */
898     ABSOLUTE_DRIVE_PATH,   /* "c:/foo" */
899     RELATIVE_DRIVE_PATH,   /* "c:foo" */
900     ABSOLUTE_PATH,         /* "/foo" */
901     RELATIVE_PATH,         /* "foo" */
902     DEVICE_PATH,           /* "//./foo" */
903     UNC_DOT_PATH           /* "//." */
904 } DOS_PATHNAME_TYPE;
905
906
907 /***********************************************************************
908  * Types and data structures
909  */
910
911 /* This is used by NtQuerySystemInformation */
912 typedef struct _SYSTEM_THREAD_INFORMATION
913 {                                    /* win32/win64 */
914     LARGE_INTEGER KernelTime;          /* 00/00 */
915     LARGE_INTEGER UserTime;            /* 08/08 */
916     LARGE_INTEGER CreateTime;          /* 10/10 */
917     DWORD         dwTickCount;         /* 18/18 */
918     LPVOID        StartAddress;        /* 1c/20 */
919     CLIENT_ID     ClientId;            /* 20/28 */
920     DWORD         dwCurrentPriority;   /* 28/38 */
921     DWORD         dwBasePriority;      /* 2c/3c */
922     DWORD         dwContextSwitches;   /* 30/40 */
923     DWORD         dwThreadState;       /* 34/44 */
924     DWORD         dwWaitReason;        /* 38/48 */
925     DWORD         dwUnknown;           /* 3c/4c */
926 } SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION;
927
928 typedef struct _IO_STATUS_BLOCK {
929   union {
930     NTSTATUS Status;
931     PVOID Pointer;
932   } DUMMYUNIONNAME;
933
934   ULONG_PTR Information;
935 } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
936
937 typedef void (WINAPI * PIO_APC_ROUTINE)(PVOID,PIO_STATUS_BLOCK,ULONG);
938
939 typedef struct _KEY_BASIC_INFORMATION {
940     LARGE_INTEGER LastWriteTime;
941     ULONG         TitleIndex;
942     ULONG         NameLength;
943     WCHAR         Name[1];
944 } KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
945
946 typedef struct _KEY_NODE_INFORMATION
947 {
948     LARGE_INTEGER LastWriteTime;
949     ULONG         TitleIndex;
950     ULONG         ClassOffset;
951     ULONG         ClassLength;
952     ULONG         NameLength;
953     WCHAR         Name[1];
954    /* Class[1]; */
955 } KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
956
957 typedef struct _KEY_FULL_INFORMATION
958 {
959     LARGE_INTEGER LastWriteTime;
960     ULONG         TitleIndex;
961     ULONG         ClassOffset;
962     ULONG         ClassLength;
963     ULONG         SubKeys;
964     ULONG         MaxNameLen;
965     ULONG         MaxClassLen;
966     ULONG         Values;
967     ULONG         MaxValueNameLen;
968     ULONG         MaxValueDataLen;
969     WCHAR         Class[1];
970 } KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
971
972 typedef struct _KEY_NAME_INFORMATION {
973     ULONG         NameLength;
974     WCHAR         Name[1];
975 } KEY_NAME_INFORMATION, *PKEY_NAME_INFORMATION;
976
977 typedef struct _KEY_VALUE_ENTRY
978 {
979     PUNICODE_STRING ValueName;
980     ULONG           DataLength;
981     ULONG           DataOffset;
982     ULONG           Type;
983 } KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
984
985 typedef struct _KEY_VALUE_BASIC_INFORMATION {
986     ULONG TitleIndex;
987     ULONG Type;
988     ULONG NameLength;
989     WCHAR Name[1];
990 } KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
991
992 typedef struct _KEY_VALUE_FULL_INFORMATION {
993     ULONG TitleIndex;
994     ULONG Type;
995     ULONG DataOffset;
996     ULONG DataLength;
997     ULONG NameLength;
998     WCHAR Name[1];
999 } KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
1000
1001 typedef struct _KEY_VALUE_PARTIAL_INFORMATION {
1002     ULONG TitleIndex;
1003     ULONG Type;
1004     ULONG DataLength;
1005     UCHAR Data[1];
1006 } KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
1007
1008 #ifndef __OBJECT_ATTRIBUTES_DEFINED__
1009 #define __OBJECT_ATTRIBUTES_DEFINED__
1010 typedef struct _OBJECT_ATTRIBUTES {
1011   ULONG Length;
1012   HANDLE RootDirectory;
1013   PUNICODE_STRING ObjectName;
1014   ULONG Attributes;
1015   PVOID SecurityDescriptor;       /* type SECURITY_DESCRIPTOR */
1016   PVOID SecurityQualityOfService; /* type SECURITY_QUALITY_OF_SERVICE */
1017 } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
1018 #endif
1019
1020 typedef struct _OBJECT_DATA_INFORMATION {
1021     BOOLEAN InheritHandle;
1022     BOOLEAN ProtectFromClose;
1023 } OBJECT_DATA_INFORMATION, *POBJECT_DATA_INFORMATION;
1024
1025 typedef struct _OBJECT_BASIC_INFORMATION {
1026     ULONG  Attributes;
1027     ACCESS_MASK  GrantedAccess;
1028     ULONG  HandleCount;
1029     ULONG  PointerCount;
1030     ULONG  PagedPoolUsage;
1031     ULONG  NonPagedPoolUsage;
1032     ULONG  Reserved[3];
1033     ULONG  NameInformationLength;
1034     ULONG  TypeInformationLength;
1035     ULONG  SecurityDescriptorLength;
1036     LARGE_INTEGER  CreateTime;
1037 } OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION;
1038
1039 typedef struct _OBJECT_NAME_INFORMATION {
1040     UNICODE_STRING Name;
1041 } OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
1042
1043 typedef struct __OBJECT_TYPE_INFORMATION {
1044     UNICODE_STRING TypeName;
1045     ULONG Reserved [22];
1046 } OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION;
1047
1048 typedef struct _PROCESS_BASIC_INFORMATION {
1049 #ifdef __WINESRC__
1050     DWORD_PTR ExitStatus;
1051     PPEB PebBaseAddress;
1052     DWORD_PTR AffinityMask;
1053     DWORD_PTR BasePriority;
1054     ULONG_PTR UniqueProcessId;
1055     ULONG_PTR InheritedFromUniqueProcessId;
1056 #else
1057     PVOID Reserved1;
1058     PPEB PebBaseAddress;
1059     PVOID Reserved2[2];
1060     ULONG_PTR UniqueProcessId;
1061     PVOID Reserved3;
1062 #endif
1063 } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
1064
1065 #define PROCESS_PRIOCLASS_IDLE          1
1066 #define PROCESS_PRIOCLASS_NORMAL        2
1067 #define PROCESS_PRIOCLASS_HIGH          3
1068 #define PROCESS_PRIOCLASS_REALTIME      4
1069 #define PROCESS_PRIOCLASS_BELOW_NORMAL  5
1070 #define PROCESS_PRIOCLASS_ABOVE_NORMAL  6
1071
1072 typedef struct _PROCESS_PRIORITY_CLASS {
1073     BOOLEAN     Foreground;
1074     UCHAR       PriorityClass;
1075 } PROCESS_PRIORITY_CLASS, *PPROCESS_PRIORITY_CLASS;
1076
1077 typedef struct _RTL_HEAP_DEFINITION {
1078     ULONG Length; /* = sizeof(RTL_HEAP_DEFINITION) */
1079
1080     ULONG Unknown[11];
1081 } RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION;
1082
1083 typedef struct _RTL_RWLOCK {
1084     RTL_CRITICAL_SECTION rtlCS;
1085
1086     HANDLE hSharedReleaseSemaphore;
1087     UINT   uSharedWaiters;
1088
1089     HANDLE hExclusiveReleaseSemaphore;
1090     UINT   uExclusiveWaiters;
1091
1092     INT    iNumberActive;
1093     HANDLE hOwningThreadId;
1094     DWORD  dwTimeoutBoost;
1095     PVOID  pDebugInfo;
1096 } RTL_RWLOCK, *LPRTL_RWLOCK;
1097
1098 /* System Information Class 0x00 */
1099
1100 typedef struct _SYSTEM_BASIC_INFORMATION {
1101 #ifdef __WINESRC__
1102     DWORD     unknown;
1103     ULONG     KeMaximumIncrement;
1104     ULONG     PageSize;
1105     ULONG     MmNumberOfPhysicalPages;
1106     ULONG     MmLowestPhysicalPage;
1107     ULONG     MmHighestPhysicalPage;
1108     ULONG_PTR AllocationGranularity;
1109     PVOID     LowestUserAddress;
1110     PVOID     HighestUserAddress;
1111     ULONG_PTR ActiveProcessorsAffinityMask;
1112     BYTE      NumberOfProcessors;
1113 #else
1114     BYTE Reserved1[24];
1115     PVOID Reserved2[4];
1116     CCHAR NumberOfProcessors;
1117 #endif
1118 } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
1119
1120 /* System Information Class 0x01 */
1121
1122 typedef struct _SYSTEM_CPU_INFORMATION {
1123     WORD Architecture;
1124     WORD Level;
1125     WORD Revision;       /* combination of CPU model and stepping */
1126     WORD Reserved;       /* always zero */
1127     DWORD FeatureSet;    /* see bit flags below */
1128 } SYSTEM_CPU_INFORMATION, *PSYSTEM_CPU_INFORMATION;
1129
1130 /* definitions of bits in the Feature set for the x86 processors */
1131 #define CPU_FEATURE_VME    0x00000005   /* Virtual 86 Mode Extensions */
1132 #define CPU_FEATURE_TSC    0x00000002   /* Time Stamp Counter available */
1133 #define CPU_FEATURE_CMOV   0x00000008   /* Conditional Move instruction*/
1134 #define CPU_FEATURE_PGE    0x00000014   /* Page table Entry Global bit */ 
1135 #define CPU_FEATURE_PSE    0x00000024   /* Page Size Extension */
1136 #define CPU_FEATURE_MTRR   0x00000040   /* Memory Type Range Registers */
1137 #define CPU_FEATURE_CX8    0x00000080   /* Compare and eXchange 8 byte instr. */
1138 #define CPU_FEATURE_MMX    0x00000100   /* Multi Media eXtensions */
1139 #define CPU_FEATURE_X86    0x00000200   /* seems to be always ON, on the '86 */
1140 #define CPU_FEATURE_PAT    0x00000400   /* Page Attribute Table */
1141 #define CPU_FEATURE_FXSR   0x00000800   /* FXSAVE and FXSTORE instructions */
1142 #define CPU_FEATURE_SEP    0x00001000   /* SYSENTER and SYSEXIT instructions */
1143 #define CPU_FEATURE_SSE    0x00002000   /* SSE extensions (ext. MMX) */
1144 #define CPU_FEATURE_3DNOW  0x00008000   /* 3DNOW instructions available 
1145                                            (FIXME: needs to be confirmed) */
1146 #define CPU_FEATURE_SSE2   0x00010000   /* SSE2 extensions (XMMI64) */
1147 #define CPU_FEATURE_DS     0x00020000   /* Debug Store */
1148 #define CPU_FEATURE_HTT    0x00040000   /* Hyper Threading Technology */
1149
1150 /* System Information Class 0x02 */
1151
1152 /* Documented in "Windows NT/2000 Native API Reference" by Gary Nebbett. */
1153 typedef struct _SYSTEM_PERFORMANCE_INFORMATION {
1154     LARGE_INTEGER IdleTime;
1155     LARGE_INTEGER ReadTransferCount;
1156     LARGE_INTEGER WriteTransferCount;
1157     LARGE_INTEGER OtherTransferCount;
1158     ULONG ReadOperationCount;
1159     ULONG WriteOperationCount;
1160     ULONG OtherOperationCount;
1161     ULONG AvailablePages;
1162     ULONG TotalCommittedPages;
1163     ULONG TotalCommitLimit;
1164     ULONG PeakCommitment;
1165     ULONG PageFaults;
1166     ULONG WriteCopyFaults;
1167     ULONG TransitionFaults;
1168     ULONG Reserved1;
1169     ULONG DemandZeroFaults;
1170     ULONG PagesRead;
1171     ULONG PageReadIos;
1172     ULONG Reserved2[2];
1173     ULONG PagefilePagesWritten;
1174     ULONG PagefilePageWriteIos;
1175     ULONG MappedFilePagesWritten;
1176     ULONG MappedFilePageWriteIos;
1177     ULONG PagedPoolUsage;
1178     ULONG NonPagedPoolUsage;
1179     ULONG PagedPoolAllocs;
1180     ULONG PagedPoolFrees;
1181     ULONG NonPagedPoolAllocs;
1182     ULONG NonPagedPoolFrees;
1183     ULONG TotalFreeSystemPtes;
1184     ULONG SystemCodePage;
1185     ULONG TotalSystemDriverPages;
1186     ULONG TotalSystemCodePages;
1187     ULONG SmallNonPagedLookasideListAllocateHits;
1188     ULONG SmallPagedLookasideListAllocateHits;
1189     ULONG Reserved3;
1190     ULONG MmSystemCachePage;
1191     ULONG PagedPoolPage;
1192     ULONG SystemDriverPage;
1193     ULONG FastReadNoWait;
1194     ULONG FastReadWait;
1195     ULONG FastReadResourceMiss;
1196     ULONG FastReadNotPossible;
1197     ULONG FastMdlReadNoWait;
1198     ULONG FastMdlReadWait;
1199     ULONG FastMdlReadResourceMiss;
1200     ULONG FastMdlReadNotPossible;
1201     ULONG MapDataNoWait;
1202     ULONG MapDataWait;
1203     ULONG MapDataNoWaitMiss;
1204     ULONG MapDataWaitMiss;
1205     ULONG PinMappedDataCount;
1206     ULONG PinReadNoWait;
1207     ULONG PinReadWait;
1208     ULONG PinReadNoWaitMiss;
1209     ULONG PinReadWaitMiss;
1210     ULONG CopyReadNoWait;
1211     ULONG CopyReadWait;
1212     ULONG CopyReadNoWaitMiss;
1213     ULONG CopyReadWaitMiss;
1214     ULONG MdlReadNoWait;
1215     ULONG MdlReadWait;
1216     ULONG MdlReadNoWaitMiss;
1217     ULONG MdlReadWaitMiss;
1218     ULONG ReadAheadIos;
1219     ULONG LazyWriteIos;
1220     ULONG LazyWritePages;
1221     ULONG DataFlushes;
1222     ULONG DataPages;
1223     ULONG ContextSwitches;
1224     ULONG FirstLevelTbFills;
1225     ULONG SecondLevelTbFills;
1226     ULONG SystemCalls;
1227 } SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
1228
1229 /* System Information Class 0x03 */
1230
1231 typedef struct _SYSTEM_TIMEOFDAY_INFORMATION {
1232 #ifdef __WINESRC__
1233     LARGE_INTEGER liKeBootTime;
1234     LARGE_INTEGER liKeSystemTime;
1235     LARGE_INTEGER liExpTimeZoneBias;
1236     ULONG uCurrentTimeZoneId;
1237     DWORD dwUnknown1[5];
1238 #else
1239     BYTE Reserved1[48];
1240 #endif
1241 } SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION; /* was SYSTEM_TIME_INFORMATION */
1242
1243 /* System Information Class 0x08 */
1244
1245 typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION {
1246     LARGE_INTEGER IdleTime;
1247     LARGE_INTEGER KernelTime;
1248     LARGE_INTEGER UserTime;
1249     LARGE_INTEGER Reserved1[2];
1250     ULONG Reserved2;
1251 } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
1252
1253 /* System Information Class 0x0b */
1254
1255 typedef struct _SYSTEM_DRIVER_INFORMATION {
1256     PVOID pvAddress;
1257     DWORD dwUnknown1;
1258     DWORD dwUnknown2;
1259     DWORD dwEntryIndex;
1260     DWORD dwUnknown3;
1261     char szName[MAX_PATH + 1];
1262 } SYSTEM_DRIVER_INFORMATION, *PSYSTEM_DRIVER_INFORMATION;
1263
1264 /* System Information Class 0x10 */
1265
1266 typedef struct _SYSTEM_HANDLE_ENTRY {
1267     ULONG  OwnerPid;
1268     BYTE   ObjectType;
1269     BYTE   HandleFlags;
1270     USHORT HandleValue;
1271     PVOID  ObjectPointer;
1272     ULONG  AccessMask;
1273 } SYSTEM_HANDLE_ENTRY, *PSYSTEM_HANDLE_ENTRY;
1274
1275 typedef struct _SYSTEM_HANDLE_INFORMATION {
1276     ULONG               Count;
1277     SYSTEM_HANDLE_ENTRY Handle[1];
1278 } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
1279
1280 /* System Information Class 0x15 */
1281
1282 typedef struct _SYSTEM_CACHE_INFORMATION {
1283     ULONG CurrentSize;
1284     ULONG PeakSize;
1285     ULONG PageFaultCount;
1286 #ifndef _WIN64
1287     ULONG MinimumWorkingSet;
1288     ULONG MaximumWorkingSet;
1289     ULONG unused[4];
1290 #endif
1291 } SYSTEM_CACHE_INFORMATION, *PSYSTEM_CACHE_INFORMATION;
1292
1293 /* System Information Class 0x17 */
1294
1295 typedef struct _SYSTEM_INTERRUPT_INFORMATION {
1296     BYTE Reserved1[24];
1297 } SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION;
1298
1299 typedef struct _SYSTEM_CONFIGURATION_INFO {
1300     union {
1301         ULONG   OemId;
1302         struct {
1303             WORD ProcessorArchitecture;
1304             WORD Reserved;
1305         } tag1;
1306     } tag2;
1307     ULONG PageSize;
1308     PVOID MinimumApplicationAddress;
1309     PVOID MaximumApplicationAddress;
1310     ULONG ActiveProcessorMask;
1311     ULONG NumberOfProcessors;
1312     ULONG ProcessorType;
1313     ULONG AllocationGranularity;
1314     WORD  ProcessorLevel;
1315     WORD  ProcessorRevision;
1316 } SYSTEM_CONFIGURATION_INFO, *PSYSTEM_CONFIGURATION_INFO;
1317
1318 typedef struct _SYSTEM_EXCEPTION_INFORMATION {
1319     BYTE Reserved1[16];
1320 } SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION;
1321
1322 typedef struct _SYSTEM_LOOKASIDE_INFORMATION {
1323     BYTE Reserved1[32];
1324 } SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION;
1325
1326 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION {
1327         BOOLEAN  DebuggerEnabled;
1328         BOOLEAN  DebuggerNotPresent;
1329 } SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION;
1330
1331 /* System Information Class 0x05 */
1332
1333 typedef struct _VM_COUNTERS_ {
1334     SIZE_T PeakVirtualSize;
1335     SIZE_T VirtualSize;
1336     ULONG  PageFaultCount;
1337     SIZE_T PeakWorkingSetSize;
1338     SIZE_T WorkingSetSize;
1339     SIZE_T QuotaPeakPagedPoolUsage;
1340     SIZE_T QuotaPagedPoolUsage;
1341     SIZE_T QuotaPeakNonPagedPoolUsage;
1342     SIZE_T QuotaNonPagedPoolUsage;
1343     SIZE_T PagefileUsage;
1344     SIZE_T PeakPagefileUsage;
1345     SIZE_T PrivatePageCount;
1346 } VM_COUNTERS, *PVM_COUNTERS;
1347
1348 typedef struct _SYSTEM_PROCESS_INFORMATION {
1349 #ifdef __WINESRC__                  /* win32/win64 */
1350     ULONG NextEntryOffset;             /* 00/00 */
1351     DWORD dwThreadCount;               /* 04/04 */
1352     DWORD dwUnknown1[6];               /* 08/08 */
1353     LARGE_INTEGER CreationTime;        /* 20/20 */
1354     LARGE_INTEGER UserTime;            /* 28/28 */
1355     LARGE_INTEGER KernelTime;          /* 30/30 */
1356     UNICODE_STRING ProcessName;        /* 38/38 */
1357     DWORD dwBasePriority;              /* 40/48 */
1358     HANDLE UniqueProcessId;            /* 44/50 */
1359     HANDLE ParentProcessId;            /* 48/58 */
1360     ULONG HandleCount;                 /* 4c/60 */
1361     DWORD dwUnknown3;                  /* 50/64 */
1362     DWORD dwUnknown4;                  /* 54/68 */
1363     VM_COUNTERS vmCounters;            /* 58/70 */
1364     IO_COUNTERS ioCounters;            /* 88/d0 */
1365     SYSTEM_THREAD_INFORMATION ti[1];   /* b8/100 */
1366 #else
1367     ULONG NextEntryOffset;             /* 00/00 */
1368     BYTE Reserved1[52];                /* 04/04 */
1369     PVOID Reserved2[3];                /* 38/38 */
1370     HANDLE UniqueProcessId;            /* 44/50 */
1371     PVOID Reserved3;                   /* 48/58 */
1372     ULONG HandleCount;                 /* 4c/60 */
1373     BYTE Reserved4[4];                 /* 50/64 */
1374     PVOID Reserved5[11];               /* 54/68 */
1375     SIZE_T PeakPagefileUsage;          /* 80/c0 */
1376     SIZE_T PrivatePageCount;           /* 84/c8 */
1377     LARGE_INTEGER Reserved6[6];        /* 88/d0 */
1378 #endif
1379 } SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
1380
1381 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION {
1382     ULONG RegistryQuotaAllowed;
1383     ULONG RegistryQuotaUsed;
1384     PVOID Reserved1;
1385 } SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION;
1386
1387 typedef struct _SYSTEM_TIME_ADJUSTMENT {
1388     ULONG   TimeAdjustment;
1389     BOOLEAN TimeAdjustmentDisabled;
1390 } SYSTEM_TIME_ADJUSTMENT, *PSYSTEM_TIME_ADJUSTMENT;
1391
1392 typedef struct _TIME_FIELDS
1393 {   CSHORT Year;
1394     CSHORT Month;
1395     CSHORT Day;
1396     CSHORT Hour;
1397     CSHORT Minute;
1398     CSHORT Second;
1399     CSHORT Milliseconds;
1400     CSHORT Weekday;
1401 } TIME_FIELDS, *PTIME_FIELDS;
1402
1403 typedef struct _WINSTATIONINFORMATIONW {
1404   BYTE Reserved2[70];
1405   ULONG LogonId;
1406   BYTE Reserved3[1140];
1407 } WINSTATIONINFORMATIONW, *PWINSTATIONINFORMATIONW;
1408
1409 typedef BOOLEAN (WINAPI * PWINSTATIONQUERYINFORMATIONW)(HANDLE,ULONG,WINSTATIONINFOCLASS,PVOID,ULONG,PULONG);
1410
1411 typedef struct _LDR_RESOURCE_INFO
1412 {
1413     ULONG_PTR Type;
1414     ULONG_PTR Name;
1415     ULONG Language;
1416 } LDR_RESOURCE_INFO, *PLDR_RESOURCE_INFO;
1417
1418
1419 /* debug buffer definitions */
1420
1421 typedef struct _DEBUG_BUFFER {
1422   HANDLE SectionHandle;
1423   PVOID  SectionBase;
1424   PVOID  RemoteSectionBase;
1425   ULONG  SectionBaseDelta;
1426   HANDLE EventPairHandle;
1427   ULONG  Unknown[2];
1428   HANDLE RemoteThreadHandle;
1429   ULONG  InfoClassMask;
1430   ULONG  SizeOfInfo;
1431   ULONG  AllocatedSize;
1432   ULONG  SectionSize;
1433   PVOID  ModuleInformation;
1434   PVOID  BackTraceInformation;
1435   PVOID  HeapInformation;
1436   PVOID  LockInformation;
1437   PVOID  Reserved[8];
1438 } DEBUG_BUFFER, *PDEBUG_BUFFER;
1439
1440 #define PDI_MODULES                       0x01
1441 #define PDI_BACKTRACE                     0x02
1442 #define PDI_HEAPS                         0x04
1443 #define PDI_HEAP_TAGS                     0x08
1444 #define PDI_HEAP_BLOCKS                   0x10
1445 #define PDI_LOCKS                         0x20
1446
1447 typedef struct _DEBUG_MODULE_INFORMATION {
1448   ULONG  Reserved[2];
1449   ULONG  Base;
1450   ULONG  Size;
1451   ULONG  Flags;
1452   USHORT Index;
1453   USHORT Unknown;
1454   USHORT LoadCount;
1455   USHORT ModuleNameOffset;
1456   CHAR   ImageName[256];
1457 } DEBUG_MODULE_INFORMATION, *PDEBUG_MODULE_INFORMATION;
1458
1459 typedef struct _DEBUG_HEAP_INFORMATION {
1460   ULONG  Base;
1461   ULONG  Flags;
1462   USHORT Granularity;
1463   USHORT Unknown;
1464   ULONG  Allocated;
1465   ULONG  Committed;
1466   ULONG  TagCount;
1467   ULONG  BlockCount;
1468   ULONG  Reserved[7];
1469   PVOID  Tags;
1470   PVOID  Blocks;
1471 } DEBUG_HEAP_INFORMATION, *PDEBUG_HEAP_INFORMATION;
1472
1473 typedef struct _DEBUG_LOCK_INFORMATION {
1474   PVOID  Address;
1475   USHORT Type;
1476   USHORT CreatorBackTraceIndex;
1477   ULONG  OwnerThreadId;
1478   ULONG  ActiveCount;
1479   ULONG  ContentionCount;
1480   ULONG  EntryCount;
1481   ULONG  RecursionCount;
1482   ULONG  NumberOfSharedWaiters;
1483   ULONG  NumberOfExclusiveWaiters;
1484 } DEBUG_LOCK_INFORMATION, *PDEBUG_LOCK_INFORMATION;
1485
1486 typedef struct _PORT_MESSAGE_HEADER {
1487   USHORT DataSize;
1488   USHORT MessageSize;
1489   USHORT MessageType;
1490   USHORT VirtualRangesOffset;
1491   CLIENT_ID ClientId;
1492   ULONG MessageId;
1493   ULONG SectionSize;
1494 } PORT_MESSAGE_HEADER, *PPORT_MESSAGE_HEADER, PORT_MESSAGE, *PPORT_MESSAGE;
1495
1496 typedef unsigned short RTL_ATOM, *PRTL_ATOM;
1497
1498 /* Wine doesn't implement atom table as NT does:
1499  * - in NT, atom tables are user space tables, which ntdll directly accesses
1500  * - on Wine, (even local) atom tables are wineserver objects, hence a HANDLE
1501  */
1502 typedef struct atom_table *RTL_ATOM_TABLE, **PRTL_ATOM_TABLE;
1503
1504 typedef enum _ATOM_INFORMATION_CLASS {
1505    AtomBasicInformation         = 0,
1506    AtomTableInformation         = 1,
1507 } ATOM_INFORMATION_CLASS;
1508
1509 typedef struct _ATOM_BASIC_INFORMATION {
1510    USHORT       ReferenceCount;
1511    USHORT       Pinned;
1512    USHORT       NameLength;
1513    WCHAR        Name[1];
1514 } ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION;
1515
1516 /* FIXME: names probably not correct */
1517 typedef struct _RTL_HANDLE
1518 {
1519     struct _RTL_HANDLE * Next;
1520 } RTL_HANDLE;
1521
1522 /* FIXME: names probably not correct */
1523 typedef struct _RTL_HANDLE_TABLE
1524 {
1525     ULONG MaxHandleCount;  /* 0x00 */
1526     ULONG HandleSize;      /* 0x04 */
1527     ULONG Unused[2];       /* 0x08-0x0c */
1528     PVOID NextFree;        /* 0x10 */
1529     PVOID FirstHandle;     /* 0x14 */
1530     PVOID ReservedMemory;  /* 0x18 */
1531     PVOID MaxHandle;       /* 0x1c */
1532 } RTL_HANDLE_TABLE;
1533
1534 /***********************************************************************
1535  * Defines
1536  */
1537
1538 /* flags for NtCreateFile and NtOpenFile */
1539 #define FILE_DIRECTORY_FILE             0x00000001
1540 #define FILE_WRITE_THROUGH              0x00000002
1541 #define FILE_SEQUENTIAL_ONLY            0x00000004
1542 #define FILE_NO_INTERMEDIATE_BUFFERING  0x00000008
1543 #define FILE_SYNCHRONOUS_IO_ALERT       0x00000010
1544 #define FILE_SYNCHRONOUS_IO_NONALERT    0x00000020
1545 #define FILE_NON_DIRECTORY_FILE         0x00000040
1546 #define FILE_CREATE_TREE_CONNECTION     0x00000080
1547 #define FILE_COMPLETE_IF_OPLOCKED       0x00000100
1548 #define FILE_NO_EA_KNOWLEDGE            0x00000200
1549 #define FILE_OPEN_FOR_RECOVERY          0x00000400
1550 #define FILE_RANDOM_ACCESS              0x00000800
1551 #define FILE_DELETE_ON_CLOSE            0x00001000
1552 #define FILE_OPEN_BY_FILE_ID            0x00002000
1553 #define FILE_OPEN_FOR_BACKUP_INTENT     0x00004000
1554 #define FILE_NO_COMPRESSION             0x00008000
1555 #define FILE_RESERVE_OPFILTER           0x00100000
1556 #define FILE_TRANSACTED_MODE            0x00200000
1557 #define FILE_OPEN_OFFLINE_FILE          0x00400000
1558 #define FILE_OPEN_FOR_FREE_SPACE_QUERY  0x00800000
1559
1560 #define FILE_ATTRIBUTE_VALID_FLAGS      0x00007fb7
1561 #define FILE_ATTRIBUTE_VALID_SET_FLAGS  0x000031a7
1562
1563 /* status for NtCreateFile or NtOpenFile */
1564 #define FILE_SUPERSEDED                 0
1565 #define FILE_OPENED                     1
1566 #define FILE_CREATED                    2
1567 #define FILE_OVERWRITTEN                3
1568 #define FILE_EXISTS                     4
1569 #define FILE_DOES_NOT_EXIST             5
1570
1571 /* disposition for NtCreateFile */
1572 #define FILE_SUPERSEDE                  0
1573 #define FILE_OPEN                       1
1574 #define FILE_CREATE                     2
1575 #define FILE_OPEN_IF                    3
1576 #define FILE_OVERWRITE                  4
1577 #define FILE_OVERWRITE_IF               5
1578 #define FILE_MAXIMUM_DISPOSITION        5
1579
1580 /* Characteristics of a File System */
1581 #define FILE_REMOVABLE_MEDIA            0x00000001
1582 #define FILE_READ_ONLY_DEVICE           0x00000002
1583 #define FILE_FLOPPY_DISKETTE            0x00000004
1584 #define FILE_WRITE_ONE_MEDIA            0x00000008
1585 #define FILE_REMOTE_DEVICE              0x00000010
1586 #define FILE_DEVICE_IS_MOUNTED          0x00000020
1587 #define FILE_VIRTUAL_VOLUME             0x00000040
1588 #define FILE_AUTOGENERATED_DEVICE_NAME  0x00000080
1589 #define FILE_DEVICE_SECURE_OPEN         0x00000100
1590
1591 /* options for NtCreateNamedPipeFile */
1592 #define FILE_PIPE_INBOUND               0x00000000
1593 #define FILE_PIPE_OUTBOUND              0x00000001
1594 #define FILE_PIPE_FULL_DUPLEX           0x00000002
1595
1596 /* options for pipe's type */
1597 #define FILE_PIPE_TYPE_MESSAGE          0x00000001
1598 #define FILE_PIPE_TYPE_BYTE             0x00000000
1599 /* and client / server end */
1600 #define FILE_PIPE_SERVER_END            0x00000001
1601 #define FILE_PIPE_CLIENT_END            0x00000000
1602
1603 #define INTERNAL_TS_ACTIVE_CONSOLE_ID ( *((volatile ULONG*)(0x7ffe02d8)) )
1604
1605 #define LOGONID_CURRENT    ((ULONG)-1)
1606
1607 #define OBJ_INHERIT          0x00000002
1608 #define OBJ_PERMANENT        0x00000010
1609 #define OBJ_EXCLUSIVE        0x00000020
1610 #define OBJ_CASE_INSENSITIVE 0x00000040
1611 #define OBJ_OPENIF           0x00000080
1612 #define OBJ_OPENLINK         0x00000100
1613 #define OBJ_KERNEL_HANDLE    0x00000200
1614 #define OBJ_VALID_ATTRIBUTES 0x000003F2
1615
1616 #define SERVERNAME_CURRENT ((HANDLE)NULL)
1617
1618 typedef void (CALLBACK *PNTAPCFUNC)(ULONG_PTR,ULONG_PTR,ULONG_PTR); /* FIXME: not the right name */
1619 typedef void (CALLBACK *PRTL_THREAD_START_ROUTINE)(LPVOID); /* FIXME: not the right name */
1620 typedef DWORD (CALLBACK *PRTL_WORK_ITEM_ROUTINE)(LPVOID); /* FIXME: not the right name */
1621 typedef void (NTAPI *RTL_WAITORTIMERCALLBACKFUNC)(PVOID,BOOLEAN); /* FIXME: not the right name */
1622
1623
1624 /* DbgPrintEx default levels */
1625 #define DPFLTR_ERROR_LEVEL     0
1626 #define DPFLTR_WARNING_LEVEL   1
1627 #define DPFLTR_TRACE_LEVEL     2
1628 #define DPFLTR_INFO_LEVEL      3
1629 #define DPFLTR_MASK    0x8000000
1630
1631 /* Well-known LUID values */
1632 #define SE_MIN_WELL_KNOWN_PRIVILEGE       2
1633 #define SE_CREATE_TOKEN_PRIVILEGE         2
1634 #define SE_ASSIGNPRIMARYTOKEN_PRIVILEGE   3
1635 #define SE_LOCK_MEMORY_PRIVILEGE          4
1636 #define SE_INCREASE_QUOTA_PRIVILEGE       5
1637 #define SE_UNSOLICITED_INPUT_PRIVILEGE    6 /* obsolete */
1638 #define SE_MACHINE_ACCOUNT_PRIVILEGE      6
1639 #define SE_TCB_PRIVILEGE                  7
1640 #define SE_SECURITY_PRIVILEGE             8
1641 #define SE_TAKE_OWNERSHIP_PRIVILEGE       9
1642 #define SE_LOAD_DRIVER_PRIVILEGE         10
1643 #define SE_SYSTEM_PROFILE_PRIVILEGE      11
1644 #define SE_SYSTEMTIME_PRIVILEGE          12
1645 #define SE_PROF_SINGLE_PROCESS_PRIVILEGE 13
1646 #define SE_INC_BASE_PRIORITY_PRIVILEGE   14
1647 #define SE_CREATE_PAGEFILE_PRIVILEGE     15
1648 #define SE_CREATE_PERMANENT_PRIVILEGE    16
1649 #define SE_BACKUP_PRIVILEGE              17
1650 #define SE_RESTORE_PRIVILEGE             18
1651 #define SE_SHUTDOWN_PRIVILEGE            19
1652 #define SE_DEBUG_PRIVILEGE               20
1653 #define SE_AUDIT_PRIVILEGE               21
1654 #define SE_SYSTEM_ENVIRONMENT_PRIVILEGE  22
1655 #define SE_CHANGE_NOTIFY_PRIVILEGE       23
1656 #define SE_REMOTE_SHUTDOWN_PRIVILEGE     24
1657 #define SE_UNDOCK_PRIVILEGE              25
1658 #define SE_SYNC_AGENT_PRIVILEGE          26
1659 #define SE_ENABLE_DELEGATION_PRIVILEGE   27
1660 #define SE_MANAGE_VOLUME_PRIVILEGE       28
1661 #define SE_IMPERSONATE_PRIVILEGE         29
1662 #define SE_CREATE_GLOBAL_PRIVILEGE       30
1663 #define SE_MAX_WELL_KNOWN_PRIVILEGE      SE_CREATE_GLOBAL_PRIVILEGE
1664
1665 /* NtGlobalFlag bits */
1666 #define FLG_STOP_ON_EXCEPTION            0x00000001
1667 #define FLG_SHOW_LDR_SNAPS               0x00000002
1668 #define FLG_DEBUG_INITIAL_COMMAND        0x00000004
1669 #define FLG_STOP_ON_HUNG_GUI             0x00000008
1670 #define FLG_HEAP_ENABLE_TAIL_CHECK       0x00000010
1671 #define FLG_HEAP_ENABLE_FREE_CHECK       0x00000020
1672 #define FLG_HEAP_VALIDATE_PARAMETERS     0x00000040
1673 #define FLG_HEAP_VALIDATE_ALL            0x00000080
1674 #define FLG_APPLICATION_VERIFIER         0x00000100
1675 #define FLG_POOL_ENABLE_TAGGING          0x00000400
1676 #define FLG_HEAP_ENABLE_TAGGING          0x00000800
1677 #define FLG_USER_STACK_TRACE_DB          0x00001000
1678 #define FLG_KERNEL_STACK_TRACE_DB        0x00002000
1679 #define FLG_MAINTAIN_OBJECT_TYPELIST     0x00004000
1680 #define FLG_HEAP_ENABLE_TAG_BY_DLL       0x00008000
1681 #define FLG_DISABLE_STACK_EXTENSION      0x00010000
1682 #define FLG_ENABLE_CSRDEBUG              0x00020000
1683 #define FLG_ENABLE_KDEBUG_SYMBOL_LOAD    0x00040000
1684 #define FLG_DISABLE_PAGE_KERNEL_STACKS   0x00080000
1685 #define FLG_ENABLE_SYSTEM_CRIT_BREAKS    0x00100000
1686 #define FLG_HEAP_DISABLE_COALESCING      0x00200000
1687 #define FLG_ENABLE_CLOSE_EXCEPTIONS      0x00400000
1688 #define FLG_ENABLE_EXCEPTION_LOGGING     0x00800000
1689 #define FLG_ENABLE_HANDLE_TYPE_TAGGING   0x01000000
1690 #define FLG_HEAP_PAGE_ALLOCS             0x02000000
1691 #define FLG_DEBUG_INITIAL_COMMAND_EX     0x04000000
1692 #define FLG_DISABLE_DBGPRINT             0x08000000
1693 #define FLG_CRITSEC_EVENT_CREATION       0x10000000
1694 #define FLG_LDR_TOP_DOWN                 0x20000000
1695 #define FLG_ENABLE_HANDLE_EXCEPTIONS     0x40000000
1696 #define FLG_DISABLE_PROTDLLS             0x80000000
1697
1698 /* Rtl*Registry* functions structs and defines */
1699 #define RTL_REGISTRY_ABSOLUTE             0
1700 #define RTL_REGISTRY_SERVICES             1
1701 #define RTL_REGISTRY_CONTROL              2
1702 #define RTL_REGISTRY_WINDOWS_NT           3
1703 #define RTL_REGISTRY_DEVICEMAP            4
1704 #define RTL_REGISTRY_USER                 5
1705
1706 #define RTL_REGISTRY_HANDLE       0x40000000
1707 #define RTL_REGISTRY_OPTIONAL     0x80000000
1708
1709 #define RTL_QUERY_REGISTRY_SUBKEY         0x00000001
1710 #define RTL_QUERY_REGISTRY_TOPKEY         0x00000002
1711 #define RTL_QUERY_REGISTRY_REQUIRED       0x00000004
1712 #define RTL_QUERY_REGISTRY_NOVALUE        0x00000008
1713 #define RTL_QUERY_REGISTRY_NOEXPAND       0x00000010
1714 #define RTL_QUERY_REGISTRY_DIRECT         0x00000020
1715 #define RTL_QUERY_REGISTRY_DELETE         0x00000040
1716
1717 typedef NTSTATUS (WINAPI *PRTL_QUERY_REGISTRY_ROUTINE)( PCWSTR ValueName,
1718                                                         ULONG  ValueType,
1719                                                         PVOID  ValueData,
1720                                                         ULONG  ValueLength,
1721                                                         PVOID  Context,
1722                                                         PVOID  EntryContext);
1723
1724 typedef struct _RTL_QUERY_REGISTRY_TABLE
1725 {
1726   PRTL_QUERY_REGISTRY_ROUTINE  QueryRoutine;
1727   ULONG  Flags;
1728   PWSTR  Name;
1729   PVOID  EntryContext;
1730   ULONG  DefaultType;
1731   PVOID  DefaultData;
1732   ULONG  DefaultLength;
1733 } RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
1734
1735 typedef struct _KEY_MULTIPLE_VALUE_INFORMATION
1736 {
1737   PUNICODE_STRING ValueName;
1738   ULONG DataLength;
1739   ULONG DataOffset;
1740   ULONG Type;
1741 } KEY_MULTIPLE_VALUE_INFORMATION, *PKEY_MULTIPLE_VALUE_INFORMATION;
1742
1743 typedef VOID (CALLBACK *PRTL_OVERLAPPED_COMPLETION_ROUTINE)(DWORD,DWORD,LPVOID);
1744
1745 typedef VOID (CALLBACK *PTIMER_APC_ROUTINE) ( PVOID, ULONG, LONG );
1746
1747 typedef enum _EVENT_TYPE {
1748   NotificationEvent,
1749   SynchronizationEvent
1750 } EVENT_TYPE, *PEVENT_TYPE;
1751
1752 typedef enum _EVENT_INFORMATION_CLASS {
1753   EventBasicInformation
1754 } EVENT_INFORMATION_CLASS, *PEVENT_INFORMATION_CLASS;
1755
1756 typedef struct _EVENT_BASIC_INFORMATION {
1757   EVENT_TYPE EventType;
1758   LONG EventState;
1759 } EVENT_BASIC_INFORMATION, *PEVENT_BASIC_INFORMATION;
1760
1761 typedef enum _SEMAPHORE_INFORMATION_CLASS {
1762   SemaphoreBasicInformation
1763 } SEMAPHORE_INFORMATION_CLASS, *PSEMAPHORE_INFORMATION_CLASS;
1764
1765 typedef struct _SEMAPHORE_BASIC_INFORMATION {
1766   ULONG CurrentCount;
1767   ULONG MaximumCount;
1768 } SEMAPHORE_BASIC_INFORMATION, *PSEMAPHORE_BASIC_INFORMATION;
1769
1770 typedef enum _SECTION_INFORMATION_CLASS
1771 {
1772   SectionBasicInformation,
1773   SectionImageInformation,
1774 } SECTION_INFORMATION_CLASS;
1775
1776 typedef struct _SECTION_BASIC_INFORMATION {
1777   ULONG BaseAddress;
1778   ULONG Attributes;
1779   LARGE_INTEGER Size;
1780 } SECTION_BASIC_INFORMATION, *PSECTION_BASIC_INFORMATION;
1781
1782 typedef struct _SECTION_IMAGE_INFORMATION {
1783   PVOID EntryPoint;
1784   ULONG StackZeroBits;
1785   ULONG StackReserved;
1786   ULONG StackCommit;
1787   ULONG ImageSubsystem;
1788   WORD SubsystemVersionLow;
1789   WORD SubsystemVersionHigh;
1790   ULONG Unknown1;
1791   ULONG ImageCharacteristics;
1792   ULONG ImageMachineType;
1793   ULONG Unknown2[3];
1794 } SECTION_IMAGE_INFORMATION, *PSECTION_IMAGE_INFORMATION;
1795
1796 typedef struct _LPC_SECTION_WRITE {
1797   ULONG Length;
1798   HANDLE SectionHandle;
1799   ULONG SectionOffset;
1800   ULONG ViewSize;
1801   PVOID ViewBase;
1802   PVOID TargetViewBase;
1803 } LPC_SECTION_WRITE, *PLPC_SECTION_WRITE;
1804
1805 typedef struct _LPC_SECTION_READ {
1806   ULONG Length;
1807   ULONG ViewSize;
1808   PVOID ViewBase;
1809 } LPC_SECTION_READ, *PLPC_SECTION_READ;
1810
1811 typedef struct _LPC_MESSAGE {
1812   USHORT DataSize;
1813   USHORT MessageSize;
1814   USHORT MessageType;
1815   USHORT VirtualRangesOffset;
1816   CLIENT_ID ClientId;
1817   ULONG_PTR MessageId;
1818   ULONG_PTR SectionSize;
1819   UCHAR Data[ANYSIZE_ARRAY];
1820 } LPC_MESSAGE, *PLPC_MESSAGE;
1821
1822 typedef enum _SHUTDOWN_ACTION {
1823   ShutdownNoReboot,
1824   ShutdownReboot,
1825   ShutdownPowerOff
1826 } SHUTDOWN_ACTION, *PSHUTDOWN_ACTION;
1827
1828 typedef enum _KPROFILE_SOURCE {
1829   ProfileTime,
1830   ProfileAlignmentFixup,
1831   ProfileTotalIssues,
1832   ProfilePipelineDry,
1833   ProfileLoadInstructions,
1834   ProfilePipelineFrozen,
1835   ProfileBranchInstructions,
1836   ProfileTotalNonissues,
1837   ProfileDcacheMisses,
1838   ProfileIcacheMisses,
1839   ProfileCacheMisses,
1840   ProfileBranchMispredictions,
1841   ProfileStoreInstructions,
1842   ProfileFpInstructions,
1843   ProfileIntegerInstructions,
1844   Profile2Issue,
1845   Profile3Issue,
1846   Profile4Issue,
1847   ProfileSpecialInstructions,
1848   ProfileTotalCycles,
1849   ProfileIcacheIssues,
1850   ProfileDcacheAccesses,
1851   ProfileMemoryBarrierCycles,
1852   ProfileLoadLinkedIssues,
1853   ProfileMaximum
1854 } KPROFILE_SOURCE, *PKPROFILE_SOURCE;
1855
1856 typedef struct _DIRECTORY_BASIC_INFORMATION {
1857   UNICODE_STRING ObjectName;
1858   UNICODE_STRING ObjectTypeName;
1859 } DIRECTORY_BASIC_INFORMATION, *PDIRECTORY_BASIC_INFORMATION;
1860
1861 typedef struct _INITIAL_TEB {
1862   PVOID StackBase;
1863   PVOID StackLimit;
1864   PVOID StackCommit;
1865   PVOID StackCommitMax;
1866   PVOID StackReserved;
1867 } INITIAL_TEB, *PINITIAL_TEB;
1868
1869 typedef enum _PORT_INFORMATION_CLASS {
1870   PortNoInformation
1871 } PORT_INFORMATION_CLASS, *PPORT_INFORMATION_CLASS;
1872
1873 typedef enum _IO_COMPLETION_INFORMATION_CLASS {
1874   IoCompletionBasicInformation
1875 } IO_COMPLETION_INFORMATION_CLASS, *PIO_COMPLETION_INFORMATION_CLASS;
1876
1877 typedef struct _FILE_COMPLETION_INFORMATION {
1878     HANDLE CompletionPort;
1879     ULONG_PTR CompletionKey;
1880 } FILE_COMPLETION_INFORMATION, *PFILE_COMPLETION_INFORMATION;
1881
1882 #define IO_COMPLETION_QUERY_STATE  0x0001
1883 #define IO_COMPLETION_MODIFY_STATE 0x0002
1884 #define IO_COMPLETION_ALL_ACCESS   (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
1885
1886 typedef enum _HARDERROR_RESPONSE_OPTION {
1887   OptionAbortRetryIgnore,
1888   OptionOk,
1889   OptionOkCancel,
1890   OptionRetryCancel,
1891   OptionYesNo,
1892   OptionYesNoCancel,
1893   OptionShutdownSystem
1894 } HARDERROR_RESPONSE_OPTION, *PHARDERROR_RESPONSE_OPTION;
1895
1896 typedef enum _HARDERROR_RESPONSE {
1897   ResponseReturnToCaller,
1898   ResponseNotHandled,
1899   ResponseAbort,
1900   ResponseCancel,
1901   ResponseIgnore,
1902   ResponseNo,
1903   ResponseOk,
1904   ResponseRetry,
1905   ResponseYes
1906 } HARDERROR_RESPONSE, *PHARDERROR_RESPONSE;
1907
1908 typedef enum _SYSDBG_COMMAND {
1909   SysDbgQueryModuleInformation,
1910   SysDbgQueryTraceInformation,
1911   SysDbgSetTracepoint,
1912   SysDbgSetSpecialCall,
1913   SysDbgClearSpecialCalls,
1914   SysDbgQuerySpecialCalls,
1915   SysDbgBreakPoint,
1916   SysDbgQueryVersion,
1917   SysDbgReadVirtual,
1918   SysDbgWriteVirtual,
1919   SysDbgReadPhysical,
1920   SysDbgWritePhysical,
1921   SysDbgReadControlSpace,
1922   SysDbgWriteControlSpace,
1923   SysDbgReadIoSpace,
1924   SysDbgWriteIoSpace,
1925   SysDbgReadMsr,
1926   SysDbgWriteMsr,
1927   SysDbgReadBusData,
1928   SysDbgWriteBusData
1929 } SYSDBG_COMMAND, *PSYSDBG_COMMAND;
1930
1931
1932 /*************************************************************************
1933  * Loader structures
1934  *
1935  * Those are not part of standard Winternl.h
1936  */
1937 typedef struct _LDR_MODULE
1938 {
1939     LIST_ENTRY          InLoadOrderModuleList;
1940     LIST_ENTRY          InMemoryOrderModuleList;
1941     LIST_ENTRY          InInitializationOrderModuleList;
1942     void*               BaseAddress;
1943     void*               EntryPoint;
1944     ULONG               SizeOfImage;
1945     UNICODE_STRING      FullDllName;
1946     UNICODE_STRING      BaseDllName;
1947     ULONG               Flags;
1948     SHORT               LoadCount;
1949     SHORT               TlsIndex;
1950     HANDLE              SectionHandle;
1951     ULONG               CheckSum;
1952     ULONG               TimeDateStamp;
1953     HANDLE              ActivationContext;
1954 } LDR_MODULE, *PLDR_MODULE;
1955
1956 /* those defines are (some of the) regular LDR_MODULE.Flags values */
1957 #define LDR_IMAGE_IS_DLL                0x00000004
1958 #define LDR_LOAD_IN_PROGRESS            0x00001000
1959 #define LDR_UNLOAD_IN_PROGRESS          0x00002000
1960 #define LDR_NO_DLL_CALLS                0x00040000
1961 #define LDR_PROCESS_ATTACHED            0x00080000
1962 #define LDR_MODULE_REBASED              0x00200000
1963
1964 /* these ones is Wine specific */
1965 #define LDR_DONT_RESOLVE_REFS           0x40000000
1966 #define LDR_WINE_INTERNAL               0x80000000
1967
1968 /* FIXME: to be checked */
1969 #define MAXIMUM_FILENAME_LENGTH 256
1970
1971 typedef struct _SYSTEM_MODULE
1972 {
1973     PVOID               Reserved1;                      /* 00/00 */
1974     PVOID               Reserved2;                      /* 04/08 */
1975     PVOID               ImageBaseAddress;               /* 08/10 */
1976     ULONG               ImageSize;                      /* 0c/18 */
1977     ULONG               Flags;                          /* 10/1c */
1978     WORD                Id;                             /* 14/20 */
1979     WORD                Rank;                           /* 16/22 */
1980     WORD                Unknown;                        /* 18/24 */
1981     WORD                NameOffset;                     /* 1a/26 */
1982     BYTE                Name[MAXIMUM_FILENAME_LENGTH];  /* 1c/28 */
1983 } SYSTEM_MODULE, *PSYSTEM_MODULE;
1984
1985 typedef struct _SYSTEM_MODULE_INFORMATION
1986 {
1987     ULONG               ModulesCount;
1988     SYSTEM_MODULE       Modules[1]; /* FIXME: should be Modules[0] */
1989 } SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;
1990
1991 /***********************************************************************
1992  * Function declarations
1993  */
1994
1995 #if defined(__i386__) && defined(__GNUC__)
1996 static inline void WINAPI DbgBreakPoint(void) { __asm__ __volatile__("int3"); }
1997 static inline void WINAPI DbgUserBreakPoint(void) { __asm__ __volatile__("int3"); }
1998 #else  /* __i386__ && __GNUC__ */
1999 NTSYSAPI void WINAPI DbgBreakPoint(void);
2000 NTSYSAPI void WINAPI DbgUserBreakPoint(void);
2001 #endif  /* __i386__ && __GNUC__ */
2002 NTSYSAPI NTSTATUS WINAPIV DbgPrint(LPCSTR fmt, ...);
2003 NTSYSAPI NTSTATUS WINAPIV DbgPrintEx(ULONG iComponentId, ULONG Level, LPCSTR fmt, ...);
2004 NTSYSAPI NTSTATUS  WINAPI LdrAccessResource(HMODULE,const IMAGE_RESOURCE_DATA_ENTRY*,void**,PULONG);
2005 NTSYSAPI NTSTATUS  WINAPI LdrAddRefDll(ULONG,HMODULE);
2006 NTSYSAPI NTSTATUS  WINAPI LdrFindResourceDirectory_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DIRECTORY**);
2007 NTSYSAPI NTSTATUS  WINAPI LdrFindResource_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DATA_ENTRY**);
2008 NTSYSAPI NTSTATUS  WINAPI LdrDisableThreadCalloutsForDll(HMODULE);
2009 NTSYSAPI NTSTATUS  WINAPI LdrFindEntryForAddress(const void*, PLDR_MODULE*);
2010 NTSYSAPI NTSTATUS  WINAPI LdrGetDllHandle(LPCWSTR, ULONG, const UNICODE_STRING*, HMODULE*);
2011 NTSYSAPI NTSTATUS  WINAPI LdrGetProcedureAddress(HMODULE, const ANSI_STRING*, ULONG, void**);
2012 NTSYSAPI void      WINAPI LdrInitializeThunk(void*,ULONG_PTR,ULONG_PTR,ULONG_PTR);
2013 NTSYSAPI NTSTATUS  WINAPI LdrLoadDll(LPCWSTR, DWORD, const UNICODE_STRING*, HMODULE*);
2014 NTSYSAPI NTSTATUS  WINAPI LdrLockLoaderLock(ULONG,ULONG*,ULONG*);
2015 IMAGE_BASE_RELOCATION * WINAPI LdrProcessRelocationBlock(void*,UINT,USHORT*,INT_PTR);
2016 NTSYSAPI NTSTATUS  WINAPI LdrQueryImageFileExecutionOptions(const UNICODE_STRING*,LPCWSTR,ULONG,void*,ULONG,ULONG*);
2017 NTSYSAPI NTSTATUS  WINAPI LdrQueryProcessModuleInformation(SYSTEM_MODULE_INFORMATION*, ULONG, ULONG*);
2018 NTSYSAPI void      WINAPI LdrShutdownProcess(void);
2019 NTSYSAPI void      WINAPI LdrShutdownThread(void);
2020 NTSYSAPI NTSTATUS  WINAPI LdrUnloadDll(HMODULE);
2021 NTSYSAPI NTSTATUS  WINAPI LdrUnlockLoaderLock(ULONG,ULONG);
2022 NTSYSAPI NTSTATUS  WINAPI NtAcceptConnectPort(PHANDLE,ULONG,PLPC_MESSAGE,BOOLEAN,PLPC_SECTION_WRITE,PLPC_SECTION_READ);
2023 NTSYSAPI NTSTATUS  WINAPI NtAccessCheck(PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,PGENERIC_MAPPING,PPRIVILEGE_SET,PULONG,PULONG,NTSTATUS*);
2024 NTSYSAPI NTSTATUS  WINAPI NtAccessCheckAndAuditAlarm(PUNICODE_STRING,HANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,ACCESS_MASK,PGENERIC_MAPPING,BOOLEAN,PACCESS_MASK,PBOOLEAN,PBOOLEAN);
2025 NTSYSAPI NTSTATUS  WINAPI NtAddAtom(const WCHAR*,ULONG,RTL_ATOM*);
2026 NTSYSAPI NTSTATUS  WINAPI NtAdjustGroupsToken(HANDLE,BOOLEAN,PTOKEN_GROUPS,ULONG,PTOKEN_GROUPS,PULONG);
2027 NTSYSAPI NTSTATUS  WINAPI NtAdjustPrivilegesToken(HANDLE,BOOLEAN,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD);
2028 NTSYSAPI NTSTATUS  WINAPI NtAlertResumeThread(HANDLE,PULONG);
2029 NTSYSAPI NTSTATUS  WINAPI NtAlertThread(HANDLE ThreadHandle);
2030 NTSYSAPI NTSTATUS  WINAPI NtAllocateLocallyUniqueId(PLUID lpLuid);
2031 NTSYSAPI NTSTATUS  WINAPI NtAllocateUuids(PULARGE_INTEGER,PULONG,PULONG);
2032 NTSYSAPI NTSTATUS  WINAPI NtAllocateVirtualMemory(HANDLE,PVOID*,ULONG,SIZE_T*,ULONG,ULONG);
2033 NTSYSAPI NTSTATUS  WINAPI NtAreMappedFilesTheSame(PVOID,PVOID);
2034 NTSYSAPI NTSTATUS  WINAPI NtAssignProcessToJobObject(HANDLE,HANDLE);
2035 NTSYSAPI NTSTATUS  WINAPI NtCallbackReturn(PVOID,ULONG,NTSTATUS);
2036 NTSYSAPI NTSTATUS  WINAPI NtCancelIoFile(HANDLE,PIO_STATUS_BLOCK);
2037 NTSYSAPI NTSTATUS  WINAPI NtCancelIoFileEx(HANDLE,PIO_STATUS_BLOCK,PIO_STATUS_BLOCK);
2038 NTSYSAPI NTSTATUS  WINAPI NtCancelTimer(HANDLE, BOOLEAN*);
2039 NTSYSAPI NTSTATUS  WINAPI NtClearEvent(HANDLE);
2040 NTSYSAPI NTSTATUS  WINAPI NtClose(HANDLE);
2041 NTSYSAPI NTSTATUS  WINAPI NtCloseObjectAuditAlarm(PUNICODE_STRING,HANDLE,BOOLEAN);
2042 NTSYSAPI NTSTATUS  WINAPI NtCompleteConnectPort(HANDLE);
2043 NTSYSAPI NTSTATUS  WINAPI NtConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
2044 NTSYSAPI NTSTATUS  WINAPI NtContinue(PCONTEXT,BOOLEAN);
2045 NTSYSAPI NTSTATUS  WINAPI NtCreateDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
2046 NTSYSAPI NTSTATUS  WINAPI NtCreateEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *,EVENT_TYPE,BOOLEAN);
2047 NTSYSAPI NTSTATUS  WINAPI NtCreateEventPair(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
2048 NTSYSAPI NTSTATUS  WINAPI NtCreateFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,PLARGE_INTEGER,ULONG,ULONG,ULONG,ULONG,PVOID,ULONG);
2049 NTSYSAPI NTSTATUS  WINAPI NtCreateIoCompletion(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,ULONG);
2050 NTSYSAPI NTSTATUS  WINAPI NtCreateJobObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2051 NTSYSAPI NTSTATUS  WINAPI NtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
2052 NTSYSAPI NTSTATUS  WINAPI NtCreateMailslotFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,PLARGE_INTEGER);
2053 NTSYSAPI NTSTATUS  WINAPI NtCreateMutant(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,BOOLEAN);
2054 NTSYSAPI NTSTATUS  WINAPI NtCreateNamedPipeFile(PHANDLE,ULONG,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,PLARGE_INTEGER);
2055 NTSYSAPI NTSTATUS  WINAPI NtCreatePagingFile(PUNICODE_STRING,PLARGE_INTEGER,PLARGE_INTEGER,PLARGE_INTEGER);
2056 NTSYSAPI NTSTATUS  WINAPI NtCreatePort(PHANDLE,POBJECT_ATTRIBUTES,ULONG,ULONG,PULONG);
2057 NTSYSAPI NTSTATUS  WINAPI NtCreateProcess(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,HANDLE,BOOLEAN,HANDLE,HANDLE,HANDLE);
2058 NTSYSAPI NTSTATUS  WINAPI NtCreateProfile(PHANDLE,HANDLE,PVOID,ULONG,ULONG,PVOID,ULONG,KPROFILE_SOURCE,KAFFINITY);
2059 NTSYSAPI NTSTATUS  WINAPI NtCreateSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const LARGE_INTEGER*,ULONG,ULONG,HANDLE);
2060 NTSYSAPI NTSTATUS  WINAPI NtCreateSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,LONG,LONG);
2061 NTSYSAPI NTSTATUS  WINAPI NtCreateSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PUNICODE_STRING);
2062 NTSYSAPI NTSTATUS  WINAPI NtCreateThread(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,HANDLE,PCLIENT_ID,PCONTEXT,PINITIAL_TEB,BOOLEAN);
2063 NTSYSAPI NTSTATUS  WINAPI NtCreateTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*, TIMER_TYPE);
2064 NTSYSAPI NTSTATUS  WINAPI NtCreateToken(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,TOKEN_TYPE,PLUID,PLARGE_INTEGER,PTOKEN_USER,PTOKEN_GROUPS,PTOKEN_PRIVILEGES,PTOKEN_OWNER,PTOKEN_PRIMARY_GROUP,PTOKEN_DEFAULT_DACL,PTOKEN_SOURCE);
2065 NTSYSAPI NTSTATUS  WINAPI NtDelayExecution(BOOLEAN,const LARGE_INTEGER*);
2066 NTSYSAPI NTSTATUS  WINAPI NtDeleteAtom(RTL_ATOM);
2067 NTSYSAPI NTSTATUS  WINAPI NtDeleteFile(POBJECT_ATTRIBUTES);
2068 NTSYSAPI NTSTATUS  WINAPI NtDeleteKey(HANDLE);
2069 NTSYSAPI NTSTATUS  WINAPI NtDeleteValueKey(HANDLE,const UNICODE_STRING *);
2070 NTSYSAPI NTSTATUS  WINAPI NtDeviceIoControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
2071 NTSYSAPI NTSTATUS  WINAPI NtDisplayString(PUNICODE_STRING);
2072 NTSYSAPI NTSTATUS  WINAPI NtDuplicateObject(HANDLE,HANDLE,HANDLE,PHANDLE,ACCESS_MASK,ULONG,ULONG);
2073 NTSYSAPI NTSTATUS  WINAPI NtDuplicateToken(HANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,PHANDLE);
2074 NTSYSAPI NTSTATUS  WINAPI NtEnumerateKey(HANDLE,ULONG,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
2075 NTSYSAPI NTSTATUS  WINAPI NtEnumerateValueKey(HANDLE,ULONG,KEY_VALUE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2076 NTSYSAPI NTSTATUS  WINAPI NtExtendSection(HANDLE,PLARGE_INTEGER);
2077 NTSYSAPI NTSTATUS  WINAPI NtFindAtom(const WCHAR*,ULONG,RTL_ATOM*);
2078 NTSYSAPI NTSTATUS  WINAPI NtFlushBuffersFile(HANDLE,IO_STATUS_BLOCK*);
2079 NTSYSAPI NTSTATUS  WINAPI NtFlushInstructionCache(HANDLE,LPCVOID,SIZE_T);
2080 NTSYSAPI NTSTATUS  WINAPI NtFlushKey(HANDLE);
2081 NTSYSAPI NTSTATUS  WINAPI NtFlushVirtualMemory(HANDLE,LPCVOID*,SIZE_T*,ULONG);
2082 NTSYSAPI NTSTATUS  WINAPI NtFlushWriteBuffer(VOID);
2083 NTSYSAPI NTSTATUS  WINAPI NtFreeVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
2084 NTSYSAPI NTSTATUS  WINAPI NtFsControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
2085 NTSYSAPI NTSTATUS  WINAPI NtGetContextThread(HANDLE,CONTEXT*);
2086 NTSYSAPI NTSTATUS  WINAPI NtGetPlugPlayEvent(ULONG,ULONG,PVOID,ULONG);
2087 NTSYSAPI ULONG     WINAPI NtGetTickCount(VOID);
2088 NTSYSAPI NTSTATUS  WINAPI NtGetWriteWatch(HANDLE,ULONG,PVOID,SIZE_T,PVOID*,ULONG_PTR*,ULONG*);
2089 NTSYSAPI NTSTATUS  WINAPI NtImpersonateAnonymousToken(HANDLE);
2090 NTSYSAPI NTSTATUS  WINAPI NtImpersonateClientOfPort(HANDLE,PPORT_MESSAGE);
2091 NTSYSAPI NTSTATUS  WINAPI NtImpersonateThread(HANDLE,HANDLE,PSECURITY_QUALITY_OF_SERVICE);
2092 NTSYSAPI NTSTATUS  WINAPI NtInitializeRegistry(BOOLEAN);
2093 NTSYSAPI NTSTATUS  WINAPI NtInitiatePowerAction(POWER_ACTION,SYSTEM_POWER_STATE,ULONG,BOOLEAN);
2094 NTSYSAPI NTSTATUS  WINAPI NtIsProcessInJob(HANDLE,HANDLE);
2095 NTSYSAPI NTSTATUS  WINAPI NtListenPort(HANDLE,PLPC_MESSAGE);
2096 NTSYSAPI NTSTATUS  WINAPI NtLoadDriver(const UNICODE_STRING *);
2097 NTSYSAPI NTSTATUS  WINAPI NtLoadKey(const OBJECT_ATTRIBUTES *,OBJECT_ATTRIBUTES *);
2098 NTSYSAPI NTSTATUS  WINAPI NtLockFile(HANDLE,HANDLE,PIO_APC_ROUTINE,void*,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,ULONG*,BOOLEAN,BOOLEAN);
2099 NTSYSAPI NTSTATUS  WINAPI NtLockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
2100 NTSYSAPI NTSTATUS  WINAPI NtMakeTemporaryObject(HANDLE);
2101 NTSYSAPI NTSTATUS  WINAPI NtMapViewOfSection(HANDLE,HANDLE,PVOID*,ULONG,SIZE_T,const LARGE_INTEGER*,SIZE_T*,SECTION_INHERIT,ULONG,ULONG);
2102 NTSYSAPI NTSTATUS  WINAPI NtNotifyChangeDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,ULONG,BOOLEAN);
2103 NTSYSAPI NTSTATUS  WINAPI NtNotifyChangeKey(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN);
2104 NTSYSAPI NTSTATUS  WINAPI NtOpenDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
2105 NTSYSAPI NTSTATUS  WINAPI NtOpenEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
2106 NTSYSAPI NTSTATUS  WINAPI NtOpenEventPair(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
2107 NTSYSAPI NTSTATUS  WINAPI NtOpenFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG);
2108 NTSYSAPI NTSTATUS  WINAPI NtOpenIoCompletion(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
2109 NTSYSAPI NTSTATUS  WINAPI NtOpenJobObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2110 NTSYSAPI NTSTATUS  WINAPI NtOpenKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
2111 NTSYSAPI NTSTATUS  WINAPI NtOpenMutant(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2112 NTSYSAPI NTSTATUS  WINAPI NtOpenObjectAuditAlarm(PUNICODE_STRING,PHANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,ACCESS_MASK,PPRIVILEGE_SET,BOOLEAN,BOOLEAN,PBOOLEAN);
2113 NTSYSAPI NTSTATUS  WINAPI NtOpenProcess(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
2114 NTSYSAPI NTSTATUS  WINAPI NtOpenProcessToken(HANDLE,DWORD,HANDLE *);
2115 NTSYSAPI NTSTATUS  WINAPI NtOpenProcessTokenEx(HANDLE,DWORD,DWORD,HANDLE *);
2116 NTSYSAPI NTSTATUS  WINAPI NtOpenSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2117 NTSYSAPI NTSTATUS  WINAPI NtOpenSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2118 NTSYSAPI NTSTATUS  WINAPI NtOpenSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
2119 NTSYSAPI NTSTATUS  WINAPI NtOpenThread(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
2120 NTSYSAPI NTSTATUS  WINAPI NtOpenThreadToken(HANDLE,DWORD,BOOLEAN,HANDLE *);
2121 NTSYSAPI NTSTATUS  WINAPI NtOpenThreadTokenEx(HANDLE,DWORD,BOOLEAN,DWORD,HANDLE *);
2122 NTSYSAPI NTSTATUS  WINAPI NtOpenTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*);
2123 NTSYSAPI NTSTATUS  WINAPI NtPowerInformation(POWER_INFORMATION_LEVEL,PVOID,ULONG,PVOID,ULONG);
2124 NTSYSAPI NTSTATUS  WINAPI NtPrivilegeCheck(HANDLE,PPRIVILEGE_SET,PBOOLEAN);
2125 NTSYSAPI NTSTATUS  WINAPI NtPrivilegeObjectAuditAlarm(PUNICODE_STRING,HANDLE,HANDLE,ULONG,PPRIVILEGE_SET,BOOLEAN);
2126 NTSYSAPI NTSTATUS  WINAPI NtPrivilegedServiceAuditAlarm(PUNICODE_STRING,PUNICODE_STRING,HANDLE,PPRIVILEGE_SET,BOOLEAN);
2127 NTSYSAPI NTSTATUS  WINAPI NtProtectVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG,ULONG*);
2128 NTSYSAPI NTSTATUS  WINAPI NtPulseEvent(HANDLE,PULONG);
2129 NTSYSAPI NTSTATUS  WINAPI NtQueueApcThread(HANDLE,PNTAPCFUNC,ULONG_PTR,ULONG_PTR,ULONG_PTR);
2130 NTSYSAPI NTSTATUS  WINAPI NtQueryAttributesFile(const OBJECT_ATTRIBUTES*,FILE_BASIC_INFORMATION*);
2131 NTSYSAPI NTSTATUS  WINAPI NtQueryDefaultLocale(BOOLEAN,LCID*);
2132 NTSYSAPI NTSTATUS  WINAPI NtQueryDefaultUILanguage(LANGID*);
2133 NTSYSAPI NTSTATUS  WINAPI NtQueryDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS,BOOLEAN,PUNICODE_STRING,BOOLEAN);
2134 NTSYSAPI NTSTATUS  WINAPI NtQueryDirectoryObject(HANDLE,PDIRECTORY_BASIC_INFORMATION,ULONG,BOOLEAN,BOOLEAN,PULONG,PULONG);
2135 NTSYSAPI NTSTATUS  WINAPI NtQueryEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,BOOLEAN,PVOID,ULONG,PULONG,BOOLEAN);
2136 NTSYSAPI NTSTATUS  WINAPI NtQueryEvent(HANDLE,EVENT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2137 NTSYSAPI NTSTATUS  WINAPI NtQueryFullAttributesFile(const OBJECT_ATTRIBUTES*,FILE_NETWORK_OPEN_INFORMATION*);
2138 NTSYSAPI NTSTATUS  WINAPI NtQueryInformationAtom(RTL_ATOM,ATOM_INFORMATION_CLASS,PVOID,ULONG,ULONG*);
2139 NTSYSAPI NTSTATUS  WINAPI NtQueryInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,LONG,FILE_INFORMATION_CLASS);
2140 NTSYSAPI NTSTATUS  WINAPI NtQueryInformationJobObject(HANDLE,JOBOBJECTINFOCLASS,PVOID,ULONG,PULONG);
2141 NTSYSAPI NTSTATUS  WINAPI NtQueryInformationPort(HANDLE,PORT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2142 NTSYSAPI NTSTATUS  WINAPI NtQueryInformationProcess(HANDLE,PROCESSINFOCLASS,PVOID,ULONG,PULONG);
2143 NTSYSAPI NTSTATUS  WINAPI NtQueryInformationThread(HANDLE,THREADINFOCLASS,PVOID,ULONG,PULONG);
2144 NTSYSAPI NTSTATUS  WINAPI NtQueryInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2145 NTSYSAPI NTSTATUS  WINAPI NtQueryInstallUILanguage(LANGID*);
2146 NTSYSAPI NTSTATUS  WINAPI NtQueryIntervalProfile(KPROFILE_SOURCE,PULONG);
2147 NTSYSAPI NTSTATUS  WINAPI NtQueryIoCompletion(HANDLE,IO_COMPLETION_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2148 NTSYSAPI NTSTATUS  WINAPI NtQueryKey(HANDLE,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
2149 NTSYSAPI NTSTATUS  WINAPI NtQueryMultipleValueKey(HANDLE,PKEY_MULTIPLE_VALUE_INFORMATION,ULONG,PVOID,ULONG,PULONG);
2150 NTSYSAPI NTSTATUS  WINAPI NtQueryMutant(HANDLE,MUTANT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2151 NTSYSAPI NTSTATUS  WINAPI NtQueryObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG, PULONG);
2152 NTSYSAPI NTSTATUS  WINAPI NtQueryOpenSubKeys(POBJECT_ATTRIBUTES,PULONG);
2153 NTSYSAPI NTSTATUS  WINAPI NtQueryPerformanceCounter(PLARGE_INTEGER, PLARGE_INTEGER);
2154 NTSYSAPI NTSTATUS  WINAPI NtQuerySecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,ULONG,PULONG);
2155 NTSYSAPI NTSTATUS  WINAPI NtQuerySection(HANDLE,SECTION_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2156 NTSYSAPI NTSTATUS  WINAPI NtQuerySemaphore(HANDLE,SEMAPHORE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2157 NTSYSAPI NTSTATUS  WINAPI NtQuerySymbolicLinkObject(HANDLE,PUNICODE_STRING,PULONG);
2158 NTSYSAPI NTSTATUS  WINAPI NtQuerySystemEnvironmentValue(PUNICODE_STRING,PWCHAR,ULONG,PULONG);
2159 NTSYSAPI NTSTATUS  WINAPI NtQuerySystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2160 NTSYSAPI NTSTATUS  WINAPI NtQuerySystemTime(PLARGE_INTEGER);
2161 NTSYSAPI NTSTATUS  WINAPI NtQueryTimer(HANDLE,TIMER_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2162 NTSYSAPI NTSTATUS  WINAPI NtQueryTimerResolution(PULONG,PULONG,PULONG);
2163 NTSYSAPI NTSTATUS  WINAPI NtQueryValueKey(HANDLE,const UNICODE_STRING *,KEY_VALUE_INFORMATION_CLASS,void *,DWORD,DWORD *);
2164 NTSYSAPI NTSTATUS  WINAPI NtQueryVirtualMemory(HANDLE,LPCVOID,MEMORY_INFORMATION_CLASS,PVOID,SIZE_T,SIZE_T*);
2165 NTSYSAPI NTSTATUS  WINAPI NtQueryVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
2166 NTSYSAPI NTSTATUS  WINAPI NtRaiseException(PEXCEPTION_RECORD,PCONTEXT,BOOL);
2167 NTSYSAPI NTSTATUS  WINAPI NtRaiseHardError(NTSTATUS,ULONG,PUNICODE_STRING,PVOID*,HARDERROR_RESPONSE_OPTION,PHARDERROR_RESPONSE);
2168 NTSYSAPI NTSTATUS  WINAPI NtReadFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,PLARGE_INTEGER,PULONG);
2169 NTSYSAPI NTSTATUS  WINAPI NtReadFileScatter(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,FILE_SEGMENT_ELEMENT*,ULONG,PLARGE_INTEGER,PULONG);
2170 NTSYSAPI NTSTATUS  WINAPI NtReadRequestData(HANDLE,PLPC_MESSAGE,ULONG,PVOID,ULONG,PULONG);
2171 NTSYSAPI NTSTATUS  WINAPI NtReadVirtualMemory(HANDLE,const void*,void*,SIZE_T,SIZE_T*);
2172 NTSYSAPI NTSTATUS  WINAPI NtRegisterThreadTerminatePort(HANDLE);
2173 NTSYSAPI NTSTATUS  WINAPI NtReleaseMutant(HANDLE,PLONG);
2174 NTSYSAPI NTSTATUS  WINAPI NtReleaseSemaphore(HANDLE,ULONG,PULONG);
2175 NTSYSAPI NTSTATUS  WINAPI NtRemoveIoCompletion(HANDLE,PULONG_PTR,PULONG_PTR,PIO_STATUS_BLOCK,PLARGE_INTEGER);
2176 NTSYSAPI NTSTATUS  WINAPI NtReplaceKey(POBJECT_ATTRIBUTES,HANDLE,POBJECT_ATTRIBUTES);
2177 NTSYSAPI NTSTATUS  WINAPI NtReplyPort(HANDLE,PLPC_MESSAGE);
2178 NTSYSAPI NTSTATUS  WINAPI NtReplyWaitReceivePort(HANDLE,PULONG,PLPC_MESSAGE,PLPC_MESSAGE);
2179 NTSYSAPI NTSTATUS  WINAPI NtReplyWaitReceivePortEx(HANDLE,PVOID*,PPORT_MESSAGE,PPORT_MESSAGE,PLARGE_INTEGER);
2180 NTSYSAPI NTSTATUS  WINAPI NtReplyWaitReplyPort(HANDLE,PLPC_MESSAGE);
2181 NTSYSAPI NTSTATUS  WINAPI NtRequestPort(HANDLE,PLPC_MESSAGE);
2182 NTSYSAPI NTSTATUS  WINAPI NtRequestWaitReplyPort(HANDLE,PLPC_MESSAGE,PLPC_MESSAGE);
2183 NTSYSAPI NTSTATUS  WINAPI NtResetEvent(HANDLE,PULONG);
2184 NTSYSAPI NTSTATUS  WINAPI NtResetWriteWatch(HANDLE,PVOID,SIZE_T);
2185 NTSYSAPI NTSTATUS  WINAPI NtRestoreKey(HANDLE,HANDLE,ULONG);
2186 NTSYSAPI NTSTATUS  WINAPI NtResumeThread(HANDLE,PULONG);
2187 NTSYSAPI NTSTATUS  WINAPI NtSaveKey(HANDLE,HANDLE);
2188 NTSYSAPI NTSTATUS  WINAPI NtSecureConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PSID,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
2189 NTSYSAPI NTSTATUS  WINAPI NtSetContextThread(HANDLE,const CONTEXT*);
2190 NTSYSAPI NTSTATUS  WINAPI NtSetDefaultHardErrorPort(HANDLE);
2191 NTSYSAPI NTSTATUS  WINAPI NtSetDefaultLocale(BOOLEAN,LCID);
2192 NTSYSAPI NTSTATUS  WINAPI NtSetDefaultUILanguage(LANGID);
2193 NTSYSAPI NTSTATUS  WINAPI NtSetEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG);
2194 NTSYSAPI NTSTATUS  WINAPI NtSetEvent(HANDLE,PULONG);
2195 NTSYSAPI NTSTATUS  WINAPI NtSetHighEventPair(HANDLE);
2196 NTSYSAPI NTSTATUS  WINAPI NtSetHighWaitLowEventPair(HANDLE);
2197 NTSYSAPI NTSTATUS  WINAPI NtSetHighWaitLowThread(VOID);
2198 NTSYSAPI NTSTATUS  WINAPI NtSetInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS);
2199 NTSYSAPI NTSTATUS  WINAPI NtSetInformationJobObject(HANDLE,JOBOBJECTINFOCLASS,PVOID,ULONG);
2200 NTSYSAPI NTSTATUS  WINAPI NtSetInformationKey(HANDLE,const int,PVOID,ULONG);
2201 NTSYSAPI NTSTATUS  WINAPI NtSetInformationObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG);
2202 NTSYSAPI NTSTATUS  WINAPI NtSetInformationProcess(HANDLE,PROCESS_INFORMATION_CLASS,PVOID,ULONG);
2203 NTSYSAPI NTSTATUS  WINAPI NtSetInformationThread(HANDLE,THREADINFOCLASS,LPCVOID,ULONG);
2204 NTSYSAPI NTSTATUS  WINAPI NtSetInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG);
2205 NTSYSAPI NTSTATUS  WINAPI NtSetIntervalProfile(ULONG,KPROFILE_SOURCE);
2206 NTSYSAPI NTSTATUS  WINAPI NtSetIoCompletion(HANDLE,ULONG_PTR,ULONG_PTR,NTSTATUS,ULONG);
2207 NTSYSAPI NTSTATUS  WINAPI NtSetLdtEntries(ULONG,LDT_ENTRY,ULONG,LDT_ENTRY);
2208 NTSYSAPI NTSTATUS  WINAPI NtSetLowEventPair(HANDLE);
2209 NTSYSAPI NTSTATUS  WINAPI NtSetLowWaitHighEventPair(HANDLE);
2210 NTSYSAPI NTSTATUS  WINAPI NtSetLowWaitHighThread(VOID);
2211 NTSYSAPI NTSTATUS  WINAPI NtSetSecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
2212 NTSYSAPI NTSTATUS  WINAPI NtSetSystemEnvironmentValue(PUNICODE_STRING,PUNICODE_STRING);
2213 NTSYSAPI NTSTATUS  WINAPI NtSetSystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG);
2214 NTSYSAPI NTSTATUS  WINAPI NtSetSystemPowerState(POWER_ACTION,SYSTEM_POWER_STATE,ULONG);
2215 NTSYSAPI NTSTATUS  WINAPI NtSetSystemTime(const LARGE_INTEGER*,LARGE_INTEGER*);
2216 NTSYSAPI NTSTATUS  WINAPI NtSetTimer(HANDLE, const LARGE_INTEGER*, PTIMER_APC_ROUTINE, PVOID, BOOLEAN, ULONG, BOOLEAN*);
2217 NTSYSAPI NTSTATUS  WINAPI NtSetTimerResolution(ULONG,BOOLEAN,PULONG);
2218 NTSYSAPI NTSTATUS  WINAPI NtSetValueKey(HANDLE,const UNICODE_STRING *,ULONG,ULONG,const void *,ULONG);
2219 NTSYSAPI NTSTATUS  WINAPI NtSetVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
2220 NTSYSAPI NTSTATUS  WINAPI NtSignalAndWaitForSingleObject(HANDLE,HANDLE,BOOLEAN,const LARGE_INTEGER*);
2221 NTSYSAPI NTSTATUS  WINAPI NtShutdownSystem(SHUTDOWN_ACTION);
2222 NTSYSAPI NTSTATUS  WINAPI NtStartProfile(HANDLE);
2223 NTSYSAPI NTSTATUS  WINAPI NtStopProfile(HANDLE);
2224 NTSYSAPI NTSTATUS  WINAPI NtSuspendThread(HANDLE,PULONG);
2225 NTSYSAPI NTSTATUS  WINAPI NtSystemDebugControl(SYSDBG_COMMAND,PVOID,ULONG,PVOID,ULONG,PULONG);
2226 NTSYSAPI NTSTATUS  WINAPI NtTerminateJobObject(HANDLE,NTSTATUS);
2227 NTSYSAPI NTSTATUS  WINAPI NtTerminateProcess(HANDLE,LONG);
2228 NTSYSAPI NTSTATUS  WINAPI NtTerminateThread(HANDLE,LONG);
2229 NTSYSAPI NTSTATUS  WINAPI NtTestAlert(VOID);
2230 NTSYSAPI NTSTATUS  WINAPI NtUnloadDriver(const UNICODE_STRING *);
2231 NTSYSAPI NTSTATUS  WINAPI NtUnloadKey(POBJECT_ATTRIBUTES);
2232 NTSYSAPI NTSTATUS  WINAPI NtUnloadKeyEx(POBJECT_ATTRIBUTES,HANDLE);
2233 NTSYSAPI NTSTATUS  WINAPI NtUnlockFile(HANDLE,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,PULONG);
2234 NTSYSAPI NTSTATUS  WINAPI NtUnlockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
2235 NTSYSAPI NTSTATUS  WINAPI NtUnmapViewOfSection(HANDLE,PVOID);
2236 NTSYSAPI NTSTATUS  WINAPI NtVdmControl(ULONG,PVOID);
2237 NTSYSAPI NTSTATUS  WINAPI NtWaitForSingleObject(HANDLE,BOOLEAN,const LARGE_INTEGER*);
2238 NTSYSAPI NTSTATUS  WINAPI NtWaitForMultipleObjects(ULONG,const HANDLE*,BOOLEAN,BOOLEAN,const LARGE_INTEGER*);
2239 NTSYSAPI NTSTATUS  WINAPI NtWaitHighEventPair(HANDLE);
2240 NTSYSAPI NTSTATUS  WINAPI NtWaitLowEventPair(HANDLE);
2241 NTSYSAPI NTSTATUS  WINAPI NtWriteFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,const void*,ULONG,PLARGE_INTEGER,PULONG);
2242 NTSYSAPI NTSTATUS  WINAPI NtWriteFileGather(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,FILE_SEGMENT_ELEMENT*,ULONG,PLARGE_INTEGER,PULONG);
2243 NTSYSAPI NTSTATUS  WINAPI NtWriteRequestData(HANDLE,PLPC_MESSAGE,ULONG,PVOID,ULONG,PULONG);
2244 NTSYSAPI NTSTATUS  WINAPI NtWriteVirtualMemory(HANDLE,void*,const void*,SIZE_T,SIZE_T*);
2245 NTSYSAPI NTSTATUS  WINAPI NtYieldExecution(void);
2246
2247 NTSYSAPI void      WINAPI RtlAcquirePebLock(void);
2248 NTSYSAPI BYTE      WINAPI RtlAcquireResourceExclusive(LPRTL_RWLOCK,BYTE);
2249 NTSYSAPI BYTE      WINAPI RtlAcquireResourceShared(LPRTL_RWLOCK,BYTE);
2250 NTSYSAPI NTSTATUS  WINAPI RtlActivateActivationContext(DWORD,HANDLE,ULONG_PTR*);
2251 NTSYSAPI NTSTATUS  WINAPI RtlAddAce(PACL,DWORD,DWORD,PACE_HEADER,DWORD);
2252 NTSYSAPI NTSTATUS  WINAPI RtlAddAccessAllowedAce(PACL,DWORD,DWORD,PSID);
2253 NTSYSAPI NTSTATUS  WINAPI RtlAddAccessAllowedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
2254 NTSYSAPI NTSTATUS  WINAPI RtlAddAccessDeniedAce(PACL,DWORD,DWORD,PSID);
2255 NTSYSAPI NTSTATUS  WINAPI RtlAddAccessDeniedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
2256 NTSYSAPI NTSTATUS  WINAPI RtlAddAtomToAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*);
2257 NTSYSAPI NTSTATUS  WINAPI RtlAddAuditAccessAce(PACL,DWORD,DWORD,PSID,BOOL,BOOL);
2258 NTSYSAPI NTSTATUS  WINAPI RtlAddAuditAccessAceEx(PACL,DWORD,DWORD,DWORD,PSID,BOOL,BOOL);
2259 NTSYSAPI void      WINAPI RtlAddRefActivationContext(HANDLE);
2260 NTSYSAPI PVOID     WINAPI RtlAddVectoredExceptionHandler(ULONG,PVECTORED_EXCEPTION_HANDLER);
2261 NTSYSAPI NTSTATUS  WINAPI RtlAdjustPrivilege(ULONG,BOOLEAN,BOOLEAN,PBOOLEAN);
2262 NTSYSAPI NTSTATUS  WINAPI RtlAllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PSID *);
2263 NTSYSAPI RTL_HANDLE * WINAPI RtlAllocateHandle(RTL_HANDLE_TABLE *,ULONG *);
2264 NTSYSAPI PVOID     WINAPI RtlAllocateHeap(HANDLE,ULONG,SIZE_T) __WINE_ALLOC_SIZE(3);
2265 NTSYSAPI WCHAR     WINAPI RtlAnsiCharToUnicodeChar(LPSTR *);
2266 NTSYSAPI DWORD     WINAPI RtlAnsiStringToUnicodeSize(const STRING *);
2267 NTSYSAPI NTSTATUS  WINAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING,PCANSI_STRING,BOOLEAN);
2268 NTSYSAPI NTSTATUS  WINAPI RtlAppendAsciizToString(STRING *,LPCSTR);
2269 NTSYSAPI NTSTATUS  WINAPI RtlAppendStringToString(STRING *,const STRING *);
2270 NTSYSAPI NTSTATUS  WINAPI RtlAppendUnicodeStringToString(UNICODE_STRING *,const UNICODE_STRING *);
2271 NTSYSAPI NTSTATUS  WINAPI RtlAppendUnicodeToString(UNICODE_STRING *,LPCWSTR);
2272 NTSYSAPI BOOLEAN   WINAPI RtlAreAllAccessesGranted(ACCESS_MASK,ACCESS_MASK);
2273 NTSYSAPI BOOLEAN   WINAPI RtlAreAnyAccessesGranted(ACCESS_MASK,ACCESS_MASK);
2274 NTSYSAPI BOOLEAN   WINAPI RtlAreBitsSet(PCRTL_BITMAP,ULONG,ULONG);
2275 NTSYSAPI BOOLEAN   WINAPI RtlAreBitsClear(PCRTL_BITMAP,ULONG,ULONG);
2276 NTSYSAPI NTSTATUS  WINAPI RtlCharToInteger(PCSZ,ULONG,PULONG);
2277 NTSYSAPI NTSTATUS  WINAPI RtlCheckRegistryKey(ULONG, PWSTR);
2278 NTSYSAPI void      WINAPI RtlClearAllBits(PRTL_BITMAP);
2279 NTSYSAPI void      WINAPI RtlClearBits(PRTL_BITMAP,ULONG,ULONG);
2280 NTSYSAPI NTSTATUS  WINAPI RtlCreateActivationContext(HANDLE*,const void*);
2281 NTSYSAPI PDEBUG_BUFFER WINAPI RtlCreateQueryDebugBuffer(ULONG,BOOLEAN);
2282 NTSYSAPI ULONG     WINAPI RtlCompactHeap(HANDLE,ULONG);
2283 NTSYSAPI LONG      WINAPI RtlCompareString(const STRING*,const STRING*,BOOLEAN);
2284 NTSYSAPI LONG      WINAPI RtlCompareUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
2285 NTSYSAPI NTSTATUS  WINAPI RtlCompressBuffer(USHORT,PUCHAR,ULONG,PUCHAR,ULONG,ULONG,PULONG,PVOID);
2286 NTSYSAPI DWORD     WINAPI RtlComputeCrc32(DWORD,const BYTE*,INT);
2287 NTSYSAPI NTSTATUS  WINAPI RtlConvertSidToUnicodeString(PUNICODE_STRING,PSID,BOOLEAN);
2288 NTSYSAPI void      WINAPI RtlCopyLuid(PLUID,const LUID*);
2289 NTSYSAPI void      WINAPI RtlCopyLuidAndAttributesArray(ULONG,const LUID_AND_ATTRIBUTES*,PLUID_AND_ATTRIBUTES);
2290 NTSYSAPI BOOLEAN   WINAPI RtlCopySid(DWORD,PSID,PSID);
2291 NTSYSAPI NTSTATUS  WINAPI RtlCopySecurityDescriptor(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR);
2292 NTSYSAPI void      WINAPI RtlCopyString(STRING*,const STRING*);
2293 NTSYSAPI void      WINAPI RtlCopyUnicodeString(UNICODE_STRING*,const UNICODE_STRING*);
2294 NTSYSAPI NTSTATUS  WINAPI RtlCreateAcl(PACL,DWORD,DWORD);
2295 NTSYSAPI NTSTATUS  WINAPI RtlCreateAtomTable(ULONG,RTL_ATOM_TABLE*);
2296 NTSYSAPI NTSTATUS  WINAPI RtlCreateEnvironment(BOOLEAN, PWSTR*);
2297 NTSYSAPI HANDLE    WINAPI RtlCreateHeap(ULONG,PVOID,SIZE_T,SIZE_T,PVOID,PRTL_HEAP_DEFINITION);
2298 NTSYSAPI NTSTATUS  WINAPI RtlCreateProcessParameters(RTL_USER_PROCESS_PARAMETERS**,const UNICODE_STRING*,const UNICODE_STRING*,const UNICODE_STRING*,const UNICODE_STRING*,PWSTR,const UNICODE_STRING*,const UNICODE_STRING*,const UNICODE_STRING*,const UNICODE_STRING*);
2299 NTSYSAPI NTSTATUS  WINAPI RtlCreateSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD);
2300 NTSYSAPI NTSTATUS  WINAPI RtlCreateTimerQueue(PHANDLE);
2301 NTSYSAPI NTSTATUS  WINAPI RtlCreateTimer(PHANDLE, HANDLE, RTL_WAITORTIMERCALLBACKFUNC, PVOID, DWORD, DWORD, ULONG);
2302 NTSYSAPI BOOLEAN   WINAPI RtlCreateUnicodeString(PUNICODE_STRING,LPCWSTR);
2303 NTSYSAPI BOOLEAN   WINAPI RtlCreateUnicodeStringFromAsciiz(PUNICODE_STRING,LPCSTR);
2304 NTSYSAPI NTSTATUS  WINAPI RtlCreateUserThread(HANDLE,const SECURITY_DESCRIPTOR*,BOOLEAN,PVOID,SIZE_T,SIZE_T,PRTL_THREAD_START_ROUTINE,void*,HANDLE*,CLIENT_ID*);
2305 NTSYSAPI void      WINAPI RtlDeactivateActivationContext(DWORD,ULONG_PTR);
2306 NTSYSAPI PVOID     WINAPI RtlDecodePointer(PVOID);
2307 NTSYSAPI NTSTATUS  WINAPI RtlDecompressBuffer(USHORT,PUCHAR,ULONG,PUCHAR,ULONG,PULONG);
2308 NTSYSAPI NTSTATUS  WINAPI RtlDeleteAce(PACL,DWORD);
2309 NTSYSAPI NTSTATUS  WINAPI RtlDeleteAtomFromAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
2310 NTSYSAPI NTSTATUS  WINAPI RtlDeleteCriticalSection(RTL_CRITICAL_SECTION *);
2311 NTSYSAPI NTSTATUS  WINAPI RtlDeleteRegistryValue(ULONG, PCWSTR, PCWSTR);
2312 NTSYSAPI void      WINAPI RtlDeleteResource(LPRTL_RWLOCK);
2313 NTSYSAPI NTSTATUS  WINAPI RtlDeleteSecurityObject(PSECURITY_DESCRIPTOR*);
2314 NTSYSAPI NTSTATUS  WINAPI RtlDeleteTimer(HANDLE, HANDLE, HANDLE);
2315 NTSYSAPI NTSTATUS  WINAPI RtlDeleteTimerQueueEx(HANDLE, HANDLE);
2316 NTSYSAPI PRTL_USER_PROCESS_PARAMETERS WINAPI RtlDeNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
2317 NTSYSAPI NTSTATUS  WINAPI RtlDeregisterWait(HANDLE);
2318 NTSYSAPI NTSTATUS  WINAPI RtlDeregisterWaitEx(HANDLE,HANDLE);
2319 NTSYSAPI NTSTATUS  WINAPI RtlDestroyAtomTable(RTL_ATOM_TABLE);
2320 NTSYSAPI NTSTATUS  WINAPI RtlDestroyEnvironment(PWSTR);
2321 NTSYSAPI NTSTATUS  WINAPI RtlDestroyHandleTable(RTL_HANDLE_TABLE *);
2322 NTSYSAPI HANDLE    WINAPI RtlDestroyHeap(HANDLE);
2323 NTSYSAPI void      WINAPI RtlDestroyProcessParameters(RTL_USER_PROCESS_PARAMETERS*);
2324 NTSYSAPI NTSTATUS  WINAPI RtlDestroyQueryDebugBuffer(PDEBUG_BUFFER);
2325 NTSYSAPI DOS_PATHNAME_TYPE WINAPI RtlDetermineDosPathNameType_U(PCWSTR);
2326 NTSYSAPI BOOLEAN   WINAPI RtlDllShutdownInProgress(void);
2327 NTSYSAPI BOOLEAN   WINAPI RtlDoesFileExists_U(LPCWSTR);
2328 NTSYSAPI BOOLEAN   WINAPI RtlDosPathNameToNtPathName_U(PCWSTR,PUNICODE_STRING,PWSTR*,CURDIR*);
2329 NTSYSAPI ULONG     WINAPI RtlDosSearchPath_U(LPCWSTR, LPCWSTR, LPCWSTR, ULONG, LPWSTR, LPWSTR*);
2330 NTSYSAPI WCHAR     WINAPI RtlDowncaseUnicodeChar(WCHAR);
2331 NTSYSAPI NTSTATUS  WINAPI RtlDowncaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
2332 NTSYSAPI void      WINAPI RtlDumpResource(LPRTL_RWLOCK);
2333 NTSYSAPI NTSTATUS  WINAPI RtlDuplicateUnicodeString(int,const UNICODE_STRING*,UNICODE_STRING*);
2334 NTSYSAPI NTSTATUS  WINAPI RtlEmptyAtomTable(RTL_ATOM_TABLE,BOOLEAN);
2335 NTSYSAPI PVOID     WINAPI RtlEncodePointer(PVOID);
2336 NTSYSAPI NTSTATUS  WINAPI RtlEnterCriticalSection(RTL_CRITICAL_SECTION *);
2337 NTSYSAPI void      WINAPI RtlEraseUnicodeString(UNICODE_STRING*);
2338 NTSYSAPI NTSTATUS  WINAPI RtlEqualComputerName(const UNICODE_STRING*,const UNICODE_STRING*);
2339 NTSYSAPI NTSTATUS  WINAPI RtlEqualDomainName(const UNICODE_STRING*,const UNICODE_STRING*);
2340 NTSYSAPI BOOLEAN   WINAPI RtlEqualLuid(const LUID*,const LUID*);
2341 NTSYSAPI BOOL      WINAPI RtlEqualPrefixSid(PSID,PSID);
2342 NTSYSAPI BOOL      WINAPI RtlEqualSid(PSID,PSID);
2343 NTSYSAPI BOOLEAN   WINAPI RtlEqualString(const STRING*,const STRING*,BOOLEAN);
2344 NTSYSAPI BOOLEAN   WINAPI RtlEqualUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
2345 NTSYSAPI void      DECLSPEC_NORETURN WINAPI RtlExitUserThread(ULONG);
2346 NTSYSAPI NTSTATUS  WINAPI RtlExpandEnvironmentStrings_U(PCWSTR, const UNICODE_STRING*, UNICODE_STRING*, ULONG*);
2347 NTSYSAPI NTSTATUS  WINAPI RtlFindActivationContextSectionString(ULONG,const GUID*,ULONG,const UNICODE_STRING*,PVOID);
2348 NTSYSAPI NTSTATUS  WINAPI RtlFindCharInUnicodeString(int,const UNICODE_STRING*,const UNICODE_STRING*,USHORT*);
2349 NTSYSAPI ULONG     WINAPI RtlFindClearBits(PCRTL_BITMAP,ULONG,ULONG);
2350 NTSYSAPI ULONG     WINAPI RtlFindClearBitsAndSet(PRTL_BITMAP,ULONG,ULONG);
2351 NTSYSAPI ULONG     WINAPI RtlFindClearRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
2352 NTSYSAPI ULONG     WINAPI RtlFindLastBackwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
2353 NTSYSAPI ULONG     WINAPI RtlFindLastBackwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
2354 NTSYSAPI CCHAR     WINAPI RtlFindLeastSignificantBit(ULONGLONG);
2355 NTSYSAPI ULONG     WINAPI RtlFindLongestRunSet(PCRTL_BITMAP,PULONG);
2356 NTSYSAPI ULONG     WINAPI RtlFindLongestRunClear(PCRTL_BITMAP,PULONG);
2357 NTSYSAPI NTSTATUS  WINAPI RtlFindMessage(HMODULE,ULONG,ULONG,ULONG,const MESSAGE_RESOURCE_ENTRY**);
2358 NTSYSAPI CCHAR     WINAPI RtlFindMostSignificantBit(ULONGLONG);
2359 NTSYSAPI ULONG     WINAPI RtlFindNextForwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
2360 NTSYSAPI ULONG     WINAPI RtlFindNextForwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
2361 NTSYSAPI ULONG     WINAPI RtlFindSetBits(PCRTL_BITMAP,ULONG,ULONG);
2362 NTSYSAPI ULONG     WINAPI RtlFindSetBitsAndClear(PRTL_BITMAP,ULONG,ULONG);
2363 NTSYSAPI ULONG     WINAPI RtlFindSetRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
2364 NTSYSAPI BOOLEAN   WINAPI RtlFirstFreeAce(PACL,PACE_HEADER *);
2365 NTSYSAPI NTSTATUS  WINAPI RtlFormatCurrentUserKeyPath(PUNICODE_STRING);
2366 NTSYSAPI NTSTATUS  WINAPI RtlFormatMessage(LPWSTR,UCHAR,BOOLEAN,BOOLEAN,BOOLEAN,__ms_va_list *,LPWSTR,ULONG);
2367 NTSYSAPI void      WINAPI RtlFreeAnsiString(PANSI_STRING);
2368 NTSYSAPI BOOLEAN   WINAPI RtlFreeHandle(RTL_HANDLE_TABLE *,RTL_HANDLE *);
2369 NTSYSAPI BOOLEAN   WINAPI RtlFreeHeap(HANDLE,ULONG,PVOID);
2370 NTSYSAPI void      WINAPI RtlFreeOemString(POEM_STRING);
2371 NTSYSAPI DWORD     WINAPI RtlFreeSid(PSID);
2372 NTSYSAPI void      WINAPI RtlFreeThreadActivationContextStack(void);
2373 NTSYSAPI void      WINAPI RtlFreeUnicodeString(PUNICODE_STRING);
2374 NTSYSAPI NTSTATUS  WINAPI RtlGetAce(PACL,DWORD,LPVOID *);
2375 NTSYSAPI NTSTATUS  WINAPI RtlGetActiveActivationContext(HANDLE*);
2376 NTSYSAPI NTSTATUS  WINAPI RtlGetCompressionWorkSpaceSize(USHORT,PULONG,PULONG);
2377 NTSYSAPI NTSTATUS  WINAPI RtlGetControlSecurityDescriptor(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL,LPDWORD);
2378 NTSYSAPI NTSTATUS  WINAPI RtlGetCurrentDirectory_U(ULONG, LPWSTR);
2379 NTSYSAPI PEB *     WINAPI RtlGetCurrentPeb(void);
2380 NTSYSAPI NTSTATUS  WINAPI RtlGetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
2381 NTSYSAPI ULONG     WINAPI RtlGetFullPathName_U(PCWSTR,ULONG,PWSTR,PWSTR*);
2382 NTSYSAPI NTSTATUS  WINAPI RtlGetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
2383 NTSYSAPI NTSTATUS  WINAPI RtlGetLastNtStatus(void);
2384 NTSYSAPI DWORD     WINAPI RtlGetLastWin32Error(void);
2385 NTSYSAPI DWORD     WINAPI RtlGetLongestNtPathLength(void);
2386 NTSYSAPI ULONG     WINAPI RtlGetNtGlobalFlags(void);
2387 NTSYSAPI BOOLEAN   WINAPI RtlGetNtProductType(LPDWORD);
2388 NTSYSAPI NTSTATUS  WINAPI RtlGetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
2389 NTSYSAPI ULONG     WINAPI RtlGetProcessHeaps(ULONG,HANDLE*);
2390 NTSYSAPI DWORD     WINAPI RtlGetThreadErrorMode(void);
2391 NTSYSAPI NTSTATUS  WINAPI RtlGetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
2392 NTSYSAPI NTSTATUS  WINAPI RtlGetVersion(RTL_OSVERSIONINFOEXW*);
2393 NTSYSAPI NTSTATUS  WINAPI RtlGUIDFromString(PUNICODE_STRING,GUID*);
2394 NTSYSAPI PSID_IDENTIFIER_AUTHORITY WINAPI RtlIdentifierAuthoritySid(PSID);
2395 NTSYSAPI PVOID     WINAPI RtlImageDirectoryEntryToData(HMODULE,BOOL,WORD,ULONG *);
2396 NTSYSAPI PIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE);
2397 NTSYSAPI PIMAGE_SECTION_HEADER WINAPI RtlImageRvaToSection(const IMAGE_NT_HEADERS *,HMODULE,DWORD);
2398 NTSYSAPI PVOID     WINAPI RtlImageRvaToVa(const IMAGE_NT_HEADERS *,HMODULE,DWORD,IMAGE_SECTION_HEADER **);
2399 NTSYSAPI NTSTATUS  WINAPI RtlImpersonateSelf(SECURITY_IMPERSONATION_LEVEL);
2400 NTSYSAPI void      WINAPI RtlInitString(PSTRING,PCSZ);
2401 NTSYSAPI void      WINAPI RtlInitAnsiString(PANSI_STRING,PCSZ);
2402 NTSYSAPI NTSTATUS  WINAPI RtlInitAnsiStringEx(PANSI_STRING,PCSZ);
2403 NTSYSAPI void      WINAPI RtlInitUnicodeString(PUNICODE_STRING,PCWSTR);
2404 NTSYSAPI NTSTATUS  WINAPI RtlInitUnicodeStringEx(PUNICODE_STRING,PCWSTR);
2405 NTSYSAPI NTSTATUS  WINAPI RtlInitializeCriticalSection(RTL_CRITICAL_SECTION *);
2406 NTSYSAPI NTSTATUS  WINAPI RtlInitializeCriticalSectionAndSpinCount(RTL_CRITICAL_SECTION *,ULONG);
2407 NTSYSAPI NTSTATUS  WINAPI RtlInitializeCriticalSectionEx(RTL_CRITICAL_SECTION *,ULONG,ULONG);
2408 NTSYSAPI void      WINAPI RtlInitializeBitMap(PRTL_BITMAP,PULONG,ULONG);
2409 NTSYSAPI void      WINAPI RtlInitializeHandleTable(ULONG,ULONG,RTL_HANDLE_TABLE *);
2410 NTSYSAPI void      WINAPI RtlInitializeResource(LPRTL_RWLOCK);
2411 NTSYSAPI BOOL      WINAPI RtlInitializeSid(PSID,PSID_IDENTIFIER_AUTHORITY,BYTE);
2412 NTSYSAPI NTSTATUS  WINAPI RtlInt64ToUnicodeString(ULONGLONG,ULONG,UNICODE_STRING *);
2413 NTSYSAPI NTSTATUS  WINAPI RtlIntegerToChar(ULONG,ULONG,ULONG,PCHAR);
2414 NTSYSAPI NTSTATUS  WINAPI RtlIntegerToUnicodeString(ULONG,ULONG,UNICODE_STRING *);
2415 NTSYSAPI BOOLEAN   WINAPI RtlIsActivationContextActive(HANDLE);
2416 NTSYSAPI ULONG     WINAPI RtlIsDosDeviceName_U(PCWSTR);
2417 NTSYSAPI BOOLEAN   WINAPI RtlIsNameLegalDOS8Dot3(const UNICODE_STRING*,POEM_STRING,PBOOLEAN);
2418 NTSYSAPI BOOLEAN   WINAPI RtlIsTextUnicode(LPCVOID,INT,INT *);
2419 NTSYSAPI BOOLEAN   WINAPI RtlIsValidHandle(const RTL_HANDLE_TABLE *, const RTL_HANDLE *);
2420 NTSYSAPI BOOLEAN   WINAPI RtlIsValidIndexHandle(const RTL_HANDLE_TABLE *, ULONG Index, RTL_HANDLE **);
2421 NTSYSAPI NTSTATUS  WINAPI RtlLeaveCriticalSection(RTL_CRITICAL_SECTION *);
2422 NTSYSAPI DWORD     WINAPI RtlLengthRequiredSid(DWORD);
2423 NTSYSAPI ULONG     WINAPI RtlLengthSecurityDescriptor(PSECURITY_DESCRIPTOR);
2424 NTSYSAPI DWORD     WINAPI RtlLengthSid(PSID);
2425 NTSYSAPI NTSTATUS  WINAPI RtlLocalTimeToSystemTime(const LARGE_INTEGER*,PLARGE_INTEGER);
2426 NTSYSAPI BOOLEAN   WINAPI RtlLockHeap(HANDLE);
2427 NTSYSAPI NTSTATUS  WINAPI RtlLookupAtomInAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*);
2428 NTSYSAPI NTSTATUS  WINAPI RtlMakeSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,LPDWORD);
2429 NTSYSAPI void      WINAPI RtlMapGenericMask(PACCESS_MASK,const GENERIC_MAPPING*);
2430 NTSYSAPI NTSTATUS  WINAPI RtlMultiByteToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
2431 NTSYSAPI NTSTATUS  WINAPI RtlMultiByteToUnicodeSize(DWORD*,LPCSTR,UINT);
2432 NTSYSAPI NTSTATUS  WINAPI RtlNewSecurityObject(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,BOOLEAN,HANDLE,PGENERIC_MAPPING);
2433 NTSYSAPI PRTL_USER_PROCESS_PARAMETERS WINAPI RtlNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
2434 NTSYSAPI ULONG     WINAPI RtlNtStatusToDosError(NTSTATUS);
2435 NTSYSAPI ULONG     WINAPI RtlNtStatusToDosErrorNoTeb(NTSTATUS);
2436 NTSYSAPI ULONG     WINAPI RtlNumberOfSetBits(PCRTL_BITMAP);
2437 NTSYSAPI ULONG     WINAPI RtlNumberOfClearBits(PCRTL_BITMAP);
2438 NTSYSAPI UINT      WINAPI RtlOemStringToUnicodeSize(const STRING*);
2439 NTSYSAPI NTSTATUS  WINAPI RtlOemStringToUnicodeString(UNICODE_STRING*,const STRING*,BOOLEAN);
2440 NTSYSAPI NTSTATUS  WINAPI RtlOemToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
2441 NTSYSAPI NTSTATUS  WINAPI RtlOpenCurrentUser(ACCESS_MASK,PHANDLE);
2442 NTSYSAPI PVOID     WINAPI RtlPcToFileHeader(PVOID,PVOID*);
2443 NTSYSAPI NTSTATUS  WINAPI RtlPinAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
2444 NTSYSAPI BOOLEAN   WINAPI RtlPrefixString(const STRING*,const STRING*,BOOLEAN);
2445 NTSYSAPI BOOLEAN   WINAPI RtlPrefixUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
2446 NTSYSAPI NTSTATUS  WINAPI RtlQueryAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM,ULONG*,ULONG*,WCHAR*,ULONG*);
2447 NTSYSAPI NTSTATUS  WINAPI RtlQueryEnvironmentVariable_U(PWSTR,PUNICODE_STRING,PUNICODE_STRING);
2448 NTSYSAPI NTSTATUS  WINAPI RtlQueryHeapInformation(HANDLE,HEAP_INFORMATION_CLASS,PVOID,SIZE_T,PSIZE_T);
2449 NTSYSAPI NTSTATUS  WINAPI RtlQueryInformationAcl(PACL,LPVOID,DWORD,ACL_INFORMATION_CLASS);
2450 NTSYSAPI NTSTATUS  WINAPI RtlQueryInformationActivationContext(ULONG,HANDLE,PVOID,ULONG,PVOID,SIZE_T,SIZE_T*);
2451 NTSYSAPI NTSTATUS  WINAPI RtlQueryProcessDebugInformation(ULONG,ULONG,PDEBUG_BUFFER);
2452 NTSYSAPI NTSTATUS  WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID);
2453 NTSYSAPI NTSTATUS  WINAPI RtlQueryTimeZoneInformation(RTL_TIME_ZONE_INFORMATION*);
2454 NTSYSAPI NTSTATUS  WINAPI RtlQueueWorkItem(PRTL_WORK_ITEM_ROUTINE,PVOID,ULONG);
2455 NTSYSAPI void      WINAPI RtlRaiseException(PEXCEPTION_RECORD);
2456 NTSYSAPI void      WINAPI RtlRaiseStatus(NTSTATUS);
2457 NTSYSAPI ULONG     WINAPI RtlRandom(PULONG);
2458 NTSYSAPI PVOID     WINAPI RtlReAllocateHeap(HANDLE,ULONG,PVOID,SIZE_T);
2459 NTSYSAPI NTSTATUS  WINAPI RtlRegisterWait(PHANDLE,HANDLE,RTL_WAITORTIMERCALLBACKFUNC,PVOID,ULONG,ULONG);
2460 NTSYSAPI void      WINAPI RtlReleaseActivationContext(HANDLE);
2461 NTSYSAPI void      WINAPI RtlReleasePebLock(void);
2462 NTSYSAPI void      WINAPI RtlReleaseResource(LPRTL_RWLOCK);
2463 NTSYSAPI ULONG     WINAPI RtlRemoveVectoredExceptionHandler(PVOID);
2464 NTSYSAPI void      WINAPI RtlRestoreLastWin32Error(DWORD);
2465 NTSYSAPI void      WINAPI RtlSecondsSince1970ToTime(DWORD,LARGE_INTEGER *);
2466 NTSYSAPI void      WINAPI RtlSecondsSince1980ToTime(DWORD,LARGE_INTEGER *);
2467 NTSYSAPI NTSTATUS  WINAPI RtlSelfRelativeToAbsoluteSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PDWORD,PACL,PDWORD,PACL,PDWORD,PSID,PDWORD,PSID,PDWORD);
2468 NTSYSAPI void      WINAPI RtlSetAllBits(PRTL_BITMAP);
2469 NTSYSAPI void      WINAPI RtlSetBits(PRTL_BITMAP,ULONG,ULONG);
2470 NTSYSAPI ULONG     WINAPI RtlSetCriticalSectionSpinCount(RTL_CRITICAL_SECTION*,ULONG);
2471 NTSYSAPI NTSTATUS  WINAPI RtlSetControlSecurityDescriptor(PSECURITY_DESCRIPTOR,SECURITY_DESCRIPTOR_CONTROL,SECURITY_DESCRIPTOR_CONTROL);
2472 NTSYSAPI NTSTATUS  WINAPI RtlSetCurrentDirectory_U(const UNICODE_STRING*);
2473 NTSYSAPI void      WINAPI RtlSetCurrentEnvironment(PWSTR, PWSTR*);
2474 NTSYSAPI NTSTATUS  WINAPI RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
2475 NTSYSAPI NTSTATUS  WINAPI RtlSetEnvironmentVariable(PWSTR*,PUNICODE_STRING,PUNICODE_STRING);
2476 NTSYSAPI NTSTATUS  WINAPI RtlSetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
2477 NTSYSAPI NTSTATUS  WINAPI RtlSetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
2478 NTSYSAPI NTSTATUS  WINAPI RtlSetIoCompletionCallback(HANDLE,PRTL_OVERLAPPED_COMPLETION_ROUTINE,ULONG);
2479 NTSYSAPI void      WINAPI RtlSetLastWin32Error(DWORD);
2480 NTSYSAPI void      WINAPI RtlSetLastWin32ErrorAndNtStatusFromNtStatus(NTSTATUS);
2481 NTSYSAPI NTSTATUS  WINAPI RtlSetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
2482 NTSYSAPI NTSTATUS  WINAPI RtlSetThreadErrorMode(DWORD,LPDWORD);
2483 NTSYSAPI NTSTATUS  WINAPI RtlSetTimeZoneInformation(const RTL_TIME_ZONE_INFORMATION*);
2484 NTSYSAPI SIZE_T    WINAPI RtlSizeHeap(HANDLE,ULONG,const void*);
2485 NTSYSAPI NTSTATUS  WINAPI RtlStringFromGUID(REFGUID,PUNICODE_STRING);
2486 NTSYSAPI LPDWORD   WINAPI RtlSubAuthoritySid(PSID,DWORD);
2487 NTSYSAPI LPBYTE    WINAPI RtlSubAuthorityCountSid(PSID);
2488 NTSYSAPI NTSTATUS  WINAPI RtlSystemTimeToLocalTime(const LARGE_INTEGER*,PLARGE_INTEGER);
2489 NTSYSAPI void      WINAPI RtlTimeToTimeFields(const LARGE_INTEGER*,PTIME_FIELDS);
2490 NTSYSAPI BOOLEAN   WINAPI RtlTimeFieldsToTime(PTIME_FIELDS,PLARGE_INTEGER);
2491 NTSYSAPI void      WINAPI RtlTimeToElapsedTimeFields(const LARGE_INTEGER *,PTIME_FIELDS);
2492 NTSYSAPI BOOLEAN   WINAPI RtlTimeToSecondsSince1970(const LARGE_INTEGER *,LPDWORD);
2493 NTSYSAPI BOOLEAN   WINAPI RtlTimeToSecondsSince1980(const LARGE_INTEGER *,LPDWORD);
2494 NTSYSAPI BOOL      WINAPI RtlTryEnterCriticalSection(RTL_CRITICAL_SECTION *);
2495 NTSYSAPI ULONGLONG __cdecl RtlUlonglongByteSwap(ULONGLONG);
2496 NTSYSAPI DWORD     WINAPI RtlUnicodeStringToAnsiSize(const UNICODE_STRING*);
2497 NTSYSAPI NTSTATUS  WINAPI RtlUnicodeStringToAnsiString(PANSI_STRING,PCUNICODE_STRING,BOOLEAN);
2498 NTSYSAPI NTSTATUS  WINAPI RtlUnicodeStringToInteger(const UNICODE_STRING *,ULONG,ULONG *);
2499 NTSYSAPI DWORD     WINAPI RtlUnicodeStringToOemSize(const UNICODE_STRING*);
2500 NTSYSAPI NTSTATUS  WINAPI RtlUnicodeStringToOemString(POEM_STRING,PCUNICODE_STRING,BOOLEAN);
2501 NTSYSAPI NTSTATUS  WINAPI RtlUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2502 NTSYSAPI NTSTATUS  WINAPI RtlUnicodeToMultiByteSize(PULONG,PCWSTR,ULONG);
2503 NTSYSAPI NTSTATUS  WINAPI RtlUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2504 NTSYSAPI ULONG     WINAPI RtlUniform(PULONG);
2505 NTSYSAPI BOOLEAN   WINAPI RtlUnlockHeap(HANDLE);
2506 NTSYSAPI void      WINAPI RtlUnwind(PVOID,PVOID,PEXCEPTION_RECORD,PVOID);
2507 #ifdef __x86_64__
2508 NTSYSAPI void      WINAPI RtlUnwindEx(PVOID,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT,PUNWIND_HISTORY_TABLE);
2509 #elif defined(__ia64__)
2510 NTSYSAPI void      WINAPI RtlUnwind2(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT);
2511 NTSYSAPI void      WINAPI RtlUnwindEx(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT,PUNWIND_HISTORY_TABLE);
2512 #endif
2513 NTSYSAPI WCHAR     WINAPI RtlUpcaseUnicodeChar(WCHAR);
2514 NTSYSAPI NTSTATUS  WINAPI RtlUpcaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING *,BOOLEAN);
2515 NTSYSAPI NTSTATUS  WINAPI RtlUpcaseUnicodeStringToAnsiString(STRING*,const UNICODE_STRING*,BOOLEAN);
2516 NTSYSAPI NTSTATUS  WINAPI RtlUpcaseUnicodeStringToCountedOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
2517 NTSYSAPI NTSTATUS  WINAPI RtlUpcaseUnicodeStringToOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
2518 NTSYSAPI NTSTATUS  WINAPI RtlUpcaseUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2519 NTSYSAPI NTSTATUS  WINAPI RtlUpcaseUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2520 NTSYSAPI NTSTATUS  WINAPI RtlUpdateTimer(HANDLE, HANDLE, DWORD, DWORD);
2521 NTSYSAPI CHAR      WINAPI RtlUpperChar(CHAR);
2522 NTSYSAPI void      WINAPI RtlUpperString(STRING *,const STRING *);
2523 NTSYSAPI NTSTATUS  WINAPI RtlValidSecurityDescriptor(PSECURITY_DESCRIPTOR);
2524 NTSYSAPI BOOLEAN   WINAPI RtlValidAcl(PACL);
2525 NTSYSAPI BOOLEAN   WINAPI RtlValidSid(PSID);
2526 NTSYSAPI BOOLEAN   WINAPI RtlValidateHeap(HANDLE,ULONG,LPCVOID);
2527 NTSYSAPI NTSTATUS  WINAPI RtlVerifyVersionInfo(const RTL_OSVERSIONINFOEXW*,DWORD,DWORDLONG);
2528 NTSYSAPI NTSTATUS  WINAPI RtlWalkHeap(HANDLE,PVOID);
2529 NTSYSAPI NTSTATUS  WINAPI RtlWow64EnableFsRedirection(BOOLEAN);
2530 NTSYSAPI NTSTATUS  WINAPI RtlWow64EnableFsRedirectionEx(ULONG,ULONG*);
2531 NTSYSAPI NTSTATUS  WINAPI RtlWriteRegistryValue(ULONG,PCWSTR,PCWSTR,ULONG,PVOID,ULONG);
2532 NTSYSAPI NTSTATUS  WINAPI RtlpNtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
2533 NTSYSAPI NTSTATUS  WINAPI RtlpNtEnumerateSubKey(HANDLE,UNICODE_STRING *, ULONG);
2534 NTSYSAPI NTSTATUS  WINAPI RtlpWaitForCriticalSection(RTL_CRITICAL_SECTION *);
2535 NTSYSAPI NTSTATUS  WINAPI RtlpUnWaitCriticalSection(RTL_CRITICAL_SECTION *);
2536 NTSYSAPI NTSTATUS  WINAPI vDbgPrintEx(ULONG,ULONG,LPCSTR,__ms_va_list);
2537 NTSYSAPI NTSTATUS  WINAPI vDbgPrintExWithPrefix(LPCSTR,ULONG,ULONG,LPCSTR,__ms_va_list);
2538
2539 /* 32-bit only functions */
2540
2541 #ifndef _WIN64
2542 NTSYSAPI LONGLONG  WINAPI RtlConvertLongToLargeInteger(LONG);
2543 NTSYSAPI ULONGLONG WINAPI RtlConvertUlongToLargeInteger(ULONG);
2544 NTSYSAPI LONGLONG  WINAPI RtlEnlargedIntegerMultiply(INT,INT);
2545 NTSYSAPI ULONGLONG WINAPI RtlEnlargedUnsignedMultiply(UINT,UINT);
2546 NTSYSAPI UINT      WINAPI RtlEnlargedUnsignedDivide(ULONGLONG,UINT,UINT *);
2547 NTSYSAPI LONGLONG  WINAPI RtlExtendedMagicDivide(LONGLONG,LONGLONG,INT);
2548 NTSYSAPI LONGLONG  WINAPI RtlExtendedIntegerMultiply(LONGLONG,INT);
2549 NTSYSAPI LONGLONG  WINAPI RtlExtendedLargeIntegerDivide(LONGLONG,INT,INT *);
2550 NTSYSAPI LONGLONG  WINAPI RtlLargeIntegerAdd(LONGLONG,LONGLONG);
2551 NTSYSAPI LONGLONG  WINAPI RtlLargeIntegerArithmeticShift(LONGLONG,INT);
2552 NTSYSAPI ULONGLONG WINAPI RtlLargeIntegerDivide( ULONGLONG,ULONGLONG,ULONGLONG *);
2553 NTSYSAPI LONGLONG  WINAPI RtlLargeIntegerNegate(LONGLONG);
2554 NTSYSAPI LONGLONG  WINAPI RtlLargeIntegerShiftLeft(LONGLONG,INT);
2555 NTSYSAPI LONGLONG  WINAPI RtlLargeIntegerShiftRight(LONGLONG,INT);
2556 NTSYSAPI LONGLONG  WINAPI RtlLargeIntegerSubtract(LONGLONG,LONGLONG);
2557 NTSYSAPI NTSTATUS  WINAPI RtlLargeIntegerToChar(const ULONGLONG *,ULONG,ULONG,PCHAR);
2558 #endif
2559
2560 /* Wine internal functions */
2561
2562 NTSYSAPI NTSTATUS CDECL wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRING *unix_name_ret,
2563                                                    UINT disposition, BOOLEAN check_case );
2564 NTSYSAPI NTSTATUS CDECL wine_unix_to_nt_file_name( const ANSI_STRING *name, UNICODE_STRING *nt );
2565
2566
2567 /***********************************************************************
2568  * Inline functions
2569  */
2570
2571 #define InitializeObjectAttributes(p,n,a,r,s) \
2572     do { \
2573         (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
2574         (p)->RootDirectory = r; \
2575         (p)->Attributes = a; \
2576         (p)->ObjectName = n; \
2577         (p)->SecurityDescriptor = s; \
2578         (p)->SecurityQualityOfService = NULL; \
2579     } while (0)
2580
2581 #define NtCurrentProcess() ((HANDLE)-1)
2582
2583 #define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length))
2584 #define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length))
2585 #define RtlStoreUlong(p,v)  do { ULONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
2586 #define RtlStoreUlonglong(p,v) do { ULONGLONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
2587 #define RtlRetrieveUlong(p,s) memcpy((p), (s), sizeof(ULONG))
2588 #define RtlRetrieveUlonglong(p,s) memcpy((p), (s), sizeof(ULONGLONG))
2589 #define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))
2590
2591 static inline BOOLEAN RtlCheckBit(PCRTL_BITMAP lpBits, ULONG ulBit)
2592 {
2593     if (lpBits && ulBit < lpBits->SizeOfBitMap &&
2594         lpBits->Buffer[ulBit >> 5] & (1 << (ulBit & 31)))
2595         return TRUE;
2596     return FALSE;
2597 }
2598
2599 /* These are implemented as __fastcall, so we can't let Winelib apps link with them */
2600 static inline USHORT RtlUshortByteSwap(USHORT s)
2601 {
2602     return (s >> 8) | (s << 8);
2603 }
2604 static inline ULONG RtlUlongByteSwap(ULONG i)
2605 {
2606 #if defined(__i386__) && defined(__GNUC__)
2607     ULONG ret;
2608     __asm__("bswap %0" : "=r" (ret) : "0" (i) );
2609     return ret;
2610 #else
2611     return ((ULONG)RtlUshortByteSwap((USHORT)i) << 16) | RtlUshortByteSwap((USHORT)(i >> 16));
2612 #endif
2613 }
2614
2615 /* list manipulation macros */
2616 #define InitializeListHead(le)  (void)((le)->Flink = (le)->Blink = (le))
2617 #define InsertHeadList(le,e)    do { PLIST_ENTRY f = (le)->Flink; (e)->Flink = f; (e)->Blink = (le); f->Blink = (e); (le)->Flink = (e); } while (0)
2618 #define InsertTailList(le,e)    do { PLIST_ENTRY b = (le)->Blink; (e)->Flink = (le); (e)->Blink = b; b->Flink = (e); (le)->Blink = (e); } while (0)
2619 #define IsListEmpty(le)         ((le)->Flink == (le))
2620 #define RemoveEntryList(e)      do { PLIST_ENTRY f = (e)->Flink, b = (e)->Blink; f->Blink = b; b->Flink = f; (e)->Flink = (e)->Blink = NULL; } while (0)
2621 static inline PLIST_ENTRY RemoveHeadList(PLIST_ENTRY le)
2622 {
2623     PLIST_ENTRY f, b, e;
2624
2625     e = le->Flink;
2626     f = le->Flink->Flink;
2627     b = le->Flink->Blink;
2628     f->Blink = b;
2629     b->Flink = f;
2630
2631     if (e != le) e->Flink = e->Blink = NULL;
2632     return e;
2633 }
2634 static inline PLIST_ENTRY RemoveTailList(PLIST_ENTRY le)
2635 {
2636     PLIST_ENTRY f, b, e;
2637
2638     e = le->Blink;
2639     f = le->Blink->Flink;
2640     b = le->Blink->Blink;
2641     f->Blink = b;
2642     b->Flink = f;
2643
2644     if (e != le) e->Flink = e->Blink = NULL;
2645     return e;
2646 }
2647
2648
2649 #ifdef __WINESRC__
2650
2651 /* FIXME: private structure for vm86 mode, stored in teb->GdiTebBatch */
2652 typedef struct
2653 {
2654     DWORD        dpmi_vif;
2655     DWORD        vm86_pending;
2656 } WINE_VM86_TEB_INFO;
2657
2658 static inline WINE_VM86_TEB_INFO *get_vm86_teb_info(void)
2659 {
2660     return (WINE_VM86_TEB_INFO *)&NtCurrentTeb()->GdiTebBatch;
2661 }
2662
2663 /* The thread information for 16-bit threads */
2664 /* NtCurrentTeb()->SubSystemTib points to this */
2665 typedef struct
2666 {
2667     void           *unknown;    /* 00 unknown */
2668     UNICODE_STRING *exe_name;   /* 04 exe module name */
2669
2670     /* the following fields do not exist under Windows */
2671     UNICODE_STRING  exe_str;    /* exe name string pointed to by exe_name */
2672     CURDIR          curdir;     /* current directory */
2673     WCHAR           curdir_buffer[MAX_PATH];
2674 } WIN16_SUBSYSTEM_TIB;
2675
2676 #endif /* __WINESRC__ */
2677
2678 #ifdef __cplusplus
2679 } /* extern "C" */
2680 #endif /* defined(__cplusplus) */
2681
2682 #endif  /* __WINE_WINTERNL_H */