~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Wine Cross Reference
wine/include/winternl.h

Version: ~ [ wine-1.1.33 ] ~ [ wine-1.1.32 ] ~ [ wine-1.1.31 ] ~ [ wine-1.1.30 ] ~ [ wine-1.1.29 ] ~ [ wine-1.1.28 ] ~ [ wine-1.1.27 ] ~ [ wine-1.1.26 ] ~ [ wine-1.1.25 ] ~ [ wine-1.1.24 ] ~ [ wine-1.1.23 ] ~ [ wine-1.1.22 ] ~ [ wine-1.1.21 ] ~ [ wine-1.1.20 ] ~ [ wine-1.1.19 ] ~ [ wine-1.1.18 ] ~ [ wine-1.1.17 ] ~ [ wine-1.1.16 ] ~ [ wine-1.1.15 ] ~ [ wine-1.1.14 ] ~ [ wine-1.1.13 ] ~ [ wine-1.1.12 ] ~ [ wine-1.1.11 ] ~ [ wine-1.1.10 ] ~ [ wine-1.1.9 ] ~ [ wine-1.1.8 ] ~ [ wine-1.1.7 ] ~ [ wine-1.0.1 ] ~ [ wine-1.1.6 ] ~ [ wine-1.1.5 ] ~ [ wine-1.1.4 ] ~ [ wine-1.1.3 ] ~ [ wine-1.1.2 ] ~ [ wine-1.1.1 ] ~ [ wine-1.1.0 ] ~ [ wine-1.0 ] ~

  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     FileMaximumInformation
411 } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
412 
413 typedef struct _FILE_DIRECTORY_INFORMATION {
414     ULONG               NextEntryOffset;
415     ULONG               FileIndex;
416     LARGE_INTEGER       CreationTime;
417     LARGE_INTEGER       LastAccessTime;
418     LARGE_INTEGER       LastWriteTime;
419     LARGE_INTEGER       ChangeTime;
420     LARGE_INTEGER       EndOfFile;
421     LARGE_INTEGER       AllocationSize;
422     ULONG               FileAttributes;
423     ULONG               FileNameLength;
424     WCHAR               FileName[ANYSIZE_ARRAY];
425 } FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION;
426 
427 typedef struct _FILE_FULL_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     ULONG               EaSize;
439     WCHAR               FileName[ANYSIZE_ARRAY];
440 } FILE_FULL_DIRECTORY_INFORMATION, *PFILE_FULL_DIRECTORY_INFORMATION,
441   FILE_FULL_DIR_INFORMATION, *PFILE_FULL_DIR_INFORMATION;
442 
443 typedef struct _FILE_BOTH_DIRECTORY_INFORMATION {
444     ULONG               NextEntryOffset;
445     ULONG               FileIndex;
446     LARGE_INTEGER       CreationTime;
447     LARGE_INTEGER       LastAccessTime;
448     LARGE_INTEGER       LastWriteTime;
449     LARGE_INTEGER       ChangeTime;
450     LARGE_INTEGER       EndOfFile;
451     LARGE_INTEGER       AllocationSize;
452     ULONG               FileAttributes;
453     ULONG               FileNameLength;
454     ULONG               EaSize;
455     CHAR                ShortNameLength;
456     WCHAR               ShortName[12];
457     WCHAR               FileName[ANYSIZE_ARRAY];
458 } FILE_BOTH_DIRECTORY_INFORMATION, *PFILE_BOTH_DIRECTORY_INFORMATION,
459   FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;
460 
461 typedef struct _FILE_BASIC_INFORMATION {
462     LARGE_INTEGER CreationTime;
463     LARGE_INTEGER LastAccessTime;
464     LARGE_INTEGER LastWriteTime;
465     LARGE_INTEGER ChangeTime;
466     ULONG FileAttributes;
467 } FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
468 
469 typedef struct _FILE_STANDARD_INFORMATION {
470     LARGE_INTEGER AllocationSize;
471     LARGE_INTEGER EndOfFile;
472     ULONG NumberOfLinks;
473     BOOLEAN DeletePending;
474     BOOLEAN Directory;
475 } FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;
476 
477 typedef struct _FILE_INTERNAL_INFORMATION {
478     LARGE_INTEGER IndexNumber;
479 } FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;
480 
481 typedef struct _FILE_EA_INFORMATION {
482     ULONG EaSize;
483 } FILE_EA_INFORMATION, *PFILE_EA_INFORMATION;
484 
485 typedef struct _FILE_ACCESS_INFORMATION {
486     ACCESS_MASK AccessFlags;
487 } FILE_ACCESS_INFORMATION, *PFILE_ACCESS_INFORMATION;
488 
489 typedef struct _FILE_NAME_INFORMATION {
490     ULONG FileNameLength;
491     WCHAR FileName[1];
492 } FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
493 
494 typedef struct _FILE_RENAME_INFORMATION {
495     BOOLEAN Replace;
496     HANDLE RootDir;
497     ULONG FileNameLength;
498     WCHAR FileName[1];
499 } FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;
500 
501 typedef struct _FILE_NAMES_INFORMATION {
502     ULONG NextEntryOffset;
503     ULONG FileIndex;
504     ULONG FileNameLength;
505     WCHAR FileName[1];
506 } FILE_NAMES_INFORMATION, *PFILE_NAMES_INFORMATION;
507 
508 typedef struct _FILE_DISPOSITION_INFORMATION {
509     BOOLEAN DoDeleteFile;
510 } FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION;
511 
512 typedef struct _FILE_POSITION_INFORMATION {
513     LARGE_INTEGER CurrentByteOffset;
514 } FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;
515 
516 typedef struct _FILE_ALIGNMENT_INFORMATION {
517     ULONG AlignmentRequirement;
518 } FILE_ALIGNMENT_INFORMATION, *PFILE_ALIGNMENT_INFORMATION;
519 
520 typedef struct _FILE_ALLOCATION_INFORMATION {
521     LARGE_INTEGER AllocationSize;
522 } FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION;
523 
524 typedef struct _FILE_END_OF_FILE_INFORMATION {
525     LARGE_INTEGER EndOfFile;
526 } FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;
527 
528 typedef struct _FILE_NETWORK_OPEN_INFORMATION {
529     LARGE_INTEGER CreationTime;
530     LARGE_INTEGER LastAccessTime;
531     LARGE_INTEGER LastWriteTime;
532     LARGE_INTEGER ChangeTime;
533     LARGE_INTEGER AllocationSize;
534     LARGE_INTEGER EndOfFile;
535     ULONG FileAttributes;
536 } FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;
537 
538 typedef struct _FILE_FULL_EA_INFORMATION {
539     ULONG NextEntryOffset;
540     UCHAR Flags;
541     UCHAR EaNameLength;
542     USHORT EaValueLength;
543     CHAR EaName[1];
544 } FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
545 
546 typedef struct _FILE_MODE_INFORMATION {
547     ULONG Mode;
548 } FILE_MODE_INFORMATION, *PFILE_MODE_INFORMATION;
549 
550 typedef struct _FILE_STREAM_INFORMATION
551 {
552     ULONG NextEntryOffset;
553     ULONG StreamNameLength;
554     LARGE_INTEGER StreamSize;
555     LARGE_INTEGER StreamAllocationSize;
556     WCHAR StreamName[1];
557 } FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
558 
559 typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION
560 {
561     ULONG FileAttributes;
562     ULONG ReparseTag;
563 } FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION;
564 
565 typedef struct _FILE_MAILSLOT_QUERY_INFORMATION {
566     ULONG MaximumMessageSize;
567     ULONG MailslotQuota;
568     ULONG NextMessageSize;
569     ULONG MessagesAvailable;
570     LARGE_INTEGER ReadTimeout;
571 } FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION;
572 
573 typedef struct _FILE_MAILSLOT_SET_INFORMATION {
574     LARGE_INTEGER ReadTimeout;
575 } FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION;
576 
577 typedef struct _FILE_PIPE_LOCAL_INFORMATION {
578     ULONG NamedPipeType;
579     ULONG NamedPipeConfiguration;
580     ULONG MaximumInstances;
581     ULONG CurrentInstances;
582     ULONG InboundQuota;
583     ULONG ReadDataAvailable;
584     ULONG OutboundQuota;
585     ULONG WriteQuotaAvailable;
586     ULONG NamedPipeState;
587     ULONG NamedPipeEnd;
588 } FILE_PIPE_LOCAL_INFORMATION, *PFILE_PIPE_LOCAL_INFORMATION;
589 
590 typedef struct _FILE_ALL_INFORMATION {
591     FILE_BASIC_INFORMATION     BasicInformation;
592     FILE_STANDARD_INFORMATION  StandardInformation;
593     FILE_INTERNAL_INFORMATION  InternalInformation;
594     FILE_EA_INFORMATION        EaInformation;
595     FILE_ACCESS_INFORMATION    AccessInformation;
596     FILE_POSITION_INFORMATION  PositionInformation;
597     FILE_MODE_INFORMATION      ModeInformation;
598     FILE_ALIGNMENT_INFORMATION AlignmentInformation;
599     FILE_NAME_INFORMATION      NameInformation;
600 } FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION;
601 
602 typedef enum _FSINFOCLASS {
603     FileFsVolumeInformation = 1,
604     FileFsLabelInformation,
605     FileFsSizeInformation,
606     FileFsDeviceInformation,
607     FileFsAttributeInformation,
608     FileFsControlInformation,
609     FileFsFullSizeInformation,
610     FileFsObjectIdInformation,
611     FileFsMaximumInformation
612 } FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
613 
614 typedef enum _KEY_INFORMATION_CLASS {
615     KeyBasicInformation,
616     KeyNodeInformation,
617     KeyFullInformation
618 } KEY_INFORMATION_CLASS;
619 
620 typedef enum _KEY_VALUE_INFORMATION_CLASS {
621     KeyValueBasicInformation,
622     KeyValueFullInformation,
623     KeyValuePartialInformation,
624     KeyValueFullInformationAlign64,
625     KeyValuePartialInformationAlign64
626 } KEY_VALUE_INFORMATION_CLASS;
627 
628 typedef enum _OBJECT_INFORMATION_CLASS {
629     ObjectBasicInformation,
630     ObjectNameInformation,
631     ObjectTypeInformation,
632     ObjectAllInformation,
633     ObjectDataInformation
634 } OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS;
635 
636 typedef enum _PROCESSINFOCLASS {
637     ProcessBasicInformation = 0,
638     ProcessQuotaLimits = 1,
639     ProcessIoCounters = 2,
640     ProcessVmCounters = 3,
641     ProcessTimes = 4,
642     ProcessBasePriority = 5,
643     ProcessRaisePriority = 6,
644     ProcessDebugPort = 7,
645     ProcessExceptionPort = 8,
646     ProcessAccessToken = 9,
647     ProcessLdtInformation = 10,
648     ProcessLdtSize = 11,
649     ProcessDefaultHardErrorMode = 12,
650     ProcessIoPortHandlers = 13,
651     ProcessPooledUsageAndLimits = 14,
652     ProcessWorkingSetWatch = 15,
653     ProcessUserModeIOPL = 16,
654     ProcessEnableAlignmentFaultFixup = 17,
655     ProcessPriorityClass = 18,
656     ProcessWx86Information = 19,
657     ProcessHandleCount = 20,
658     ProcessAffinityMask = 21,
659     ProcessPriorityBoost = 22,
660     ProcessDeviceMap = 23,
661     ProcessSessionInformation = 24,
662     ProcessForegroundInformation = 25,
663     ProcessWow64Information = 26,
664     ProcessImageFileName = 27,
665     ProcessLUIDDeviceMapsEnabled = 28,
666     ProcessBreakOnTermination = 29,
667     ProcessDebugObjectHandle = 30,
668     ProcessDebugFlags = 31,
669     ProcessHandleTracing = 32,
670     ProcessExecuteFlags = 34,
671     MaxProcessInfoClass
672 } PROCESSINFOCLASS, PROCESS_INFORMATION_CLASS;
673 
674 #define MEM_EXECUTE_OPTION_DISABLE   0x01
675 #define MEM_EXECUTE_OPTION_ENABLE    0x02
676 #define MEM_EXECUTE_OPTION_PERMANENT 0x08
677 
678 typedef enum _SECTION_INHERIT {
679     ViewShare = 1,
680     ViewUnmap = 2
681 } SECTION_INHERIT;
682 
683 typedef enum _SYSTEM_INFORMATION_CLASS {
684     SystemBasicInformation = 0,
685     SystemCpuInformation = 1,
686     SystemPerformanceInformation = 2,
687     SystemTimeOfDayInformation = 3, /* was SystemTimeInformation */
688     Unknown4,
689     SystemProcessInformation = 5,
690     Unknown6,
691     Unknown7,
692     SystemProcessorPerformanceInformation = 8,
693     Unknown9,
694     Unknown10,
695     SystemModuleInformation = 11,
696     Unknown12,
697     Unknown13,
698     Unknown14,
699     Unknown15,
700     SystemHandleInformation = 16,
701     Unknown17,
702     SystemPageFileInformation = 18,
703     Unknown19,
704     Unknown20,
705     SystemCacheInformation = 21,
706     Unknown22,
707     SystemInterruptInformation = 23,
708     SystemDpcBehaviourInformation = 24,
709     SystemFullMemoryInformation = 25,
710     SystemNotImplemented6 = 25,
711     SystemLoadImage = 26,
712     SystemUnloadImage = 27,
713     SystemTimeAdjustmentInformation = 28,
714     SystemTimeAdjustment = 28,
715     SystemSummaryMemoryInformation = 29,
716     SystemNotImplemented7 = 29,
717     SystemNextEventIdInformation = 30,
718     SystemNotImplemented8 = 30,
719     SystemEventIdsInformation = 31,
720     SystemCrashDumpInformation = 32,
721     SystemExceptionInformation = 33,
722     SystemCrashDumpStateInformation = 34,
723     SystemKernelDebuggerInformation = 35,
724     SystemContextSwitchInformation = 36,
725     SystemRegistryQuotaInformation = 37,
726     SystemCurrentTimeZoneInformation = 44,
727     SystemTimeZoneInformation = 44,
728     SystemLookasideInformation = 45,
729     SystemSetTimeSlipEvent = 46,
730     SystemCreateSession = 47,
731     SystemDeleteSession = 48,
732     SystemInvalidInfoClass4 = 49,
733     SystemRangeStartInformation = 50,
734     SystemVerifierInformation = 51,
735     SystemAddVerifier = 52,
736     SystemSessionProcessesInformation   = 53,
737     SystemInformationClassMax
738 } SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS;
739 
740 typedef enum _TIMER_TYPE {
741     NotificationTimer,
742     SynchronizationTimer
743 } TIMER_TYPE;
744 
745 typedef enum _THREADINFOCLASS {
746     ThreadBasicInformation,
747     ThreadTimes,
748     ThreadPriority,
749     ThreadBasePriority,
750     ThreadAffinityMask,
751     ThreadImpersonationToken,
752     ThreadDescriptorTableEntry,
753     ThreadEnableAlignmentFaultFixup,
754     ThreadEventPair_Reusable,
755     ThreadQuerySetWin32StartAddress,
756     ThreadZeroTlsCell,
757     ThreadPerformanceCount,
758     ThreadAmILastThread,
759     ThreadIdealProcessor,
760     ThreadPriorityBoost,
761     ThreadSetTlsArrayAddress,
762     ThreadIsIoPending,
763     ThreadHideFromDebugger,
764     MaxThreadInfoClass
765 } THREADINFOCLASS;
766 
767 typedef struct _THREAD_BASIC_INFORMATION
768 {
769     NTSTATUS  ExitStatus;
770     PVOID     TebBaseAddress;
771     CLIENT_ID ClientId;
772     ULONG_PTR AffinityMask;
773     LONG      Priority;
774     LONG      BasePriority;
775 } THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION;
776 
777 typedef struct _THREAD_DESCRIPTOR_INFORMATION
778 {
779     DWORD       Selector;
780     LDT_ENTRY   Entry;
781 } THREAD_DESCRIPTOR_INFORMATION, *PTHREAD_DESCRIPTOR_INFORMATION;
782 
783 typedef struct _KERNEL_USER_TIMES {
784     LARGE_INTEGER  CreateTime;
785     LARGE_INTEGER  ExitTime;
786     LARGE_INTEGER  KernelTime;
787     LARGE_INTEGER  UserTime;
788 } KERNEL_USER_TIMES, *PKERNEL_USER_TIMES;
789 
790 typedef enum _WINSTATIONINFOCLASS {
791     WinStationInformation = 8
792 } WINSTATIONINFOCLASS;
793 
794 typedef enum _MEMORY_INFORMATION_CLASS {
795     MemoryBasicInformation,
796     MemoryWorkingSetList,
797     MemorySectionName,
798     MemoryBasicVlmInformation
799 } MEMORY_INFORMATION_CLASS;
800 
801 typedef enum _MUTANT_INFORMATION_CLASS
802 {
803     MutantBasicInformation
804 } MUTANT_INFORMATION_CLASS, *PMUTANT_INFORMATION_CLASS;
805 
806 typedef struct _MUTANT_BASIC_INFORMATION {
807     LONG        CurrentCount;
808     BOOLEAN     OwnedByCaller;
809     BOOLEAN     AbandonedState;
810 } MUTANT_BASIC_INFORMATION, *PMUTANT_BASIC_INFORMATION;
811 
812 typedef enum _TIMER_INFORMATION_CLASS
813 {
814     TimerBasicInformation = 0
815 } TIMER_INFORMATION_CLASS;
816 
817 typedef struct _TIMER_BASIC_INFORMATION
818 {
819     LARGE_INTEGER RemainingTime;
820     BOOLEAN       TimerState;
821 } TIMER_BASIC_INFORMATION, *PTIMER_BASIC_INFORMATION;
822 
823 
824 /* return type of RtlDetermineDosPathNameType_U (FIXME: not the correct names) */
825 typedef enum
826 {
827     INVALID_PATH = 0,
828     UNC_PATH,              /* "//foo" */
829     ABSOLUTE_DRIVE_PATH,   /* "c:/foo" */
830     RELATIVE_DRIVE_PATH,   /* "c:foo" */
831     ABSOLUTE_PATH,         /* "/foo" */
832     RELATIVE_PATH,         /* "foo" */
833     DEVICE_PATH,           /* "//./foo" */
834     UNC_DOT_PATH           /* "//." */
835 } DOS_PATHNAME_TYPE;
836 
837 /***********************************************************************
838  * IA64 specific types and data structures
839  */
840 
841 #ifdef __ia64__
842 
843 typedef struct _FRAME_POINTERS {
844   ULONGLONG MemoryStackFp;
845   ULONGLONG BackingStoreFp;
846 } FRAME_POINTERS, *PFRAME_POINTERS;
847 
848 #define UNWIND_HISTORY_TABLE_SIZE 12
849 
850 typedef struct _UNWIND_HISTORY_TABLE_ENTRY {
851   ULONG64 ImageBase;
852   ULONG64 Gp;
853   PRUNTIME_FUNCTION FunctionEntry;
854 } UNWIND_HISTORY_TABLE_ENTRY, *PUNWIND_HISTORY_TABLE_ENTRY;
855 
856 typedef struct _UNWIND_HISTORY_TABLE {
857   ULONG Count;
858   UCHAR Search;
859   ULONG64 LowAddress;
860   ULONG64 HighAddress;
861   UNWIND_HISTORY_TABLE_ENTRY Entry[UNWIND_HISTORY_TABLE_SIZE];
862 } UNWIND_HISTORY_TABLE, *PUNWIND_HISTORY_TABLE;
863 
864 typedef struct _KNONVOLATILE_CONTEXT_POINTERS
865 {
866     PFLOAT128  FltS0;
867     PFLOAT128  FltS1;
868     PFLOAT128  FltS2;
869     PFLOAT128  FltS3;
870     PFLOAT128  HighFloatingContext[10];
871     PFLOAT128  FltS4;
872     PFLOAT128  FltS5;
873     PFLOAT128  FltS6;
874     PFLOAT128  FltS7;
875     PFLOAT128  FltS8;
876     PFLOAT128  FltS9;
877     PFLOAT128  FltS10;
878     PFLOAT128  FltS11;
879     PFLOAT128  FltS12;
880     PFLOAT128  FltS13;
881     PFLOAT128  FltS14;
882     PFLOAT128  FltS15;
883     PFLOAT128  FltS16;
884     PFLOAT128  FltS17;
885     PFLOAT128  FltS18;
886     PFLOAT128  FltS19;
887     PULONGLONG IntS0;
888     PULONGLONG IntS1;
889     PULONGLONG IntS2;
890     PULONGLONG IntS3;
891     PULONGLONG IntSp;
892     PULONGLONG IntS0Nat;
893     PULONGLONG IntS1Nat;
894     PULONGLONG IntS2Nat;
895     PULONGLONG IntS3Nat;
896     PULONGLONG IntSpNat;
897     PULONGLONG Preds;
898     PULONGLONG BrRp;
899     PULONGLONG BrS0;
900     PULONGLONG BrS1;
901     PULONGLONG BrS2;
902     PULONGLONG BrS3;
903     PULONGLONG BrS4;
904     PULONGLONG ApUNAT;
905     PULONGLONG ApLC;
906     PULONGLONG ApEC;
907     PULONGLONG RsPFS;
908     PULONGLONG StFSR;
909     PULONGLONG StFIR;
910     PULONGLONG StFDR;
911     PULONGLONG Cflag;
912 } KNONVOLATILE_CONTEXT_POINTERS, *PKNONVOLATILE_CONTEXT_POINTERS;
913 
914 ULONGLONG WINAPI RtlVirtualUnwind(ULONGLONG,ULONGLONG,RUNTIME_FUNCTION*,CONTEXT*,BOOLEAN*,FRAME_POINTERS*,KNONVOLATILE_CONTEXT_POINTERS*);
915 
916 #endif /* defined(__ia64__) */
917 
918 /***********************************************************************
919  * x86-64 specific types and data structures
920  */
921 
922 #ifdef __x86_64__
923 
924 #define UNWIND_HISTORY_TABLE_SIZE 12
925 
926 typedef struct _UNWIND_HISTORY_TABLE_ENTRY
927 {
928     ULONG64 ImageBase;
929     PRUNTIME_FUNCTION FunctionEntry;
930 } UNWIND_HISTORY_TABLE_ENTRY, *PUNWIND_HISTORY_TABLE_ENTRY;
931 
932 #define UNWIND_HISTORY_TABLE_NONE 0
933 #define UNWIND_HISTORY_TABLE_GLOBAL 1
934 #define UNWIND_HISTORY_TABLE_LOCAL 2
935 
936 typedef struct _UNWIND_HISTORY_TABLE
937 {
938     ULONG Count;
939     UCHAR Search;
940     ULONG64 LowAddress;
941     ULONG64 HighAddress;
942     UNWIND_HISTORY_TABLE_ENTRY Entry[UNWIND_HISTORY_TABLE_SIZE];
943 } UNWIND_HISTORY_TABLE, *PUNWIND_HISTORY_TABLE;
944 
945 typedef struct _KNONVOLATILE_CONTEXT_POINTERS
946 {
947     union
948     {
949         PM128A FloatingContext[16];
950         struct
951         {
952             PM128A Xmm0;
953             PM128A Xmm1;
954             PM128A Xmm2;
955             PM128A Xmm3;
956             PM128A Xmm4;
957             PM128A Xmm5;
958             PM128A Xmm6;
959             PM128A Xmm7;
960             PM128A Xmm8;
961             PM128A Xmm9;
962             PM128A Xmm10;
963             PM128A Xmm11;
964             PM128A Xmm12;
965             PM128A Xmm13;
966             PM128A Xmm14;
967             PM128A Xmm15;
968         } DUMMYSTRUCTNAME;
969     } DUMMYUNIONNAME1;
970 
971     union
972     {
973         PULONG64 IntegerContext[16];
974         struct
975         {
976             PULONG64 Rax;
977             PULONG64 Rcx;
978             PULONG64 Rdx;
979             PULONG64 Rbx;
980             PULONG64 Rsp;
981             PULONG64 Rbp;
982             PULONG64 Rsi;
983             PULONG64 Rdi;
984             PULONG64 R8;
985             PULONG64 R9;
986             PULONG64 R10;
987             PULONG64 R11;
988             PULONG64 R12;
989             PULONG64 R13;
990             PULONG64 R14;
991             PULONG64 R15;
992         } DUMMYSTRUCTNAME;
993     } DUMMYUNIONNAME2;
994 } KNONVOLATILE_CONTEXT_POINTERS, *PKNONVOLATILE_CONTEXT_POINTERS;
995 
996 PVOID WINAPI RtlVirtualUnwind(ULONG,ULONG64,ULONG64,RUNTIME_FUNCTION*,CONTEXT*,PVOID*,ULONG64*,KNONVOLATILE_CONTEXT_POINTERS*);
997 
998 #define UNW_FLAG_NHANDLER  0
999 #define UNW_FLAG_EHANDLER  1
1000 #define UNW_FLAG_UHANDLER  2
1001 #define UNW_FLAG_CHAININFO 4
1002 
1003 #endif  /* __x86_64 */
1004 
1005 
1006 /***********************************************************************
1007  * Types and data structures
1008  */
1009 
1010 /* This is used by NtQuerySystemInformation */
1011 typedef struct _SYSTEM_THREAD_INFORMATION
1012 {                                    /* win32/win64 */
1013     LARGE_INTEGER KernelTime;          /* 00/00 */
1014     LARGE_INTEGER UserTime;            /* 08/08 */
1015     LARGE_INTEGER CreateTime;          /* 10/10 */
1016     DWORD         dwTickCount;         /* 18/18 */
1017     LPVOID        StartAddress;        /* 1c/20 */
1018     CLIENT_ID     ClientId;            /* 20/28 */
1019     DWORD         dwCurrentPriority;   /* 28/38 */
1020     DWORD         dwBasePriority;      /* 2c/3c */
1021     DWORD         dwContextSwitches;   /* 30/40 */
1022     DWORD         dwThreadState;       /* 34/44 */
1023     DWORD         dwWaitReason;        /* 38/48 */
1024     DWORD         dwUnknown;           /* 3c/4c */
1025 } SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION;
1026 
1027 typedef struct _IO_STATUS_BLOCK {
1028   union {
1029     NTSTATUS Status;
1030     PVOID Pointer;
1031   } DUMMYUNIONNAME;
1032 
1033   ULONG_PTR Information;
1034 } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
1035 
1036 typedef void (WINAPI * PIO_APC_ROUTINE)(PVOID,PIO_STATUS_BLOCK,ULONG);
1037 
1038 typedef struct _KEY_BASIC_INFORMATION {
1039     LARGE_INTEGER LastWriteTime;
1040     ULONG         TitleIndex;
1041     ULONG         NameLength;
1042     WCHAR         Name[1];
1043 } KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
1044 
1045 typedef struct _KEY_NODE_INFORMATION
1046 {
1047     LARGE_INTEGER LastWriteTime;
1048     ULONG         TitleIndex;
1049     ULONG         ClassOffset;
1050     ULONG         ClassLength;
1051     ULONG         NameLength;
1052     WCHAR         Name[1];
1053    /* Class[1]; */
1054 } KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
1055 
1056 typedef struct _KEY_FULL_INFORMATION
1057 {
1058     LARGE_INTEGER LastWriteTime;
1059     ULONG         TitleIndex;
1060     ULONG         ClassOffset;
1061     ULONG         ClassLength;
1062     ULONG         SubKeys;
1063     ULONG         MaxNameLen;
1064     ULONG         MaxClassLen;
1065     ULONG         Values;
1066     ULONG         MaxValueNameLen;
1067     ULONG         MaxValueDataLen;
1068     WCHAR         Class[1];
1069 } KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
1070 
1071 typedef struct _KEY_VALUE_ENTRY
1072 {
1073     PUNICODE_STRING ValueName;
1074     ULONG           DataLength;
1075     ULONG           DataOffset;
1076     ULONG           Type;
1077 } KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
1078 
1079 typedef struct _KEY_VALUE_BASIC_INFORMATION {
1080     ULONG TitleIndex;
1081     ULONG Type;
1082     ULONG NameLength;
1083     WCHAR Name[1];
1084 } KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
1085 
1086 typedef struct _KEY_VALUE_FULL_INFORMATION {
1087     ULONG TitleIndex;
1088     ULONG Type;
1089     ULONG DataOffset;
1090     ULONG DataLength;
1091     ULONG NameLength;
1092     WCHAR Name[1];
1093 } KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
1094 
1095 typedef struct _KEY_VALUE_PARTIAL_INFORMATION {
1096     ULONG TitleIndex;
1097     ULONG Type;
1098     ULONG DataLength;
1099     UCHAR Data[1];
1100 } KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
1101 
1102 #ifndef __OBJECT_ATTRIBUTES_DEFINED__
1103 #define __OBJECT_ATTRIBUTES_DEFINED__
1104 typedef struct _OBJECT_ATTRIBUTES {
1105   ULONG Length;
1106   HANDLE RootDirectory;
1107   PUNICODE_STRING ObjectName;
1108   ULONG Attributes;
1109   PVOID SecurityDescriptor;       /* type SECURITY_DESCRIPTOR */
1110   PVOID SecurityQualityOfService; /* type SECURITY_QUALITY_OF_SERVICE */
1111 } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
1112 #endif
1113 
1114 typedef struct _OBJECT_DATA_INFORMATION {
1115     BOOLEAN InheritHandle;
1116     BOOLEAN ProtectFromClose;
1117 } OBJECT_DATA_INFORMATION, *POBJECT_DATA_INFORMATION;
1118 
1119 typedef struct _OBJECT_BASIC_INFORMATION {
1120     ULONG  Attributes;
1121     ACCESS_MASK  GrantedAccess;
1122     ULONG  HandleCount;
1123     ULONG  PointerCount;
1124     ULONG  PagedPoolUsage;
1125     ULONG  NonPagedPoolUsage;
1126     ULONG  Reserved[3];
1127     ULONG  NameInformationLength;
1128     ULONG  TypeInformationLength;
1129     ULONG  SecurityDescriptorLength;
1130     LARGE_INTEGER  CreateTime;
1131 } OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION;
1132 
1133 typedef struct _OBJECT_NAME_INFORMATION {
1134     UNICODE_STRING Name;
1135 } OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
1136 
1137 typedef struct _PROCESS_BASIC_INFORMATION {
1138 #ifdef __WINESRC__
1139     DWORD_PTR ExitStatus;
1140     PPEB PebBaseAddress;
1141     DWORD_PTR AffinityMask;
1142     DWORD_PTR BasePriority;
1143     ULONG_PTR UniqueProcessId;
1144     ULONG_PTR InheritedFromUniqueProcessId;
1145 #else
1146     PVOID Reserved1;
1147     PPEB PebBaseAddress;
1148     PVOID Reserved2[2];
1149     ULONG_PTR UniqueProcessId;
1150     PVOID Reserved3;
1151 #endif
1152 } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
1153 
1154 #define PROCESS_PRIOCLASS_IDLE          1
1155 #define PROCESS_PRIOCLASS_NORMAL        2
1156 #define PROCESS_PRIOCLASS_HIGH          3
1157 #define PROCESS_PRIOCLASS_REALTIME      4
1158 #define PROCESS_PRIOCLASS_BELOW_NORMAL  5
1159 #define PROCESS_PRIOCLASS_ABOVE_NORMAL  6
1160 
1161 typedef struct _PROCESS_PRIORITY_CLASS {
1162     BOOLEAN     Foreground;
1163     UCHAR       PriorityClass;
1164 } PROCESS_PRIORITY_CLASS, *PPROCESS_PRIORITY_CLASS;
1165 
1166 typedef struct _RTL_HEAP_DEFINITION {
1167     ULONG Length; /* = sizeof(RTL_HEAP_DEFINITION) */
1168 
1169     ULONG Unknown[11];
1170 } RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION;
1171 
1172 typedef struct _RTL_RWLOCK {
1173     RTL_CRITICAL_SECTION rtlCS;
1174 
1175     HANDLE hSharedReleaseSemaphore;
1176     UINT   uSharedWaiters;
1177 
1178     HANDLE hExclusiveReleaseSemaphore;
1179     UINT   uExclusiveWaiters;
1180 
1181     INT    iNumberActive;
1182     HANDLE hOwningThreadId;
1183     DWORD  dwTimeoutBoost;
1184     PVOID  pDebugInfo;
1185 } RTL_RWLOCK, *LPRTL_RWLOCK;
1186 
1187 /* System Information Class 0x00 */
1188 
1189 typedef struct _SYSTEM_BASIC_INFORMATION {
1190 #ifdef __WINESRC__
1191     DWORD     unknown;
1192     ULONG     KeMaximumIncrement;
1193     ULONG     PageSize;
1194     ULONG     MmNumberOfPhysicalPages;
1195     ULONG     MmLowestPhysicalPage;
1196     ULONG     MmHighestPhysicalPage;
1197     ULONG_PTR AllocationGranularity;
1198     PVOID     LowestUserAddress;
1199     PVOID     HighestUserAddress;
1200     ULONG_PTR ActiveProcessorsAffinityMask;
1201     BYTE      NumberOfProcessors;
1202 #else
1203     BYTE Reserved1[24];
1204     PVOID Reserved2[4];
1205     CCHAR NumberOfProcessors;
1206 #endif
1207 } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
1208 
1209 /* System Information Class 0x01 */
1210 
1211 typedef struct _SYSTEM_CPU_INFORMATION {
1212     WORD Architecture;
1213     WORD Level;
1214     WORD Revision;       /* combination of CPU model and stepping */
1215     WORD Reserved;       /* always zero */
1216     DWORD FeatureSet;    /* see bit flags below */
1217 } SYSTEM_CPU_INFORMATION, *PSYSTEM_CPU_INFORMATION;
1218 
1219 /* definitions of bits in the Feature set for the x86 processors */
1220 #define CPU_FEATURE_VME    0x00000005   /* Virtual 86 Mode Extensions */
1221 #define CPU_FEATURE_TSC    0x00000002   /* Time Stamp Counter available */
1222 #define CPU_FEATURE_CMOV   0x00000008   /* Conditional Move instruction*/
1223 #define CPU_FEATURE_PGE    0x00000014   /* Page table Entry Global bit */ 
1224 #define CPU_FEATURE_PSE    0x00000024   /* Page Size Extension */
1225 #define CPU_FEATURE_MTRR   0x00000040   /* Memory Type Range Registers */
1226 #define CPU_FEATURE_CX8    0x00000080   /* Compare and eXchange 8 byte instr. */
1227 #define CPU_FEATURE_MMX    0x00000100   /* Multi Media eXtensions */
1228 #define CPU_FEATURE_X86    0x00000200   /* seems to be always ON, on the '86 */
1229 #define CPU_FEATURE_PAT    0x00000400   /* Page Attribute Table */
1230 #define CPU_FEATURE_FXSR   0x00000800   /* FXSAVE and FXSTORE instructions */
1231 #define CPU_FEATURE_SEP    0x00001000   /* SYSENTER and SYSEXIT instructions */
1232 #define CPU_FEATURE_SSE    0x00002000   /* SSE extensions (ext. MMX) */
1233 #define CPU_FEATURE_3DNOW  0x00008000   /* 3DNOW instructions available 
1234                                            (FIXME: needs to be confirmed) */
1235 #define CPU_FEATURE_SSE2   0x00010000   /* SSE2 extensions (XMMI64) */
1236 #define CPU_FEATURE_DS     0x00020000   /* Debug Store */
1237 #define CPU_FEATURE_HTT    0x00040000   /* Hyper Threading Technology */
1238 
1239 /* System Information Class 0x02 */
1240 
1241 typedef struct _SYSTEM_PERFORMANCE_INFORMATION {
1242     BYTE Reserved1[312];
1243 } SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
1244 
1245 /* System Information Class 0x03 */
1246 
1247 typedef struct _SYSTEM_TIMEOFDAY_INFORMATION {
1248 #ifdef __WINESRC__
1249     LARGE_INTEGER liKeBootTime;
1250     LARGE_INTEGER liKeSystemTime;
1251     LARGE_INTEGER liExpTimeZoneBias;
1252     ULONG uCurrentTimeZoneId;
1253     DWORD dwUnknown1[5];
1254 #else
1255     BYTE Reserved1[48];
1256 #endif
1257 } SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION; /* was SYSTEM_TIME_INFORMATION */
1258 
1259 /* System Information Class 0x08 */
1260 
1261 typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION {
1262     LARGE_INTEGER IdleTime;
1263     LARGE_INTEGER KernelTime;
1264     LARGE_INTEGER UserTime;
1265     LARGE_INTEGER Reserved1[2];
1266     ULONG Reserved2;
1267 } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
1268 
1269 /* System Information Class 0x0b */
1270 
1271 typedef struct _SYSTEM_DRIVER_INFORMATION {
1272     PVOID pvAddress;
1273     DWORD dwUnknown1;
1274     DWORD dwUnknown2;
1275     DWORD dwEntryIndex;
1276     DWORD dwUnknown3;
1277     char szName[MAX_PATH + 1];
1278 } SYSTEM_DRIVER_INFORMATION, *PSYSTEM_DRIVER_INFORMATION;
1279 
1280 /* System Information Class 0x10 */
1281 
1282 typedef struct _SYSTEM_HANDLE_ENTRY {
1283     ULONG  OwnerPid;
1284     BYTE   ObjectType;
1285     BYTE   HandleFlags;
1286     USHORT HandleValue;
1287     PVOID  ObjectPointer;
1288     ULONG  AccessMask;
1289 } SYSTEM_HANDLE_ENTRY, *PSYSTEM_HANDLE_ENTRY;
1290 
1291 typedef struct _SYSTEM_HANDLE_INFORMATION {
1292     ULONG               Count;
1293     SYSTEM_HANDLE_ENTRY Handle[1];
1294 } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
1295 
1296 /* System Information Class 0x15 */
1297 
1298 typedef struct _SYSTEM_CACHE_INFORMATION {
1299     ULONG CurrentSize;
1300     ULONG PeakSize;
1301     ULONG PageFaultCount;
1302 #ifndef _WIN64
1303     ULONG MinimumWorkingSet;
1304     ULONG MaximumWorkingSet;
1305     ULONG unused[4];
1306 #endif
1307 } SYSTEM_CACHE_INFORMATION, *PSYSTEM_CACHE_INFORMATION;
1308 
1309 /* System Information Class 0x17 */
1310 
1311 typedef struct _SYSTEM_INTERRUPT_INFORMATION {
1312     BYTE Reserved1[24];
1313 } SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION;
1314 
1315 typedef struct _SYSTEM_CONFIGURATION_INFO {
1316     union {
1317         ULONG   OemId;
1318         struct {
1319             WORD ProcessorArchitecture;
1320             WORD Reserved;
1321         } tag1;
1322     } tag2;
1323     ULONG PageSize;
1324     PVOID MinimumApplicationAddress;
1325     PVOID MaximumApplicationAddress;
1326     ULONG ActiveProcessorMask;
1327     ULONG NumberOfProcessors;
1328     ULONG ProcessorType;
1329     ULONG AllocationGranularity;
1330     WORD  ProcessorLevel;
1331     WORD  ProcessorRevision;
1332 } SYSTEM_CONFIGURATION_INFO, *PSYSTEM_CONFIGURATION_INFO;
1333 
1334 typedef struct _SYSTEM_EXCEPTION_INFORMATION {
1335     BYTE Reserved1[16];
1336 } SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION;
1337 
1338 typedef struct _SYSTEM_LOOKASIDE_INFORMATION {
1339     BYTE Reserved1[32];
1340 } SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION;
1341 
1342 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION {
1343         BOOLEAN  DebuggerEnabled;
1344         BOOLEAN  DebuggerNotPresent;
1345 } SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION;
1346 
1347 /* System Information Class 0x05 */
1348 
1349 typedef struct _VM_COUNTERS_ {
1350     SIZE_T PeakVirtualSize;
1351     SIZE_T VirtualSize;
1352     ULONG  PageFaultCount;
1353     SIZE_T PeakWorkingSetSize;
1354     SIZE_T WorkingSetSize;
1355     SIZE_T QuotaPeakPagedPoolUsage;
1356     SIZE_T QuotaPagedPoolUsage;
1357     SIZE_T QuotaPeakNonPagedPoolUsage;
1358     SIZE_T QuotaNonPagedPoolUsage;
1359     SIZE_T PagefileUsage;
1360     SIZE_T PeakPagefileUsage;
1361     SIZE_T PrivatePageCount;
1362 } VM_COUNTERS, *PVM_COUNTERS;
1363 
1364 typedef struct _SYSTEM_PROCESS_INFORMATION {
1365 #ifdef __WINESRC__                  /* win32/win64 */
1366     ULONG NextEntryOffset;             /* 00/00 */
1367     DWORD dwThreadCount;               /* 04/04 */
1368     DWORD dwUnknown1[6];               /* 08/08 */
1369     LARGE_INTEGER CreationTime;        /* 20/20 */
1370     LARGE_INTEGER UserTime;            /* 28/28 */
1371     LARGE_INTEGER KernelTime;          /* 30/30 */
1372     UNICODE_STRING ProcessName;        /* 38/38 */
1373     DWORD dwBasePriority;              /* 40/48 */
1374     HANDLE UniqueProcessId;            /* 44/50 */
1375     HANDLE ParentProcessId;            /* 48/58 */
1376     ULONG HandleCount;                 /* 4c/60 */
1377     DWORD dwUnknown3;                  /* 50/64 */
1378     DWORD dwUnknown4;                  /* 54/68 */
1379     VM_COUNTERS vmCounters;            /* 58/70 */
1380     IO_COUNTERS ioCounters;            /* 88/d0 */
1381     SYSTEM_THREAD_INFORMATION ti[1];   /* b8/100 */
1382 #else
1383     ULONG NextEntryOffset;             /* 00/00 */
1384     BYTE Reserved1[52];                /* 04/04 */
1385     PVOID Reserved2[3];                /* 38/38 */
1386     HANDLE UniqueProcessId;            /* 44/50 */
1387     PVOID Reserved3;                   /* 48/58 */
1388     ULONG HandleCount;                 /* 4c/60 */
1389     BYTE Reserved4[4];                 /* 50/64 */
1390     PVOID Reserved5[11];               /* 54/68 */
1391     SIZE_T PeakPagefileUsage;          /* 80/c0 */
1392     SIZE_T PrivatePageCount;           /* 84/c8 */
1393     LARGE_INTEGER Reserved6[6];        /* 88/d0 */
1394 #endif
1395 } SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
1396 
1397 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION {
1398     ULONG RegistryQuotaAllowed;
1399     ULONG RegistryQuotaUsed;
1400     PVOID Reserved1;
1401 } SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION;
1402 
1403 typedef struct _SYSTEM_TIME_ADJUSTMENT {
1404     ULONG   TimeAdjustment;
1405     BOOLEAN TimeAdjustmentDisabled;
1406 } SYSTEM_TIME_ADJUSTMENT, *PSYSTEM_TIME_ADJUSTMENT;
1407 
1408 typedef struct _TIME_FIELDS
1409 {   CSHORT Year;
1410     CSHORT Month;
1411     CSHORT Day;
1412     CSHORT Hour;
1413     CSHORT Minute;
1414     CSHORT Second;
1415     CSHORT Milliseconds;
1416     CSHORT Weekday;
1417 } TIME_FIELDS, *PTIME_FIELDS;
1418 
1419 typedef struct _WINSTATIONINFORMATIONW {
1420   BYTE Reserved2[70];
1421   ULONG LogonId;
1422   BYTE Reserved3[1140];
1423 } WINSTATIONINFORMATIONW, *PWINSTATIONINFORMATIONW;
1424 
1425 typedef BOOLEAN (WINAPI * PWINSTATIONQUERYINFORMATIONW)(HANDLE,ULONG,WINSTATIONINFOCLASS,PVOID,ULONG,PULONG);
1426 
1427 typedef struct _LDR_RESOURCE_INFO
1428 {
1429     ULONG_PTR Type;
1430     ULONG_PTR Name;
1431     ULONG Language;
1432 } LDR_RESOURCE_INFO, *PLDR_RESOURCE_INFO;
1433 
1434 
1435 /* debug buffer definitions */
1436 
1437 typedef struct _DEBUG_BUFFER {
1438   HANDLE SectionHandle;
1439   PVOID  SectionBase;
1440   PVOID  RemoteSectionBase;
1441   ULONG  SectionBaseDelta;
1442   HANDLE EventPairHandle;
1443   ULONG  Unknown[2];
1444   HANDLE RemoteThreadHandle;
1445   ULONG  InfoClassMask;
1446   ULONG  SizeOfInfo;
1447   ULONG  AllocatedSize;
1448   ULONG  SectionSize;
1449   PVOID  ModuleInformation;
1450   PVOID  BackTraceInformation;
1451   PVOID  HeapInformation;
1452   PVOID  LockInformation;
1453   PVOID  Reserved[8];
1454 } DEBUG_BUFFER, *PDEBUG_BUFFER;
1455 
1456 #define PDI_MODULES                       0x01
1457 #define PDI_BACKTRACE                     0x02
1458 #define PDI_HEAPS                         0x04
1459 #define PDI_HEAP_TAGS                     0x08
1460 #define PDI_HEAP_BLOCKS                   0x10
1461 #define PDI_LOCKS                         0x20
1462 
1463 typedef struct _DEBUG_MODULE_INFORMATION {
1464   ULONG  Reserved[2];
1465   ULONG  Base;
1466   ULONG  Size;
1467   ULONG  Flags;
1468   USHORT Index;
1469   USHORT Unknown;
1470   USHORT LoadCount;
1471   USHORT ModuleNameOffset;
1472   CHAR   ImageName[256];
1473 } DEBUG_MODULE_INFORMATION, *PDEBUG_MODULE_INFORMATION;
1474 
1475 typedef struct _DEBUG_HEAP_INFORMATION {
1476   ULONG  Base;
1477   ULONG  Flags;
1478   USHORT Granularity;
1479   USHORT Unknown;
1480   ULONG  Allocated;
1481   ULONG  Committed;
1482   ULONG  TagCount;
1483   ULONG  BlockCount;
1484   ULONG  Reserved[7];
1485   PVOID  Tags;
1486   PVOID  Blocks;
1487 } DEBUG_HEAP_INFORMATION, *PDEBUG_HEAP_INFORMATION;
1488 
1489 typedef struct _DEBUG_LOCK_INFORMATION {
1490   PVOID  Address;
1491   USHORT Type;
1492   USHORT CreatorBackTraceIndex;
1493   ULONG  OwnerThreadId;
1494   ULONG  ActiveCount;
1495   ULONG  ContentionCount;
1496   ULONG  EntryCount;
1497   ULONG  RecursionCount;
1498   ULONG  NumberOfSharedWaiters;
1499   ULONG  NumberOfExclusiveWaiters;
1500 } DEBUG_LOCK_INFORMATION, *PDEBUG_LOCK_INFORMATION;
1501 
1502 typedef struct _PORT_MESSAGE_HEADER {
1503   USHORT DataSize;
1504   USHORT MessageSize;
1505   USHORT MessageType;
1506   USHORT VirtualRangesOffset;
1507   CLIENT_ID ClientId;
1508   ULONG MessageId;
1509   ULONG SectionSize;
1510 } PORT_MESSAGE_HEADER, *PPORT_MESSAGE_HEADER, PORT_MESSAGE, *PPORT_MESSAGE;
1511 
1512 typedef unsigned short RTL_ATOM, *PRTL_ATOM;
1513 
1514 /* Wine doesn't implement atom table as NT does:
1515  * - in NT, atom tables are user space tables, which ntdll directly accesses
1516  * - on Wine, (even local) atom tables are wineserver objects, hence a HANDLE
1517  */
1518 typedef struct atom_table *RTL_ATOM_TABLE, **PRTL_ATOM_TABLE;
1519 
1520 typedef enum _ATOM_INFORMATION_CLASS {
1521    AtomBasicInformation         = 0,
1522    AtomTableInformation         = 1,
1523 } ATOM_INFORMATION_CLASS;
1524 
1525 typedef struct _ATOM_BASIC_INFORMATION {
1526    USHORT       ReferenceCount;
1527    USHORT       Pinned;
1528    USHORT       NameLength;
1529    WCHAR        Name[1];
1530 } ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION;
1531 
1532 /* FIXME: names probably not correct */
1533 typedef struct _RTL_HANDLE
1534 {
1535     struct _RTL_HANDLE * Next;
1536 } RTL_HANDLE;
1537 
1538 /* FIXME: names probably not correct */
1539 typedef struct _RTL_HANDLE_TABLE
1540 {
1541     ULONG MaxHandleCount;  /* 0x00 */
1542     ULONG HandleSize;      /* 0x04 */
1543     ULONG Unused[2];       /* 0x08-0x0c */
1544     PVOID NextFree;        /* 0x10 */
1545     PVOID FirstHandle;     /* 0x14 */
1546     PVOID ReservedMemory;  /* 0x18 */
1547     PVOID MaxHandle;       /* 0x1c */
1548 } RTL_HANDLE_TABLE;
1549 
1550 /***********************************************************************
1551  * Defines
1552  */
1553 
1554 /* flags for NtCreateFile and NtOpenFile */
1555 #define FILE_DIRECTORY_FILE             0x00000001
1556 #define FILE_WRITE_THROUGH              0x00000002
1557 #define FILE_SEQUENTIAL_ONLY            0x00000004
1558 #define FILE_NO_INTERMEDIATE_BUFFERING  0x00000008
1559 #define FILE_SYNCHRONOUS_IO_ALERT       0x00000010
1560 #define FILE_SYNCHRONOUS_IO_NONALERT    0x00000020
1561 #define FILE_NON_DIRECTORY_FILE         0x00000040
1562 #define FILE_CREATE_TREE_CONNECTION     0x00000080
1563 #define FILE_COMPLETE_IF_OPLOCKED       0x00000100
1564 #define FILE_NO_EA_KNOWLEDGE            0x00000200
1565 #define FILE_OPEN_FOR_RECOVERY          0x00000400
1566 #define FILE_RANDOM_ACCESS              0x00000800
1567 #define FILE_DELETE_ON_CLOSE            0x00001000
1568 #define FILE_OPEN_BY_FILE_ID            0x00002000
1569 #define FILE_OPEN_FOR_BACKUP_INTENT     0x00004000
1570 #define FILE_NO_COMPRESSION             0x00008000
1571 #define FILE_RESERVE_OPFILTER           0x00100000
1572 #define FILE_TRANSACTED_MODE            0x00200000
1573 #define FILE_OPEN_OFFLINE_FILE          0x00400000
1574 #define FILE_OPEN_FOR_FREE_SPACE_QUERY  0x00800000
1575 
1576 #define FILE_ATTRIBUTE_VALID_FLAGS      0x00007fb7
1577 #define FILE_ATTRIBUTE_VALID_SET_FLAGS  0x000031a7
1578 
1579 /* status for NtCreateFile or NtOpenFile */
1580 #define FILE_SUPERSEDED                 0
1581 #define FILE_OPENED                     1
1582 #define FILE_CREATED                    2
1583 #define FILE_OVERWRITTEN                3
1584 #define FILE_EXISTS                     4
1585 #define FILE_DOES_NOT_EXIST             5
1586 
1587 /* disposition for NtCreateFile */
1588 #define FILE_SUPERSEDE                  0
1589 #define FILE_OPEN                       1
1590 #define FILE_CREATE                     2
1591 #define FILE_OPEN_IF                    3
1592 #define FILE_OVERWRITE                  4
1593 #define FILE_OVERWRITE_IF               5
1594 #define FILE_MAXIMUM_DISPOSITION        5
1595 
1596 /* Characteristics of a File System */
1597 #define FILE_REMOVABLE_MEDIA            0x00000001
1598 #define FILE_READ_ONLY_DEVICE           0x00000002
1599 #define FILE_FLOPPY_DISKETTE            0x00000004
1600 #define FILE_WRITE_ONE_MEDIA            0x00000008
1601 #define FILE_REMOTE_DEVICE              0x00000010
1602 #define FILE_DEVICE_IS_MOUNTED          0x00000020
1603 #define FILE_VIRTUAL_VOLUME             0x00000040
1604 #define FILE_AUTOGENERATED_DEVICE_NAME  0x00000080
1605 #define FILE_DEVICE_SECURE_OPEN         0x00000100
1606 
1607 /* options for NtCreateNamedPipeFile */
1608 #define FILE_PIPE_INBOUND               0x00000000
1609 #define FILE_PIPE_OUTBOUND              0x00000001
1610 #define FILE_PIPE_FULL_DUPLEX           0x00000002
1611 
1612 /* options for pipe's type */
1613 #define FILE_PIPE_TYPE_MESSAGE          0x00000001
1614 #define FILE_PIPE_TYPE_BYTE             0x00000000
1615 /* and client / server end */
1616 #define FILE_PIPE_SERVER_END            0x00000001
1617 #define FILE_PIPE_CLIENT_END            0x00000000
1618 
1619 #if (_WIN32_WINNT >= 0x0501)
1620 #define INTERNAL_TS_ACTIVE_CONSOLE_ID ( *((volatile ULONG*)(0x7ffe02d8)) )
1621 #endif /* (_WIN32_WINNT >= 0x0501) */
1622 
1623 #define LOGONID_CURRENT    ((ULONG)-1)
1624 
1625 #define OBJ_INHERIT          0x00000002L
1626 #define OBJ_PERMANENT        0x00000010L
1627 #define OBJ_EXCLUSIVE        0x00000020L
1628 #define OBJ_CASE_INSENSITIVE 0x00000040L
1629 #define OBJ_OPENIF           0x00000080L
1630 #define OBJ_OPENLINK         0x00000100L
1631 #define OBJ_KERNEL_HANDLE    0x00000200L
1632 #define OBJ_VALID_ATTRIBUTES 0x000003F2L
1633 
1634 #define SERVERNAME_CURRENT ((HANDLE)NULL)
1635 
1636 typedef void (CALLBACK *PNTAPCFUNC)(ULONG_PTR,ULONG_PTR,ULONG_PTR); /* FIXME: not the right name */
1637 typedef void (CALLBACK *PRTL_THREAD_START_ROUTINE)(LPVOID); /* FIXME: not the right name */
1638 typedef DWORD (CALLBACK *PRTL_WORK_ITEM_ROUTINE)(LPVOID); /* FIXME: not the right name */
1639 typedef void (NTAPI *RTL_WAITORTIMERCALLBACKFUNC)(PVOID,BOOLEAN); /* FIXME: not the right name */
1640 
1641 
1642 /* DbgPrintEx default levels */
1643 #define DPFLTR_ERROR_LEVEL     0
1644 #define DPFLTR_WARNING_LEVEL   1
1645 #define DPFLTR_TRACE_LEVEL     2
1646 #define DPFLTR_INFO_LEVEL      3
1647 #define DPFLTR_MASK    0x8000000
1648 
1649 /* Well-known LUID values */
1650 #define SE_MIN_WELL_KNOWN_PRIVILEGE       2L
1651 #define SE_CREATE_TOKEN_PRIVILEGE         2L
1652 #define SE_ASSIGNPRIMARYTOKEN_PRIVILEGE   3L
1653 #define SE_LOCK_MEMORY_PRIVILEGE          4L
1654 #define SE_INCREASE_QUOTA_PRIVILEGE       5L
1655 #define SE_UNSOLICITED_INPUT_PRIVILEGE    6L /* obsolete */
1656 #define SE_MACHINE_ACCOUNT_PRIVILEGE      6L
1657 #define SE_TCB_PRIVILEGE                  7L
1658 #define SE_SECURITY_PRIVILEGE             8L
1659 #define SE_TAKE_OWNERSHIP_PRIVILEGE       9L
1660 #define SE_LOAD_DRIVER_PRIVILEGE         10L
1661 #define SE_SYSTEM_PROFILE_PRIVILEGE      11L
1662 #define SE_SYSTEMTIME_PRIVILEGE          12L
1663 #define SE_PROF_SINGLE_PROCESS_PRIVILEGE 13L
1664 #define SE_INC_BASE_PRIORITY_PRIVILEGE   14L
1665 #define SE_CREATE_PAGEFILE_PRIVILEGE     15L
1666 #define SE_CREATE_PERMANENT_PRIVILEGE    16L
1667 #define SE_BACKUP_PRIVILEGE              17L
1668 #define SE_RESTORE_PRIVILEGE             18L
1669 #define SE_SHUTDOWN_PRIVILEGE            19L
1670 #define SE_DEBUG_PRIVILEGE               20L
1671 #define SE_AUDIT_PRIVILEGE               21L
1672 #define SE_SYSTEM_ENVIRONMENT_PRIVILEGE  22L
1673 #define SE_CHANGE_NOTIFY_PRIVILEGE       23L
1674 #define SE_REMOTE_SHUTDOWN_PRIVILEGE     24L
1675 #define SE_UNDOCK_PRIVILEGE              25L
1676 #define SE_SYNC_AGENT_PRIVILEGE          26L
1677 #define SE_ENABLE_DELEGATION_PRIVILEGE   27L
1678 #define SE_MANAGE_VOLUME_PRIVILEGE       28L
1679 #define SE_IMPERSONATE_PRIVILEGE         29L
1680 #define SE_CREATE_GLOBAL_PRIVILEGE       30L
1681 #define SE_MAX_WELL_KNOWN_PRIVILEGE      SE_CREATE_GLOBAL_PRIVILEGE
1682 
1683 
1684 /* Rtl*Registry* functions structs and defines */
1685 #define RTL_REGISTRY_ABSOLUTE             0
1686 #define RTL_REGISTRY_SERVICES             1
1687 #define RTL_REGISTRY_CONTROL              2
1688 #define RTL_REGISTRY_WINDOWS_NT           3
1689 #define RTL_REGISTRY_DEVICEMAP            4
1690 #define RTL_REGISTRY_USER                 5
1691 
1692 #define RTL_REGISTRY_HANDLE       0x40000000
1693 #define RTL_REGISTRY_OPTIONAL     0x80000000
1694 
1695 #define RTL_QUERY_REGISTRY_SUBKEY         0x00000001
1696 #define RTL_QUERY_REGISTRY_TOPKEY         0x00000002
1697 #define RTL_QUERY_REGISTRY_REQUIRED       0x00000004
1698 #define RTL_QUERY_REGISTRY_NOVALUE        0x00000008
1699 #define RTL_QUERY_REGISTRY_NOEXPAND       0x00000010
1700 #define RTL_QUERY_REGISTRY_DIRECT         0x00000020
1701 #define RTL_QUERY_REGISTRY_DELETE         0x00000040
1702 
1703 typedef NTSTATUS (WINAPI *PRTL_QUERY_REGISTRY_ROUTINE)( PCWSTR ValueName,
1704                                                         ULONG  ValueType,
1705                                                         PVOID  ValueData,
1706                                                         ULONG  ValueLength,
1707                                                         PVOID  Context,
1708                                                         PVOID  EntryContext);
1709 
1710 typedef struct _RTL_QUERY_REGISTRY_TABLE
1711 {
1712   PRTL_QUERY_REGISTRY_ROUTINE  QueryRoutine;
1713   ULONG  Flags;
1714   PWSTR  Name;
1715   PVOID  EntryContext;
1716   ULONG  DefaultType;
1717   PVOID  DefaultData;
1718   ULONG  DefaultLength;
1719 } RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
1720 
1721 typedef struct _KEY_MULTIPLE_VALUE_INFORMATION
1722 {
1723   PUNICODE_STRING ValueName;
1724   ULONG DataLength;
1725   ULONG DataOffset;
1726   ULONG Type;
1727 } KEY_MULTIPLE_VALUE_INFORMATION, *PKEY_MULTIPLE_VALUE_INFORMATION;
1728 
1729 typedef VOID (CALLBACK *PRTL_OVERLAPPED_COMPLETION_ROUTINE)(DWORD,DWORD,LPVOID);
1730 
1731 typedef VOID (*PTIMER_APC_ROUTINE) ( PVOID, ULONG, LONG );
1732 
1733 typedef enum _EVENT_TYPE {
1734   NotificationEvent,
1735   SynchronizationEvent
1736 } EVENT_TYPE, *PEVENT_TYPE;
1737 
1738 typedef enum _EVENT_INFORMATION_CLASS {
1739   EventBasicInformation
1740 } EVENT_INFORMATION_CLASS, *PEVENT_INFORMATION_CLASS;
1741 
1742 typedef struct _EVENT_BASIC_INFORMATION {
1743   EVENT_TYPE EventType;
1744   LONG EventState;
1745 } EVENT_BASIC_INFORMATION, *PEVENT_BASIC_INFORMATION;
1746 
1747 typedef enum _SEMAPHORE_INFORMATION_CLASS {
1748   SemaphoreBasicInformation
1749 } SEMAPHORE_INFORMATION_CLASS, *PSEMAPHORE_INFORMATION_CLASS;
1750 
1751 typedef struct _SEMAPHORE_BASIC_INFORMATION {
1752   ULONG CurrentCount;
1753   ULONG MaximumCount;
1754 } SEMAPHORE_BASIC_INFORMATION, *PSEMAPHORE_BASIC_INFORMATION;
1755 
1756 typedef enum _SECTION_INFORMATION_CLASS
1757 {
1758   SectionBasicInformation,
1759   SectionImageInformation,
1760 } SECTION_INFORMATION_CLASS;
1761 
1762 typedef struct _SECTION_BASIC_INFORMATION {
1763   ULONG BaseAddress;
1764   ULONG Attributes;
1765   LARGE_INTEGER Size;
1766 } SECTION_BASIC_INFORMATION, *PSECTION_BASIC_INFORMATION;
1767 
1768 typedef struct _SECTION_IMAGE_INFORMATION {
1769   PVOID EntryPoint;
1770   ULONG StackZeroBits;
1771   ULONG StackReserved;
1772   ULONG StackCommit;
1773   ULONG ImageSubsystem;
1774   WORD SubsystemVersionLow;
1775   WORD SubsystemVersionHigh;
1776   ULONG Unknown1;
1777   ULONG ImageCharacteristics;
1778   ULONG ImageMachineType;
1779   ULONG Unknown2[3];
1780 } SECTION_IMAGE_INFORMATION, *PSECTION_IMAGE_INFORMATION;
1781 
1782 typedef struct _LPC_SECTION_WRITE {
1783   ULONG Length;
1784   HANDLE SectionHandle;
1785   ULONG SectionOffset;
1786   ULONG ViewSize;
1787   PVOID ViewBase;
1788   PVOID TargetViewBase;
1789 } LPC_SECTION_WRITE, *PLPC_SECTION_WRITE;
1790 
1791 typedef struct _LPC_SECTION_READ {
1792   ULONG Length;
1793   ULONG ViewSize;
1794   PVOID ViewBase;
1795 } LPC_SECTION_READ, *PLPC_SECTION_READ;
1796 
1797 typedef struct _LPC_MESSAGE {
1798   USHORT DataSize;
1799   USHORT MessageSize;
1800   USHORT MessageType;
1801   USHORT VirtualRangesOffset;
1802   CLIENT_ID ClientId;
1803   ULONG_PTR MessageId;
1804   ULONG_PTR SectionSize;
1805   UCHAR Data[ANYSIZE_ARRAY];
1806 } LPC_MESSAGE, *PLPC_MESSAGE;
1807 
1808 typedef enum _SHUTDOWN_ACTION {
1809   ShutdownNoReboot,
1810   ShutdownReboot,
1811   ShutdownPowerOff
1812 } SHUTDOWN_ACTION, *PSHUTDOWN_ACTION;
1813 
1814 typedef enum _KPROFILE_SOURCE {
1815   ProfileTime,
1816   ProfileAlignmentFixup,
1817   ProfileTotalIssues,
1818   ProfilePipelineDry,
1819   ProfileLoadInstructions,
1820   ProfilePipelineFrozen,
1821   ProfileBranchInstructions,
1822   ProfileTotalNonissues,
1823   ProfileDcacheMisses,
1824   ProfileIcacheMisses,
1825   ProfileCacheMisses,
1826   ProfileBranchMispredictions,
1827   ProfileStoreInstructions,
1828   ProfileFpInstructions,
1829   ProfileIntegerInstructions,
1830   Profile2Issue,
1831   Profile3Issue,
1832   Profile4Issue,
1833   ProfileSpecialInstructions,
1834   ProfileTotalCycles,
1835   ProfileIcacheIssues,
1836   ProfileDcacheAccesses,
1837   ProfileMemoryBarrierCycles,
1838   ProfileLoadLinkedIssues,
1839   ProfileMaximum
1840 } KPROFILE_SOURCE, *PKPROFILE_SOURCE;
1841 
1842 typedef struct _DIRECTORY_BASIC_INFORMATION {
1843   UNICODE_STRING ObjectName;
1844   UNICODE_STRING ObjectTypeName;
1845 } DIRECTORY_BASIC_INFORMATION, *PDIRECTORY_BASIC_INFORMATION;
1846 
1847 typedef struct _INITIAL_TEB {
1848   PVOID StackBase;
1849   PVOID StackLimit;
1850   PVOID StackCommit;
1851   PVOID StackCommitMax;
1852   PVOID StackReserved;
1853 } INITIAL_TEB, *PINITIAL_TEB;
1854 
1855 typedef enum _PORT_INFORMATION_CLASS {
1856   PortNoInformation
1857 } PORT_INFORMATION_CLASS, *PPORT_INFORMATION_CLASS;
1858 
1859 typedef enum _IO_COMPLETION_INFORMATION_CLASS {
1860   IoCompletionBasicInformation
1861 } IO_COMPLETION_INFORMATION_CLASS, *PIO_COMPLETION_INFORMATION_CLASS;
1862 
1863 typedef struct _FILE_COMPLETION_INFORMATION {
1864     HANDLE CompletionPort;
1865     ULONG_PTR CompletionKey;
1866 } FILE_COMPLETION_INFORMATION, *PFILE_COMPLETION_INFORMATION;
1867 
1868 #define IO_COMPLETION_QUERY_STATE  0x0001
1869 #define IO_COMPLETION_MODIFY_STATE 0x0002
1870 #define IO_COMPLETION_ALL_ACCESS   (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
1871 
1872 typedef enum _HARDERROR_RESPONSE_OPTION {
1873   OptionAbortRetryIgnore,
1874   OptionOk,
1875   OptionOkCancel,
1876   OptionRetryCancel,
1877   OptionYesNo,
1878   OptionYesNoCancel,
1879   OptionShutdownSystem
1880 } HARDERROR_RESPONSE_OPTION, *PHARDERROR_RESPONSE_OPTION;
1881 
1882 typedef enum _HARDERROR_RESPONSE {
1883   ResponseReturnToCaller,
1884   ResponseNotHandled,
1885   ResponseAbort,
1886   ResponseCancel,
1887   ResponseIgnore,
1888   ResponseNo,
1889   ResponseOk,
1890   ResponseRetry,
1891   ResponseYes
1892 } HARDERROR_RESPONSE, *PHARDERROR_RESPONSE;
1893 
1894 typedef enum _SYSDBG_COMMAND {
1895   SysDbgQueryModuleInformation,
1896   SysDbgQueryTraceInformation,
1897   SysDbgSetTracepoint,
1898   SysDbgSetSpecialCall,
1899   SysDbgClearSpecialCalls,
1900   SysDbgQuerySpecialCalls
1901 } SYSDBG_COMMAND, *PSYSDBG_COMMAND;
1902 
1903 
1904 /*************************************************************************
1905  * Loader structures
1906  *
1907  * Those are not part of standard Winternl.h
1908  */
1909 typedef struct _LDR_MODULE
1910 {
1911     LIST_ENTRY          InLoadOrderModuleList;
1912     LIST_ENTRY          InMemoryOrderModuleList;
1913     LIST_ENTRY          InInitializationOrderModuleList;
1914     void*               BaseAddress;
1915     void*               EntryPoint;
1916     ULONG               SizeOfImage;
1917     UNICODE_STRING      FullDllName;
1918     UNICODE_STRING      BaseDllName;
1919     ULONG               Flags;
1920     SHORT               LoadCount;
1921     SHORT               TlsIndex;
1922     HANDLE              SectionHandle;
1923     ULONG               CheckSum;
1924     ULONG               TimeDateStamp;
1925     HANDLE              ActivationContext;
1926 } LDR_MODULE, *PLDR_MODULE;
1927 
1928 /* those defines are (some of the) regular LDR_MODULE.Flags values */
1929 #define LDR_IMAGE_IS_DLL                0x00000004
1930 #define LDR_LOAD_IN_PROGRESS            0x00001000
1931 #define LDR_UNLOAD_IN_PROGRESS          0x00002000
1932 #define LDR_NO_DLL_CALLS                0x00040000
1933 #define LDR_PROCESS_ATTACHED            0x00080000
1934 #define LDR_MODULE_REBASED              0x00200000
1935 
1936 /* these ones is Wine specific */
1937 #define LDR_DONT_RESOLVE_REFS           0x40000000
1938 #define LDR_WINE_INTERNAL               0x80000000
1939 
1940 /* FIXME: to be checked */
1941 #define MAXIMUM_FILENAME_LENGTH 256
1942 
1943 typedef struct _SYSTEM_MODULE
1944 {
1945     PVOID               Reserved1;                      /* 00/00 */
1946     PVOID               Reserved2;                      /* 04/08 */
1947     PVOID               ImageBaseAddress;               /* 08/10 */
1948     ULONG               ImageSize;                      /* 0c/18 */
1949     ULONG               Flags;                          /* 10/1c */
1950     WORD                Id;                             /* 14/20 */
1951     WORD                Rank;                           /* 16/22 */
1952     WORD                Unknown;                        /* 18/24 */
1953     WORD                NameOffset;                     /* 1a/26 */
1954     BYTE                Name[MAXIMUM_FILENAME_LENGTH];  /* 1c/28 */
1955 } SYSTEM_MODULE, *PSYSTEM_MODULE;
1956 
1957 typedef struct _SYSTEM_MODULE_INFORMATION
1958 {
1959     ULONG               ModulesCount;
1960     SYSTEM_MODULE       Modules[1]; /* FIXME: should be Modules[0] */
1961 } SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;
1962 
1963 /***********************************************************************
1964  * Function declarations
1965  */
1966 
1967 #if defined(__i386__) && defined(__GNUC__)
1968 static inline void WINAPI DbgBreakPoint(void) { __asm__ __volatile__("int3"); }
1969 static inline void WINAPI DbgUserBreakPoint(void) { __asm__ __volatile__("int3"); }
1970 #else  /* __i386__ && __GNUC__ */
1971 NTSYSAPI void WINAPI DbgBreakPoint(void);
1972 NTSYSAPI void WINAPI DbgUserBreakPoint(void);
1973 #endif  /* __i386__ && __GNUC__ */
1974 NTSYSAPI NTSTATUS WINAPIV DbgPrint(LPCSTR fmt, ...);
1975 NTSYSAPI NTSTATUS WINAPIV DbgPrintEx(ULONG iComponentId, ULONG Level, LPCSTR fmt, ...);
1976 NTSYSAPI NTSTATUS  WINAPI LdrAccessResource(HMODULE,const IMAGE_RESOURCE_DATA_ENTRY*,void**,PULONG);
1977 NTSYSAPI NTSTATUS  WINAPI LdrAddRefDll(ULONG,HMODULE);
1978 NTSYSAPI NTSTATUS  WINAPI LdrFindResourceDirectory_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DIRECTORY**);
1979 NTSYSAPI NTSTATUS  WINAPI LdrFindResource_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DATA_ENTRY**);
1980 NTSYSAPI NTSTATUS  WINAPI LdrDisableThreadCalloutsForDll(HMODULE);
1981 NTSYSAPI NTSTATUS  WINAPI LdrFindEntryForAddress(const void*, PLDR_MODULE*);
1982 NTSYSAPI NTSTATUS  WINAPI LdrGetDllHandle(LPCWSTR, ULONG, const UNICODE_STRING*, HMODULE*);
1983 NTSYSAPI NTSTATUS  WINAPI LdrGetProcedureAddress(HMODULE, const ANSI_STRING*, ULONG, void**);
1984 NTSYSAPI void      WINAPI LdrInitializeThunk(void*,ULONG_PTR,ULONG_PTR,ULONG_PTR);
1985 NTSYSAPI NTSTATUS  WINAPI LdrLoadDll(LPCWSTR, DWORD, const UNICODE_STRING*, HMODULE*);
1986 NTSYSAPI NTSTATUS  WINAPI LdrLockLoaderLock(ULONG,ULONG*,ULONG*);
1987 IMAGE_BASE_RELOCATION * WINAPI LdrProcessRelocationBlock(void*,UINT,USHORT*,INT_PTR);
1988 NTSYSAPI NTSTATUS  WINAPI LdrQueryProcessModuleInformation(SYSTEM_MODULE_INFORMATION*, ULONG, ULONG*);
1989 NTSYSAPI void      WINAPI LdrShutdownProcess(void);
1990 NTSYSAPI void      WINAPI LdrShutdownThread(void);
1991 NTSYSAPI NTSTATUS  WINAPI LdrUnloadDll(HMODULE);
1992 NTSYSAPI NTSTATUS  WINAPI LdrUnlockLoaderLock(ULONG,ULONG);
1993 NTSYSAPI NTSTATUS  WINAPI NtAcceptConnectPort(PHANDLE,ULONG,PLPC_MESSAGE,BOOLEAN,PLPC_SECTION_WRITE,PLPC_SECTION_READ);
1994 NTSYSAPI NTSTATUS  WINAPI NtAccessCheck(PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,PGENERIC_MAPPING,PPRIVILEGE_SET,PULONG,PULONG,NTSTATUS*);
1995 NTSYSAPI NTSTATUS  WINAPI NtAccessCheckAndAuditAlarm(PUNICODE_STRING,HANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,ACCESS_MASK,PGENERIC_MAPPING,BOOLEAN,PACCESS_MASK,PBOOLEAN,PBOOLEAN);
1996 NTSYSAPI NTSTATUS  WINAPI NtAddAtom(const WCHAR*,ULONG,RTL_ATOM*);
1997 NTSYSAPI NTSTATUS  WINAPI NtAdjustGroupsToken(HANDLE,BOOLEAN,PTOKEN_GROUPS,ULONG,PTOKEN_GROUPS,PULONG);
1998 NTSYSAPI NTSTATUS  WINAPI NtAdjustPrivilegesToken(HANDLE,BOOLEAN,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD);
1999 NTSYSAPI NTSTATUS  WINAPI NtAlertResumeThread(HANDLE,PULONG);
2000 NTSYSAPI NTSTATUS  WINAPI NtAlertThread(HANDLE ThreadHandle);
2001 NTSYSAPI NTSTATUS  WINAPI NtAllocateLocallyUniqueId(PLUID lpLuid);
2002 NTSYSAPI NTSTATUS  WINAPI NtAllocateUuids(PULARGE_INTEGER,PULONG,PULONG);
2003 NTSYSAPI NTSTATUS  WINAPI NtAllocateVirtualMemory(HANDLE,PVOID*,ULONG,SIZE_T*,ULONG,ULONG);
2004 NTSYSAPI NTSTATUS  WINAPI NtAreMappedFilesTheSame(PVOID,PVOID);
2005 NTSYSAPI NTSTATUS  WINAPI NtAssignProcessToJobObject(HANDLE,HANDLE);
2006 NTSYSAPI NTSTATUS  WINAPI NtCallbackReturn(PVOID,ULONG,NTSTATUS);
2007 NTSYSAPI NTSTATUS  WINAPI NtCancelIoFile(HANDLE,PIO_STATUS_BLOCK);
2008 NTSYSAPI NTSTATUS  WINAPI NtCancelIoFileEx(HANDLE,PIO_STATUS_BLOCK,PIO_STATUS_BLOCK);
2009 NTSYSAPI NTSTATUS  WINAPI NtCancelTimer(HANDLE, BOOLEAN*);
2010 NTSYSAPI NTSTATUS  WINAPI NtClearEvent(HANDLE);
2011 NTSYSAPI NTSTATUS  WINAPI NtClose(HANDLE);
2012 NTSYSAPI NTSTATUS  WINAPI NtCloseObjectAuditAlarm(PUNICODE_STRING,HANDLE,BOOLEAN);
2013 NTSYSAPI NTSTATUS  WINAPI NtCompleteConnectPort(HANDLE);
2014 NTSYSAPI NTSTATUS  WINAPI NtConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
2015 NTSYSAPI NTSTATUS  WINAPI NtContinue(PCONTEXT,BOOLEAN);
2016 NTSYSAPI NTSTATUS  WINAPI NtCreateDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
2017 NTSYSAPI NTSTATUS  WINAPI NtCreateEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *,BOOLEAN,BOOLEAN);
2018 NTSYSAPI NTSTATUS  WINAPI NtCreateEventPair(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
2019 NTSYSAPI NTSTATUS  WINAPI NtCreateFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,PLARGE_INTEGER,ULONG,ULONG,ULONG,ULONG,PVOID,ULONG);
2020 NTSYSAPI NTSTATUS  WINAPI NtCreateIoCompletion(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,ULONG);
2021 NTSYSAPI NTSTATUS  WINAPI NtCreateJobObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2022 NTSYSAPI NTSTATUS  WINAPI NtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
2023 NTSYSAPI NTSTATUS  WINAPI NtCreateMailslotFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,PLARGE_INTEGER);
2024 NTSYSAPI NTSTATUS  WINAPI NtCreateMutant(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,BOOLEAN);
2025 NTSYSAPI NTSTATUS  WINAPI NtCreateNamedPipeFile(PHANDLE,ULONG,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,PLARGE_INTEGER);
2026 NTSYSAPI NTSTATUS  WINAPI NtCreatePagingFile(PUNICODE_STRING,PLARGE_INTEGER,PLARGE_INTEGER,PLARGE_INTEGER);
2027 NTSYSAPI NTSTATUS  WINAPI NtCreatePort(PHANDLE,POBJECT_ATTRIBUTES,ULONG,ULONG,PULONG);
2028 NTSYSAPI NTSTATUS  WINAPI NtCreateProcess(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,HANDLE,BOOLEAN,HANDLE,HANDLE,HANDLE);
2029 NTSYSAPI NTSTATUS  WINAPI NtCreateProfile(PHANDLE,HANDLE,PVOID,ULONG,ULONG,PVOID,ULONG,KPROFILE_SOURCE,KAFFINITY);
2030 NTSYSAPI NTSTATUS  WINAPI NtCreateSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const LARGE_INTEGER*,ULONG,ULONG,HANDLE);
2031 NTSYSAPI NTSTATUS  WINAPI NtCreateSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,LONG,LONG);
2032 NTSYSAPI NTSTATUS  WINAPI NtCreateSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PUNICODE_STRING);
2033 NTSYSAPI NTSTATUS  WINAPI NtCreateThread(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,HANDLE,PCLIENT_ID,PCONTEXT,PINITIAL_TEB,BOOLEAN);
2034 NTSYSAPI NTSTATUS  WINAPI NtCreateTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*, TIMER_TYPE);
2035 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);
2036 NTSYSAPI NTSTATUS  WINAPI NtDelayExecution(BOOLEAN,const LARGE_INTEGER*);
2037 NTSYSAPI NTSTATUS  WINAPI NtDeleteAtom(RTL_ATOM);
2038 NTSYSAPI NTSTATUS  WINAPI NtDeleteFile(POBJECT_ATTRIBUTES);
2039 NTSYSAPI NTSTATUS  WINAPI NtDeleteKey(HANDLE);
2040 NTSYSAPI NTSTATUS  WINAPI NtDeleteValueKey(HANDLE,const UNICODE_STRING *);
2041 NTSYSAPI NTSTATUS  WINAPI NtDeviceIoControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
2042 NTSYSAPI NTSTATUS  WINAPI NtDisplayString(PUNICODE_STRING);
2043 NTSYSAPI NTSTATUS  WINAPI NtDuplicateObject(HANDLE,HANDLE,HANDLE,PHANDLE,ACCESS_MASK,ULONG,ULONG);
2044 NTSYSAPI NTSTATUS  WINAPI NtDuplicateToken(HANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,PHANDLE);
2045 NTSYSAPI NTSTATUS  WINAPI NtEnumerateKey(HANDLE,ULONG,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
2046 NTSYSAPI NTSTATUS  WINAPI NtEnumerateValueKey(HANDLE,ULONG,KEY_VALUE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2047 NTSYSAPI NTSTATUS  WINAPI NtExtendSection(HANDLE,PLARGE_INTEGER);
2048 NTSYSAPI NTSTATUS  WINAPI NtFindAtom(const WCHAR*,ULONG,RTL_ATOM*);
2049 NTSYSAPI NTSTATUS  WINAPI NtFlushBuffersFile(HANDLE,IO_STATUS_BLOCK*);
2050 NTSYSAPI NTSTATUS  WINAPI NtFlushInstructionCache(HANDLE,LPCVOID,SIZE_T);
2051 NTSYSAPI NTSTATUS  WINAPI NtFlushKey(HANDLE);
2052 NTSYSAPI NTSTATUS  WINAPI NtFlushVirtualMemory(HANDLE,LPCVOID*,SIZE_T*,ULONG);
2053 NTSYSAPI NTSTATUS  WINAPI NtFlushWriteBuffer(VOID);
2054 NTSYSAPI NTSTATUS  WINAPI NtFreeVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
2055 NTSYSAPI NTSTATUS  WINAPI NtFsControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
2056 NTSYSAPI NTSTATUS  WINAPI NtGetContextThread(HANDLE,CONTEXT*);
2057 NTSYSAPI NTSTATUS  WINAPI NtGetPlugPlayEvent(ULONG,ULONG,PVOID,ULONG);
2058 NTSYSAPI ULONG     WINAPI NtGetTickCount(VOID);
2059 NTSYSAPI NTSTATUS  WINAPI NtGetWriteWatch(HANDLE,ULONG,PVOID,SIZE_T,PVOID*,ULONG_PTR*,ULONG*);
2060 NTSYSAPI NTSTATUS  WINAPI NtImpersonateAnonymousToken(HANDLE);
2061 NTSYSAPI NTSTATUS  WINAPI NtImpersonateClientOfPort(HANDLE,PPORT_MESSAGE);
2062 NTSYSAPI NTSTATUS  WINAPI NtImpersonateThread(HANDLE,HANDLE,PSECURITY_QUALITY_OF_SERVICE);
2063 NTSYSAPI NTSTATUS  WINAPI NtInitializeRegistry(BOOLEAN);
2064 NTSYSAPI NTSTATUS  WINAPI NtInitiatePowerAction(POWER_ACTION,SYSTEM_POWER_STATE,ULONG,BOOLEAN);
2065 NTSYSAPI NTSTATUS  WINAPI NtIsProcessInJob(HANDLE,HANDLE);
2066 NTSYSAPI NTSTATUS  WINAPI NtListenPort(HANDLE,PLPC_MESSAGE);
2067 NTSYSAPI NTSTATUS  WINAPI NtLoadDriver(const UNICODE_STRING *);
2068 NTSYSAPI NTSTATUS  WINAPI NtLoadKey(const OBJECT_ATTRIBUTES *,OBJECT_ATTRIBUTES *);
2069 NTSYSAPI NTSTATUS  WINAPI NtLockFile(HANDLE,HANDLE,PIO_APC_ROUTINE,void*,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,ULONG*,BOOLEAN,BOOLEAN);
2070 NTSYSAPI NTSTATUS  WINAPI NtLockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
2071 NTSYSAPI NTSTATUS  WINAPI NtMakeTemporaryObject(HANDLE);
2072 NTSYSAPI NTSTATUS  WINAPI NtMapViewOfSection(HANDLE,HANDLE,PVOID*,ULONG,SIZE_T,const LARGE_INTEGER*,SIZE_T*,SECTION_INHERIT,ULONG,ULONG);
2073 NTSYSAPI NTSTATUS  WINAPI NtNotifyChangeDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,ULONG,BOOLEAN);
2074 NTSYSAPI NTSTATUS  WINAPI NtNotifyChangeKey(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN);
2075 NTSYSAPI NTSTATUS  WINAPI NtOpenDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
2076 NTSYSAPI NTSTATUS  WINAPI NtOpenEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
2077 NTSYSAPI NTSTATUS  WINAPI NtOpenEventPair(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
2078 NTSYSAPI NTSTATUS  WINAPI NtOpenFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG);
2079 NTSYSAPI NTSTATUS  WINAPI NtOpenIoCompletion(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
2080 NTSYSAPI NTSTATUS  WINAPI NtOpenJobObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2081 NTSYSAPI NTSTATUS  WINAPI NtOpenKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
2082 NTSYSAPI NTSTATUS  WINAPI NtOpenMutant(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2083 NTSYSAPI NTSTATUS  WINAPI NtOpenObjectAuditAlarm(PUNICODE_STRING,PHANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,ACCESS_MASK,PPRIVILEGE_SET,BOOLEAN,BOOLEAN,PBOOLEAN);
2084 NTSYSAPI NTSTATUS  WINAPI NtOpenProcess(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
2085 NTSYSAPI NTSTATUS  WINAPI NtOpenProcessToken(HANDLE,DWORD,HANDLE *);
2086 NTSYSAPI NTSTATUS  WINAPI NtOpenProcessTokenEx(HANDLE,DWORD,DWORD,HANDLE *);
2087 NTSYSAPI NTSTATUS  WINAPI NtOpenSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2088 NTSYSAPI NTSTATUS  WINAPI NtOpenSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2089 NTSYSAPI NTSTATUS  WINAPI NtOpenSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
2090 NTSYSAPI NTSTATUS  WINAPI NtOpenThread(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
2091 NTSYSAPI NTSTATUS  WINAPI NtOpenThreadToken(HANDLE,DWORD,BOOLEAN,HANDLE *);
2092 NTSYSAPI NTSTATUS  WINAPI NtOpenThreadTokenEx(HANDLE,DWORD,BOOLEAN,DWORD,HANDLE *);
2093 NTSYSAPI NTSTATUS  WINAPI NtOpenTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*);
2094 NTSYSAPI NTSTATUS  WINAPI NtPowerInformation(POWER_INFORMATION_LEVEL,PVOID,ULONG,PVOID,ULONG);
2095 NTSYSAPI NTSTATUS  WINAPI NtPrivilegeCheck(HANDLE,PPRIVILEGE_SET,PBOOLEAN);
2096 NTSYSAPI NTSTATUS  WINAPI NtPrivilegeObjectAuditAlarm(PUNICODE_STRING,HANDLE,HANDLE,ULONG,PPRIVILEGE_SET,BOOLEAN);
2097 NTSYSAPI NTSTATUS  WINAPI NtPrivilegedServiceAuditAlarm(PUNICODE_STRING,PUNICODE_STRING,HANDLE,PPRIVILEGE_SET,BOOLEAN);
2098 NTSYSAPI NTSTATUS  WINAPI NtProtectVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG,ULONG*);
2099 NTSYSAPI NTSTATUS  WINAPI NtPulseEvent(HANDLE,PULONG);
2100 NTSYSAPI NTSTATUS  WINAPI NtQueueApcThread(HANDLE,PNTAPCFUNC,ULONG_PTR,ULONG_PTR,ULONG_PTR);
2101 NTSYSAPI NTSTATUS  WINAPI NtQueryAttributesFile(const OBJECT_ATTRIBUTES*,FILE_BASIC_INFORMATION*);
2102 NTSYSAPI NTSTATUS  WINAPI NtQueryDefaultLocale(BOOLEAN,LCID*);
2103 NTSYSAPI NTSTATUS  WINAPI NtQueryDefaultUILanguage(LANGID*);
2104 NTSYSAPI NTSTATUS  WINAPI NtQueryDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS,BOOLEAN,PUNICODE_STRING,BOOLEAN);
2105 NTSYSAPI NTSTATUS  WINAPI NtQueryDirectoryObject(HANDLE,PDIRECTORY_BASIC_INFORMATION,ULONG,BOOLEAN,BOOLEAN,PULONG,PULONG);
2106 NTSYSAPI NTSTATUS  WINAPI NtQueryEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,BOOLEAN,PVOID,ULONG,PULONG,BOOLEAN);
2107 NTSYSAPI NTSTATUS  WINAPI NtQueryEvent(HANDLE,EVENT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2108 NTSYSAPI NTSTATUS  WINAPI NtQueryFullAttributesFile(const OBJECT_ATTRIBUTES*,FILE_NETWORK_OPEN_INFORMATION*);
2109 NTSYSAPI NTSTATUS  WINAPI NtQueryInformationAtom(RTL_ATOM,ATOM_INFORMATION_CLASS,PVOID,ULONG,ULONG*);
2110 NTSYSAPI NTSTATUS  WINAPI NtQueryInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,LONG,FILE_INFORMATION_CLASS);
2111 NTSYSAPI NTSTATUS  WINAPI NtQueryInformationJobObject(HANDLE,JOBOBJECTINFOCLASS,PVOID,ULONG,PULONG);
2112 NTSYSAPI NTSTATUS  WINAPI NtQueryInformationPort(HANDLE,PORT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2113 NTSYSAPI NTSTATUS  WINAPI NtQueryInformationProcess(HANDLE,PROCESSINFOCLASS,PVOID,ULONG,PULONG);
2114 NTSYSAPI NTSTATUS  WINAPI NtQueryInformationThread(HANDLE,THREADINFOCLASS,PVOID,ULONG,PULONG);
2115 NTSYSAPI NTSTATUS  WINAPI NtQueryInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2116 NTSYSAPI NTSTATUS  WINAPI NtQueryInstallUILanguage(LANGID*);
2117 NTSYSAPI NTSTATUS  WINAPI NtQueryIntervalProfile(KPROFILE_SOURCE,PULONG);
2118 NTSYSAPI NTSTATUS  WINAPI NtQueryIoCompletion(HANDLE,IO_COMPLETION_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2119 NTSYSAPI NTSTATUS  WINAPI NtQueryKey(HANDLE,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
2120 NTSYSAPI NTSTATUS  WINAPI NtQueryMultipleValueKey(HANDLE,PKEY_MULTIPLE_VALUE_INFORMATION,ULONG,PVOID,ULONG,PULONG);
2121 NTSYSAPI NTSTATUS  WINAPI NtQueryMutant(HANDLE,MUTANT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2122 NTSYSAPI NTSTATUS  WINAPI NtQueryObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG, PULONG);
2123 NTSYSAPI NTSTATUS  WINAPI NtQueryOpenSubKeys(POBJECT_ATTRIBUTES,PULONG);
2124 NTSYSAPI NTSTATUS  WINAPI NtQueryPerformanceCounter(PLARGE_INTEGER, PLARGE_INTEGER);
2125 NTSYSAPI NTSTATUS  WINAPI NtQuerySecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,ULONG,PULONG);
2126 NTSYSAPI NTSTATUS  WINAPI NtQuerySection(HANDLE,SECTION_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2127 NTSYSAPI NTSTATUS  WINAPI NtQuerySemaphore(HANDLE,SEMAPHORE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2128 NTSYSAPI NTSTATUS  WINAPI NtQuerySymbolicLinkObject(HANDLE,PUNICODE_STRING,PULONG);
2129 NTSYSAPI NTSTATUS  WINAPI NtQuerySystemEnvironmentValue(PUNICODE_STRING,PWCHAR,ULONG,PULONG);
2130 NTSYSAPI NTSTATUS  WINAPI NtQuerySystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2131 NTSYSAPI NTSTATUS  WINAPI NtQuerySystemTime(PLARGE_INTEGER);
2132 NTSYSAPI NTSTATUS  WINAPI NtQueryTimer(HANDLE,TIMER_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2133 NTSYSAPI NTSTATUS  WINAPI NtQueryTimerResolution(PULONG,PULONG,PULONG);
2134 NTSYSAPI NTSTATUS  WINAPI NtQueryValueKey(HANDLE,const UNICODE_STRING *,KEY_VALUE_INFORMATION_CLASS,void *,DWORD,DWORD *);
2135 NTSYSAPI NTSTATUS  WINAPI NtQueryVirtualMemory(HANDLE,LPCVOID,MEMORY_INFORMATION_CLASS,PVOID,SIZE_T,SIZE_T*);
2136 NTSYSAPI NTSTATUS  WINAPI NtQueryVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
2137 NTSYSAPI NTSTATUS  WINAPI NtRaiseException(PEXCEPTION_RECORD,PCONTEXT,BOOL);
2138 NTSYSAPI NTSTATUS  WINAPI NtRaiseHardError(NTSTATUS,ULONG,PUNICODE_STRING,PVOID*,HARDERROR_RESPONSE_OPTION,PHARDERROR_RESPONSE);
2139 NTSYSAPI NTSTATUS  WINAPI NtReadFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,PLARGE_INTEGER,PULONG);
2140 NTSYSAPI NTSTATUS  WINAPI NtReadFileScatter(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,FILE_SEGMENT_ELEMENT*,ULONG,PLARGE_INTEGER,PULONG);
2141 NTSYSAPI NTSTATUS  WINAPI NtReadRequestData(HANDLE,PLPC_MESSAGE,ULONG,PVOID,ULONG,PULONG);
2142 NTSYSAPI NTSTATUS  WINAPI NtReadVirtualMemory(HANDLE,const void*,void*,SIZE_T,SIZE_T*);
2143 NTSYSAPI NTSTATUS  WINAPI NtRegisterThreadTerminatePort(HANDLE);
2144 NTSYSAPI NTSTATUS  WINAPI NtReleaseMutant(HANDLE,PLONG);
2145 NTSYSAPI NTSTATUS  WINAPI NtReleaseSemaphore(HANDLE,ULONG,PULONG);
2146 NTSYSAPI NTSTATUS  WINAPI NtRemoveIoCompletion(HANDLE,PULONG_PTR,PULONG_PTR,PIO_STATUS_BLOCK,PLARGE_INTEGER);
2147 NTSYSAPI NTSTATUS  WINAPI NtReplaceKey(POBJECT_ATTRIBUTES,HANDLE,POBJECT_ATTRIBUTES);
2148 NTSYSAPI NTSTATUS  WINAPI NtReplyPort(HANDLE,PLPC_MESSAGE);
2149 NTSYSAPI NTSTATUS  WINAPI NtReplyWaitReceivePort(HANDLE,PULONG,PLPC_MESSAGE,PLPC_MESSAGE);
2150 NTSYSAPI NTSTATUS  WINAPI NtReplyWaitReceivePortEx(HANDLE,PVOID*,PPORT_MESSAGE,PPORT_MESSAGE,PLARGE_INTEGER);
2151 NTSYSAPI NTSTATUS  WINAPI NtReplyWaitReplyPort(HANDLE,PLPC_MESSAGE);
2152 NTSYSAPI NTSTATUS  WINAPI NtRequestPort(HANDLE,PLPC_MESSAGE);
2153 NTSYSAPI NTSTATUS  WINAPI NtRequestWaitReplyPort(HANDLE,PLPC_MESSAGE,PLPC_MESSAGE);
2154 NTSYSAPI NTSTATUS  WINAPI NtResetEvent(HANDLE,PULONG);
2155 NTSYSAPI NTSTATUS  WINAPI NtResetWriteWatch(HANDLE,PVOID,SIZE_T);
2156 NTSYSAPI NTSTATUS  WINAPI NtRestoreKey(HANDLE,HANDLE,ULONG);
2157 NTSYSAPI NTSTATUS  WINAPI NtResumeThread(HANDLE,PULONG);
2158 NTSYSAPI NTSTATUS  WINAPI NtSaveKey(HANDLE,HANDLE);
2159 NTSYSAPI NTSTATUS  WINAPI NtSecureConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PSID,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
2160 NTSYSAPI NTSTATUS  WINAPI NtSetContextThread(HANDLE,const CONTEXT*);
2161 NTSYSAPI NTSTATUS  WINAPI NtSetDefaultHardErrorPort(HANDLE);
2162 NTSYSAPI NTSTATUS  WINAPI NtSetDefaultLocale(BOOLEAN,LCID);
2163 NTSYSAPI NTSTATUS  WINAPI NtSetDefaultUILanguage(LANGID);
2164 NTSYSAPI NTSTATUS  WINAPI NtSetEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG);
2165 NTSYSAPI NTSTATUS  WINAPI NtSetEvent(HANDLE,PULONG);
2166 NTSYSAPI NTSTATUS  WINAPI NtSetHighEventPair(HANDLE);
2167 NTSYSAPI NTSTATUS  WINAPI NtSetHighWaitLowEventPair(HANDLE);
2168 NTSYSAPI NTSTATUS  WINAPI NtSetHighWaitLowThread(VOID);
2169 NTSYSAPI NTSTATUS  WINAPI NtSetInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS);
2170 NTSYSAPI NTSTATUS  WINAPI NtSetInformationJobObject(HANDLE,JOBOBJECTINFOCLASS,PVOID,ULONG);
2171 NTSYSAPI NTSTATUS  WINAPI NtSetInformationKey(HANDLE,const int,PVOID,ULONG);
2172 NTSYSAPI NTSTATUS  WINAPI NtSetInformationObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG);
2173 NTSYSAPI NTSTATUS  WINAPI NtSetInformationProcess(HANDLE,PROCESS_INFORMATION_CLASS,PVOID,ULONG);
2174 NTSYSAPI NTSTATUS  WINAPI NtSetInformationThread(HANDLE,THREADINFOCLASS,LPCVOID,ULONG);
2175 NTSYSAPI NTSTATUS  WINAPI NtSetInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG);
2176 NTSYSAPI NTSTATUS  WINAPI NtSetIntervalProfile(ULONG,KPROFILE_SOURCE);
2177 NTSYSAPI NTSTATUS  WINAPI NtSetIoCompletion(HANDLE,ULONG_PTR,ULONG_PTR,NTSTATUS,ULONG);
2178 NTSYSAPI NTSTATUS  WINAPI NtSetLdtEntries(ULONG,LDT_ENTRY,ULONG,LDT_ENTRY);
2179 NTSYSAPI NTSTATUS  WINAPI NtSetLowEventPair(HANDLE);
2180 NTSYSAPI NTSTATUS  WINAPI NtSetLowWaitHighEventPair(HANDLE);
2181 NTSYSAPI NTSTATUS  WINAPI NtSetLowWaitHighThread(VOID);
2182 NTSYSAPI NTSTATUS  WINAPI NtSetSecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
2183 NTSYSAPI NTSTATUS  WINAPI NtSetSystemEnvironmentValue(PUNICODE_STRING,PUNICODE_STRING);
2184 NTSYSAPI NTSTATUS  WINAPI NtSetSystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG);
2185 NTSYSAPI NTSTATUS  WINAPI NtSetSystemPowerState(POWER_ACTION,SYSTEM_POWER_STATE,ULONG);
2186 NTSYSAPI NTSTATUS  WINAPI NtSetSystemTime(const LARGE_INTEGER*,LARGE_INTEGER*);
2187 NTSYSAPI NTSTATUS  WINAPI NtSetTimer(HANDLE, const LARGE_INTEGER*, PTIMER_APC_ROUTINE, PVOID, BOOLEAN, ULONG, BOOLEAN*);
2188 NTSYSAPI NTSTATUS  WINAPI NtSetTimerResolution(ULONG,BOOLEAN,PULONG);
2189 NTSYSAPI NTSTATUS  WINAPI NtSetValueKey(HANDLE,const UNICODE_STRING *,ULONG,ULONG,const void *,ULONG);
2190 NTSYSAPI NTSTATUS  WINAPI NtSetVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
2191 NTSYSAPI NTSTATUS  WINAPI NtSignalAndWaitForSingleObject(HANDLE,HANDLE,BOOLEAN,const LARGE_INTEGER*);
2192 NTSYSAPI NTSTATUS  WINAPI NtShutdownSystem(SHUTDOWN_ACTION);
2193 NTSYSAPI NTSTATUS  WINAPI NtStartProfile(HANDLE);
2194 NTSYSAPI NTSTATUS  WINAPI NtStopProfile(HANDLE);
2195 NTSYSAPI NTSTATUS  WINAPI NtSuspendThread(HANDLE,PULONG);
2196 NTSYSAPI NTSTATUS  WINAPI NtSystemDebugControl(SYSDBG_COMMAND,PVOID,ULONG,PVOID,ULONG,PULONG);
2197 NTSYSAPI NTSTATUS  WINAPI NtTerminateJobObject(HANDLE,NTSTATUS);
2198 NTSYSAPI NTSTATUS  WINAPI NtTerminateProcess(HANDLE,LONG);
2199 NTSYSAPI NTSTATUS  WINAPI NtTerminateThread(HANDLE,LONG);
2200 NTSYSAPI NTSTATUS  WINAPI NtTestAlert(VOID);
2201 NTSYSAPI NTSTATUS  WINAPI NtUnloadDriver(const UNICODE_STRING *);
2202 NTSYSAPI NTSTATUS  WINAPI NtUnloadKey(POBJECT_ATTRIBUTES);
2203 NTSYSAPI NTSTATUS  WINAPI NtUnloadKeyEx(POBJECT_ATTRIBUTES,HANDLE);
2204 NTSYSAPI NTSTATUS  WINAPI NtUnlockFile(HANDLE,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,PULONG);
2205 NTSYSAPI NTSTATUS  WINAPI NtUnlockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
2206 NTSYSAPI NTSTATUS  WINAPI NtUnmapViewOfSection(HANDLE,PVOID);
2207 NTSYSAPI NTSTATUS  WINAPI NtVdmControl(ULONG,PVOID);
2208 NTSYSAPI NTSTATUS  WINAPI NtWaitForSingleObject(HANDLE,BOOLEAN,const LARGE_INTEGER*);
2209 NTSYSAPI NTSTATUS  WINAPI NtWaitForMultipleObjects(ULONG,const HANDLE*,BOOLEAN,BOOLEAN,const LARGE_INTEGER*);
2210 NTSYSAPI NTSTATUS  WINAPI NtWaitHighEventPair(HANDLE);
2211 NTSYSAPI NTSTATUS  WINAPI NtWaitLowEventPair(HANDLE);
2212 NTSYSAPI NTSTATUS  WINAPI NtWriteFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,const void*,ULONG,PLARGE_INTEGER,PULONG);
2213 NTSYSAPI NTSTATUS  WINAPI NtWriteFileGather(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,FILE_SEGMENT_ELEMENT*,ULONG,PLARGE_INTEGER,PULONG);
2214 NTSYSAPI NTSTATUS  WINAPI NtWriteRequestData(HANDLE,PLPC_MESSAGE,ULONG,PVOID,ULONG,PULONG);
2215 NTSYSAPI NTSTATUS  WINAPI NtWriteVirtualMemory(HANDLE,void*,const void*,SIZE_T,SIZE_T*);
2216 NTSYSAPI NTSTATUS  WINAPI NtYieldExecution(void);
2217 
2218 NTSYSAPI void      WINAPI RtlAcquirePebLock(void);
2219 NTSYSAPI BYTE      WINAPI RtlAcquireResourceExclusive(LPRTL_RWLOCK,BYTE);
2220 NTSYSAPI BYTE      WINAPI RtlAcquireResourceShared(LPRTL_RWLOCK,BYTE);
2221 NTSYSAPI NTSTATUS  WINAPI RtlActivateActivationContext(DWORD,HANDLE,ULONG_PTR*);
2222 NTSYSAPI NTSTATUS  WINAPI RtlAddAce(PACL,DWORD,DWORD,PACE_HEADER,DWORD);
2223 NTSYSAPI NTSTATUS  WINAPI RtlAddAccessAllowedAce(PACL,DWORD,DWORD,PSID);
2224 NTSYSAPI NTSTATUS  WINAPI RtlAddAccessAllowedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
2225 NTSYSAPI NTSTATUS  WINAPI RtlAddAccessDeniedAce(PACL,DWORD,DWORD,PSID);
2226 NTSYSAPI NTSTATUS  WINAPI RtlAddAccessDeniedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
2227 NTSYSAPI NTSTATUS  WINAPI RtlAddAtomToAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*);
2228 NTSYSAPI NTSTATUS  WINAPI RtlAddAuditAccessAce(PACL,DWORD,DWORD,PSID,BOOL,BOOL);
2229 NTSYSAPI NTSTATUS  WINAPI RtlAddAuditAccessAceEx(PACL,DWORD,DWORD,DWORD,PSID,BOOL,BOOL);
2230 NTSYSAPI void      WINAPI RtlAddRefActivationContext(HANDLE);
2231 NTSYSAPI PVOID     WINAPI RtlAddVectoredExceptionHandler(ULONG,PVECTORED_EXCEPTION_HANDLER);
2232 NTSYSAPI NTSTATUS  WINAPI RtlAdjustPrivilege(ULONG,BOOLEAN,BOOLEAN,PBOOLEAN);
2233 NTSYSAPI NTSTATUS  WINAPI RtlAllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PSID *);
2234 NTSYSAPI RTL_HANDLE * WINAPI RtlAllocateHandle(RTL_HANDLE_TABLE *,ULONG *);
2235 NTSYSAPI PVOID     WINAPI RtlAllocateHeap(HANDLE,ULONG,SIZE_T) __WINE_ALLOC_SIZE(3);
2236 NTSYSAPI WCHAR     WINAPI RtlAnsiCharToUnicodeChar(LPSTR *);
2237 NTSYSAPI DWORD     WINAPI RtlAnsiStringToUnicodeSize(const STRING *);
2238 NTSYSAPI NTSTATUS  WINAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING,PCANSI_STRING,BOOLEAN);
2239 NTSYSAPI NTSTATUS  WINAPI RtlAppendAsciizToString(STRING *,LPCSTR);
2240 NTSYSAPI NTSTATUS  WINAPI RtlAppendStringToString(STRING *,const STRING *);
2241 NTSYSAPI NTSTATUS  WINAPI RtlAppendUnicodeStringToString(UNICODE_STRING *,const UNICODE_STRING *);
2242 NTSYSAPI NTSTATUS  WINAPI RtlAppendUnicodeToString(UNICODE_STRING *,LPCWSTR);
2243 NTSYSAPI BOOLEAN   WINAPI RtlAreAllAccessesGranted(ACCESS_MASK,ACCESS_MASK);
2244 NTSYSAPI BOOLEAN   WINAPI RtlAreAnyAccessesGranted(ACCESS_MASK,ACCESS_MASK);
2245 NTSYSAPI BOOLEAN   WINAPI RtlAreBitsSet(PCRTL_BITMAP,ULONG,ULONG);
2246 NTSYSAPI BOOLEAN   WINAPI RtlAreBitsClear(PCRTL_BITMAP,ULONG,ULONG);
2247 NTSYSAPI NTSTATUS  WINAPI RtlCharToInteger(PCSZ,ULONG,PULONG);
2248 NTSYSAPI NTSTATUS  WINAPI RtlCheckRegistryKey(ULONG, PWSTR);
2249 NTSYSAPI void      WINAPI RtlClearAllBits(PRTL_BITMAP);
2250 NTSYSAPI void      WINAPI RtlClearBits(PRTL_BITMAP,ULONG,ULONG);
2251 NTSYSAPI NTSTATUS  WINAPI RtlCreateActivationContext(HANDLE*,const void*);
2252 NTSYSAPI PDEBUG_BUFFER WINAPI RtlCreateQueryDebugBuffer(ULONG,BOOLEAN);
2253 NTSYSAPI ULONG     WINAPI RtlCompactHeap(HANDLE,ULONG);
2254 NTSYSAPI LONG      WINAPI RtlCompareString(const STRING*,const STRING*,BOOLEAN);
2255 NTSYSAPI LONG      WINAPI RtlCompareUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
2256 NTSYSAPI NTSTATUS  WINAPI RtlCompressBuffer(USHORT,PUCHAR,ULONG,PUCHAR,ULONG,ULONG,PULONG,PVOID);
2257 NTSYSAPI DWORD     WINAPI RtlComputeCrc32(DWORD,const BYTE*,INT);
2258 NTSYSAPI NTSTATUS  WINAPI RtlConvertSidToUnicodeString(PUNICODE_STRING,PSID,BOOLEAN);
2259 NTSYSAPI void      WINAPI RtlCopyLuid(PLUID,const LUID*);
2260 NTSYSAPI void      WINAPI RtlCopyLuidAndAttributesArray(ULONG,const LUID_AND_ATTRIBUTES*,PLUID_AND_ATTRIBUTES);
2261 NTSYSAPI BOOLEAN   WINAPI RtlCopySid(DWORD,PSID,PSID);
2262 NTSYSAPI NTSTATUS  WINAPI RtlCopySecurityDescriptor(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR);
2263 NTSYSAPI void      WINAPI RtlCopyString(STRING*,const STRING*);
2264 NTSYSAPI void      WINAPI RtlCopyUnicodeString(UNICODE_STRING*,const UNICODE_STRING*);
2265 NTSYSAPI NTSTATUS  WINAPI RtlCreateAcl(PACL,DWORD,DWORD);
2266 NTSYSAPI NTSTATUS  WINAPI RtlCreateAtomTable(ULONG,RTL_ATOM_TABLE*);
2267 NTSYSAPI NTSTATUS  WINAPI RtlCreateEnvironment(BOOLEAN, PWSTR*);
2268 NTSYSAPI HANDLE    WINAPI RtlCreateHeap(ULONG,PVOID,SIZE_T,SIZE_T,PVOID,PRTL_HEAP_DEFINITION);
2269 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*);
2270 NTSYSAPI NTSTATUS  WINAPI RtlCreateSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD);
2271 NTSYSAPI NTSTATUS  WINAPI RtlCreateTimerQueue(PHANDLE);
2272 NTSYSAPI NTSTATUS  WINAPI RtlCreateTimer(PHANDLE, HANDLE, RTL_WAITORTIMERCALLBACKFUNC, PVOID, DWORD, DWORD, ULONG);
2273 NTSYSAPI BOOLEAN   WINAPI RtlCreateUnicodeString(PUNICODE_STRING,LPCWSTR);
2274 NTSYSAPI BOOLEAN   WINAPI RtlCreateUnicodeStringFromAsciiz(PUNICODE_STRING,LPCSTR);
2275 NTSYSAPI NTSTATUS  WINAPI RtlCreateUserThread(HANDLE,const SECURITY_DESCRIPTOR*,BOOLEAN,PVOID,SIZE_T,SIZE_T,PRTL_THREAD_START_ROUTINE,void*,HANDLE*,CLIENT_ID*);
2276 NTSYSAPI void      WINAPI RtlDeactivateActivationContext(DWORD,ULONG_PTR);
2277 NTSYSAPI NTSTATUS  WINAPI RtlDecompressBuffer(USHORT,PUCHAR,ULONG,PUCHAR,ULONG,PULONG);
2278 NTSYSAPI NTSTATUS  WINAPI RtlDeleteAce(PACL,DWORD);
2279 NTSYSAPI NTSTATUS  WINAPI RtlDeleteAtomFromAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
2280 NTSYSAPI NTSTATUS  WINAPI RtlDeleteCriticalSection(RTL_CRITICAL_SECTION *);
2281 NTSYSAPI NTSTATUS  WINAPI RtlDeleteRegistryValue(ULONG, PCWSTR, PCWSTR);
2282 NTSYSAPI void      WINAPI RtlDeleteResource(LPRTL_RWLOCK);
2283 NTSYSAPI NTSTATUS  WINAPI RtlDeleteSecurityObject(PSECURITY_DESCRIPTOR*);
2284 NTSYSAPI NTSTATUS  WINAPI RtlDeleteTimer(HANDLE, HANDLE, HANDLE);
2285 NTSYSAPI NTSTATUS  WINAPI RtlDeleteTimerQueueEx(HANDLE, HANDLE);
2286 NTSYSAPI PRTL_USER_PROCESS_PARAMETERS WINAPI RtlDeNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
2287 NTSYSAPI NTSTATUS  WINAPI RtlDeregisterWait(HANDLE);
2288 NTSYSAPI NTSTATUS  WINAPI RtlDeregisterWaitEx(HANDLE,HANDLE);
2289 NTSYSAPI NTSTATUS  WINAPI RtlDestroyAtomTable(RTL_ATOM_TABLE);
2290 NTSYSAPI NTSTATUS  WINAPI RtlDestroyEnvironment(PWSTR);
2291 NTSYSAPI NTSTATUS  WINAPI RtlDestroyHandleTable(RTL_HANDLE_TABLE *);
2292 NTSYSAPI HANDLE    WINAPI RtlDestroyHeap(HANDLE);
2293 NTSYSAPI void      WINAPI RtlDestroyProcessParameters(RTL_USER_PROCESS_PARAMETERS*);
2294 NTSYSAPI NTSTATUS  WINAPI RtlDestroyQueryDebugBuffer(PDEBUG_BUFFER);
2295 NTSYSAPI DOS_PATHNAME_TYPE WINAPI RtlDetermineDosPathNameType_U(PCWSTR);
2296 NTSYSAPI BOOLEAN   WINAPI RtlDllShutdownInProgress(void);
2297 NTSYSAPI BOOLEAN   WINAPI RtlDoesFileExists_U(LPCWSTR);
2298 NTSYSAPI BOOLEAN   WINAPI RtlDosPathNameToNtPathName_U(PCWSTR,PUNICODE_STRING,PWSTR*,CURDIR*);
2299 NTSYSAPI ULONG     WINAPI RtlDosSearchPath_U(LPCWSTR, LPCWSTR, LPCWSTR, ULONG, LPWSTR, LPWSTR*);
2300 NTSYSAPI WCHAR     WINAPI RtlDowncaseUnicodeChar(WCHAR);
2301 NTSYSAPI NTSTATUS  WINAPI RtlDowncaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
2302 NTSYSAPI void      WINAPI RtlDumpResource(LPRTL_RWLOCK);
2303 NTSYSAPI NTSTATUS  WINAPI RtlDuplicateUnicodeString(int,const UNICODE_STRING*,UNICODE_STRING*);
2304 NTSYSAPI NTSTATUS  WINAPI RtlEmptyAtomTable(RTL_ATOM_TABLE,BOOLEAN);
2305 NTSYSAPI NTSTATUS  WINAPI RtlEnterCriticalSection(RTL_CRITICAL_SECTION *);
2306 NTSYSAPI void      WINAPI RtlEraseUnicodeString(UNICODE_STRING*);
2307 NTSYSAPI NTSTATUS  WINAPI RtlEqualComputerName(const UNICODE_STRING*,const UNICODE_STRING*);
2308 NTSYSAPI NTSTATUS  WINAPI RtlEqualDomainName(const UNICODE_STRING*,const UNICODE_STRING*);
2309 NTSYSAPI BOOLEAN   WINAPI RtlEqualLuid(const LUID*,const LUID*);
2310 NTSYSAPI BOOL      WINAPI RtlEqualPrefixSid(PSID,PSID);
2311 NTSYSAPI BOOL      WINAPI RtlEqualSid(PSID,PSID);
2312 NTSYSAPI BOOLEAN   WINAPI RtlEqualString(const STRING*,const STRING*,BOOLEAN);
2313 NTSYSAPI BOOLEAN   WINAPI RtlEqualUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
2314 NTSYSAPI void      DECLSPEC_NORETURN WINAPI RtlExitUserThread(ULONG);
2315 NTSYSAPI NTSTATUS  WINAPI RtlExpandEnvironmentStrings_U(PCWSTR, const UNICODE_STRING*, UNICODE_STRING*, ULONG*);
2316 NTSYSAPI NTSTATUS  WINAPI RtlFindActivationContextSectionString(ULONG,const GUID*,ULONG,const UNICODE_STRING*,PVOID);
2317 NTSYSAPI NTSTATUS  WINAPI RtlFindCharInUnicodeString(int,const UNICODE_STRING*,const UNICODE_STRING*,USHORT*);
2318 NTSYSAPI ULONG     WINAPI RtlFindClearBits(PCRTL_BITMAP,ULONG,ULONG);
2319 NTSYSAPI ULONG     WINAPI RtlFindClearBitsAndSet(PRTL_BITMAP,ULONG,ULONG);
2320 NTSYSAPI ULONG     WINAPI RtlFindClearRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
2321 NTSYSAPI ULONG     WINAPI RtlFindLastBackwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
2322 NTSYSAPI ULONG     WINAPI RtlFindLastBackwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
2323 NTSYSAPI CCHAR     WINAPI RtlFindLeastSignificantBit(ULONGLONG);
2324 NTSYSAPI ULONG     WINAPI RtlFindLongestRunSet(PCRTL_BITMAP,PULONG);
2325 NTSYSAPI ULONG     WINAPI RtlFindLongestRunClear(PCRTL_BITMAP,PULONG);
2326 NTSYSAPI NTSTATUS  WINAPI RtlFindMessage(HMODULE,ULONG,ULONG,ULONG,const MESSAGE_RESOURCE_ENTRY**);
2327 NTSYSAPI CCHAR     WINAPI RtlFindMostSignificantBit(ULONGLONG);
2328 NTSYSAPI ULONG     WINAPI RtlFindNextForwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
2329 NTSYSAPI ULONG     WINAPI RtlFindNextForwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
2330 NTSYSAPI ULONG     WINAPI RtlFindSetBits(PCRTL_BITMAP,ULONG,ULONG);
2331 NTSYSAPI ULONG     WINAPI RtlFindSetBitsAndClear(PRTL_BITMAP,ULONG,ULONG);
2332 NTSYSAPI ULONG     WINAPI RtlFindSetRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
2333 NTSYSAPI BOOLEAN   WINAPI RtlFirstFreeAce(PACL,PACE_HEADER *);
2334 NTSYSAPI NTSTATUS  WINAPI RtlFormatCurrentUserKeyPath(PUNICODE_STRING);
2335 NTSYSAPI NTSTATUS  WINAPI RtlFormatMessage(LPWSTR,UCHAR,BOOLEAN,BOOLEAN,BOOLEAN,__ms_va_list *,LPWSTR,ULONG);
2336 NTSYSAPI void      WINAPI RtlFreeAnsiString(PANSI_STRING);
2337 NTSYSAPI BOOLEAN   WINAPI RtlFreeHandle(RTL_HANDLE_TABLE *,RTL_HANDLE *);
2338 NTSYSAPI BOOLEAN   WINAPI RtlFreeHeap(HANDLE,ULONG,PVOID);
2339 NTSYSAPI void      WINAPI RtlFreeOemString(POEM_STRING);
2340 NTSYSAPI DWORD     WINAPI RtlFreeSid(PSID);
2341 NTSYSAPI void      WINAPI RtlFreeThreadActivationContextStack(void);
2342 NTSYSAPI void      WINAPI RtlFreeUnicodeString(PUNICODE_STRING);
2343 NTSYSAPI NTSTATUS  WINAPI RtlGetAce(PACL,DWORD,LPVOID *);
2344 NTSYSAPI NTSTATUS  WINAPI RtlGetActiveActivationContext(HANDLE*);
2345 NTSYSAPI NTSTATUS  WINAPI RtlGetCompressionWorkSpaceSize(USHORT,PULONG,PULONG);
2346 NTSYSAPI NTSTATUS  WINAPI RtlGetControlSecurityDescriptor(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL,LPDWORD);
2347 NTSYSAPI NTSTATUS  WINAPI RtlGetCurrentDirectory_U(ULONG, LPWSTR);
2348 NTSYSAPI PEB *     WINAPI RtlGetCurrentPeb(void);
2349 NTSYSAPI NTSTATUS  WINAPI RtlGetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
2350 NTSYSAPI ULONG     WINAPI RtlGetFullPathName_U(PCWSTR,ULONG,PWSTR,PWSTR*);
2351 NTSYSAPI NTSTATUS  WINAPI RtlGetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
2352 NTSYSAPI NTSTATUS  WINAPI RtlGetLastNtStatus(void);
2353 NTSYSAPI DWORD     WINAPI RtlGetLastWin32Error(void);
2354 NTSYSAPI DWORD     WINAPI RtlGetLongestNtPathLength(void);
2355 NTSYSAPI BOOLEAN   WINAPI RtlGetNtProductType(LPDWORD);
2356 NTSYSAPI NTSTATUS  WINAPI RtlGetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
2357 NTSYSAPI ULONG     WINAPI RtlGetProcessHeaps(ULONG,HANDLE*);
2358 NTSYSAPI NTSTATUS  WINAPI RtlGetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
2359 NTSYSAPI NTSTATUS  WINAPI RtlGetVersion(RTL_OSVERSIONINFOEXW*);
2360 NTSYSAPI NTSTATUS  WINAPI RtlGUIDFromString(PUNICODE_STRING,GUID*);
2361 NTSYSAPI PSID_IDENTIFIER_AUTHORITY WINAPI RtlIdentifierAuthoritySid(PSID);
2362 NTSYSAPI PVOID     WINAPI RtlImageDirectoryEntryToData(HMODULE,BOOL,WORD,ULONG *);
2363 NTSYSAPI PIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE);
2364 NTSYSAPI PIMAGE_SECTION_HEADER WINAPI RtlImageRvaToSection(const IMAGE_NT_HEADERS *,HMODULE,DWORD);
2365 NTSYSAPI PVOID     WINAPI RtlImageRvaToVa(const IMAGE_NT_HEADERS *,HMODULE,DWORD,IMAGE_SECTION_HEADER **);
2366 NTSYSAPI NTSTATUS  WINAPI RtlImpersonateSelf(SECURITY_IMPERSONATION_LEVEL);
2367 NTSYSAPI void      WINAPI RtlInitString(PSTRING,PCSZ);
2368 NTSYSAPI void      WINAPI RtlInitAnsiString(PANSI_STRING,PCSZ);
2369 NTSYSAPI NTSTATUS  WINAPI RtlInitAnsiStringEx(PANSI_STRING,PCSZ);
2370 NTSYSAPI void      WINAPI RtlInitUnicodeString(PUNICODE_STRING,PCWSTR);
2371 NTSYSAPI NTSTATUS  WINAPI RtlInitUnicodeStringEx(PUNICODE_STRING,PCWSTR);
2372 NTSYSAPI NTSTATUS  WINAPI RtlInitializeCriticalSection(RTL_CRITICAL_SECTION *);
2373 NTSYSAPI NTSTATUS  WINAPI RtlInitializeCriticalSectionAndSpinCount(RTL_CRITICAL_SECTION *,ULONG);
2374 NTSYSAPI NTSTATUS  WINAPI RtlInitializeCriticalSectionEx(RTL_CRITICAL_SECTION *,ULONG,ULONG);
2375 NTSYSAPI void      WINAPI RtlInitializeBitMap(PRTL_BITMAP,PULONG,ULONG);
2376 NTSYSAPI void      WINAPI RtlInitializeHandleTable(ULONG,ULONG,RTL_HANDLE_TABLE *);
2377 NTSYSAPI void      WINAPI RtlInitializeResource(LPRTL_RWLOCK);
2378 NTSYSAPI BOOL      WINAPI RtlInitializeSid(PSID,PSID_IDENTIFIER_AUTHORITY,BYTE);
2379 NTSYSAPI NTSTATUS  WINAPI RtlInt64ToUnicodeString(ULONGLONG,ULONG,UNICODE_STRING *);
2380 NTSYSAPI NTSTATUS  WINAPI RtlIntegerToChar(ULONG,ULONG,ULONG,PCHAR);
2381 NTSYSAPI NTSTATUS  WINAPI RtlIntegerToUnicodeString(ULONG,ULONG,UNICODE_STRING *);
2382 NTSYSAPI BOOLEAN   WINAPI RtlIsActivationContextActive(HANDLE);
2383 NTSYSAPI ULONG     WINAPI RtlIsDosDeviceName_U(PCWSTR);
2384 NTSYSAPI BOOLEAN   WINAPI RtlIsNameLegalDOS8Dot3(const UNICODE_STRING*,POEM_STRING,PBOOLEAN);
2385 NTSYSAPI BOOLEAN   WINAPI RtlIsTextUnicode(LPCVOID,INT,INT *);
2386 NTSYSAPI BOOLEAN   WINAPI RtlIsValidHandle(const RTL_HANDLE_TABLE *, const RTL_HANDLE *);
2387 NTSYSAPI BOOLEAN   WINAPI RtlIsValidIndexHandle(const RTL_HANDLE_TABLE *, ULONG Index, RTL_HANDLE **);
2388 NTSYSAPI NTSTATUS  WINAPI RtlLeaveCriticalSection(RTL_CRITICAL_SECTION *);
2389 NTSYSAPI DWORD     WINAPI RtlLengthRequiredSid(DWORD);
2390 NTSYSAPI ULONG     WINAPI RtlLengthSecurityDescriptor(PSECURITY_DESCRIPTOR);
2391 NTSYSAPI DWORD     WINAPI RtlLengthSid(PSID);
2392 NTSYSAPI NTSTATUS  WINAPI RtlLocalTimeToSystemTime(const LARGE_INTEGER*,PLARGE_INTEGER);
2393 NTSYSAPI BOOLEAN   WINAPI RtlLockHeap(HANDLE);
2394 NTSYSAPI NTSTATUS  WINAPI RtlLookupAtomInAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*);
2395 NTSYSAPI NTSTATUS  WINAPI RtlMakeSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,LPDWORD);
2396 NTSYSAPI void      WINAPI RtlMapGenericMask(PACCESS_MASK,const GENERIC_MAPPING*);
2397 NTSYSAPI NTSTATUS  WINAPI RtlMultiByteToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
2398 NTSYSAPI NTSTATUS  WINAPI RtlMultiByteToUnicodeSize(DWORD*,LPCSTR,UINT);
2399 NTSYSAPI NTSTATUS  WINAPI RtlNewSecurityObject(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,BOOLEAN,HANDLE,PGENERIC_MAPPING);
2400 NTSYSAPI PRTL_USER_PROCESS_PARAMETERS WINAPI RtlNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
2401 NTSYSAPI ULONG     WINAPI RtlNtStatusToDosError(NTSTATUS);
2402 NTSYSAPI ULONG     WINAPI RtlNtStatusToDosErrorNoTeb(NTSTATUS);
2403 NTSYSAPI ULONG     WINAPI RtlNumberOfSetBits(PCRTL_BITMAP);
2404 NTSYSAPI ULONG     WINAPI RtlNumberOfClearBits(PCRTL_BITMAP);
2405 NTSYSAPI UINT      WINAPI RtlOemStringToUnicodeSize(const STRING*);
2406 NTSYSAPI NTSTATUS  WINAPI RtlOemStringToUnicodeString(UNICODE_STRING*,const STRING*,BOOLEAN);
2407 NTSYSAPI NTSTATUS  WINAPI RtlOemToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
2408 NTSYSAPI NTSTATUS  WINAPI RtlOpenCurrentUser(ACCESS_MASK,PHANDLE);
2409 NTSYSAPI PVOID     WINAPI RtlPcToFileHeader(PVOID,PVOID*);
2410 NTSYSAPI NTSTATUS  WINAPI RtlPinAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
2411 NTSYSAPI BOOLEAN   WINAPI RtlPrefixString(const STRING*,const STRING*,BOOLEAN);
2412 NTSYSAPI BOOLEAN   WINAPI RtlPrefixUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
2413 NTSYSAPI NTSTATUS  WINAPI RtlQueryAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM,ULONG*,ULONG*,WCHAR*,ULONG*);
2414 NTSYSAPI NTSTATUS  WINAPI RtlQueryEnvironmentVariable_U(PWSTR,PUNICODE_STRING,PUNICODE_STRING);
2415 NTSYSAPI NTSTATUS  WINAPI RtlQueryInformationAcl(PACL,LPVOID,DWORD,ACL_INFORMATION_CLASS);
2416 NTSYSAPI NTSTATUS  WINAPI RtlQueryInformationActivationContext(ULONG,HANDLE,PVOID,ULONG,PVOID,SIZE_T,SIZE_T*);
2417 NTSYSAPI NTSTATUS  WINAPI RtlQueryProcessDebugInformation(ULONG,ULONG,PDEBUG_BUFFER);
2418 NTSYSAPI NTSTATUS  WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID);
2419 NTSYSAPI NTSTATUS  WINAPI RtlQueryTimeZoneInformation(RTL_TIME_ZONE_INFORMATION*);
2420 NTSYSAPI NTSTATUS  WINAPI RtlQueueWorkItem(PRTL_WORK_ITEM_ROUTINE,PVOID,ULONG);
2421 NTSYSAPI void      WINAPI RtlRaiseException(PEXCEPTION_RECORD);
2422 NTSYSAPI void      WINAPI RtlRaiseStatus(NTSTATUS);
2423 NTSYSAPI ULONG     WINAPI RtlRandom(PULONG);
2424 NTSYSAPI PVOID     WINAPI RtlReAllocateHeap(HANDLE,ULONG,PVOID,SIZE_T);
2425 NTSYSAPI NTSTATUS  WINAPI RtlRegisterWait(PHANDLE,HANDLE,RTL_WAITORTIMERCALLBACKFUNC,PVOID,ULONG,ULONG);
2426 NTSYSAPI void      WINAPI RtlReleaseActivationContext(HANDLE);
2427 NTSYSAPI void      WINAPI RtlReleasePebLock(void);
2428 NTSYSAPI void      WINAPI RtlReleaseResource(LPRTL_RWLOCK);
2429 NTSYSAPI ULONG     WINAPI RtlRemoveVectoredExceptionHandler(PVOID);
2430 NTSYSAPI void      WINAPI RtlRestoreLastWin32Error(DWORD);
2431 NTSYSAPI void      WINAPI RtlSecondsSince1970ToTime(DWORD,LARGE_INTEGER *);
2432 NTSYSAPI void      WINAPI RtlSecondsSince1980ToTime(DWORD,LARGE_INTEGER *);
2433 NTSYSAPI NTSTATUS  WINAPI RtlSelfRelativeToAbsoluteSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PDWORD,PACL,PDWORD,PACL,PDWORD,PSID,PDWORD,PSID,PDWORD);
2434 NTSYSAPI void      WINAPI RtlSetAllBits(PRTL_BITMAP);
2435 NTSYSAPI void      WINAPI RtlSetBits(PRTL_BITMAP,ULONG,ULONG);
2436 NTSYSAPI ULONG     WINAPI RtlSetCriticalSectionSpinCount(RTL_CRITICAL_SECTION*,ULONG);
2437 NTSYSAPI NTSTATUS  WINAPI RtlSetControlSecurityDescriptor(PSECURITY_DESCRIPTOR,SECURITY_DESCRIPTOR_CONTROL,SECURITY_DESCRIPTOR_CONTROL);
2438 NTSYSAPI NTSTATUS  WINAPI RtlSetCurrentDirectory_U(const UNICODE_STRING*);
2439 NTSYSAPI void      WINAPI RtlSetCurrentEnvironment(PWSTR, PWSTR*);
2440 NTSYSAPI NTSTATUS  WINAPI RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
2441 NTSYSAPI NTSTATUS  WINAPI RtlSetEnvironmentVariable(PWSTR*,PUNICODE_STRING,PUNICODE_STRING);
2442 NTSYSAPI NTSTATUS  WINAPI RtlSetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
2443 NTSYSAPI NTSTATUS  WINAPI RtlSetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
2444 NTSYSAPI NTSTATUS  WINAPI RtlSetIoCompletionCallback(HANDLE,PRTL_OVERLAPPED_COMPLETION_ROUTINE,ULONG);
2445 NTSYSAPI void      WINAPI RtlSetLastWin32Error(DWORD);
2446 NTSYSAPI void      WINAPI RtlSetLastWin32ErrorAndNtStatusFromNtStatus(NTSTATUS);
2447 NTSYSAPI NTSTATUS  WINAPI RtlSetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
2448 NTSYSAPI NTSTATUS  WINAPI RtlSetTimeZoneInformation(const RTL_TIME_ZONE_INFORMATION*);
2449 NTSYSAPI SIZE_T    WINAPI RtlSizeHeap(HANDLE,ULONG,const void*);
2450 NTSYSAPI NTSTATUS  WINAPI RtlStringFromGUID(REFGUID,PUNICODE_STRING);
2451 NTSYSAPI LPDWORD   WINAPI RtlSubAuthoritySid(PSID,DWORD);
2452 NTSYSAPI LPBYTE    WINAPI RtlSubAuthorityCountSid(PSID);
2453 NTSYSAPI NTSTATUS  WINAPI RtlSystemTimeToLocalTime(const LARGE_INTEGER*,PLARGE_INTEGER);
2454 NTSYSAPI void      WINAPI RtlTimeToTimeFields(const LARGE_INTEGER*,PTIME_FIELDS);
2455 NTSYSAPI BOOLEAN   WINAPI RtlTimeFieldsToTime(PTIME_FIELDS,PLARGE_INTEGER);
2456 NTSYSAPI void      WINAPI RtlTimeToElapsedTimeFields(const LARGE_INTEGER *,PTIME_FIELDS);
2457 NTSYSAPI BOOLEAN   WINAPI RtlTimeToSecondsSince1970(const LARGE_INTEGER *,LPDWORD);
2458 NTSYSAPI BOOLEAN   WINAPI RtlTimeToSecondsSince1980(const LARGE_INTEGER *,LPDWORD);
2459 NTSYSAPI BOOL      WINAPI RtlTryEnterCriticalSection(RTL_CRITICAL_SECTION *);
2460 NTSYSAPI ULONGLONG __cdecl RtlUlonglongByteSwap(ULONGLONG);
2461 NTSYSAPI DWORD     WINAPI RtlUnicodeStringToAnsiSize(const UNICODE_STRING*);
2462 NTSYSAPI NTSTATUS  WINAPI RtlUnicodeStringToAnsiString(PANSI_STRING,PCUNICODE_STRING,BOOLEAN);
2463 NTSYSAPI NTSTATUS  WINAPI RtlUnicodeStringToInteger(const UNICODE_STRING *,ULONG,ULONG *);
2464 NTSYSAPI DWORD     WINAPI RtlUnicodeStringToOemSize(const UNICODE_STRING*);
2465 NTSYSAPI NTSTATUS  WINAPI RtlUnicodeStringToOemString(POEM_STRING,PCUNICODE_STRING,BOOLEAN);
2466 NTSYSAPI NTSTATUS  WINAPI RtlUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2467 NTSYSAPI NTSTATUS  WINAPI RtlUnicodeToMultiByteSize(PULONG,PCWSTR,ULONG);
2468 NTSYSAPI NTSTATUS  WINAPI RtlUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2469 NTSYSAPI ULONG     WINAPI RtlUniform(PULONG);
2470 NTSYSAPI BOOLEAN   WINAPI RtlUnlockHeap(HANDLE);
2471 NTSYSAPI void      WINAPI RtlUnwind(PVOID,PVOID,PEXCEPTION_RECORD,PVOID);
2472 #ifdef __ia64__
2473 NTSYSAPI void      WINAPI RtlUnwind2(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT);
2474 NTSYSAPI void      WINAPI RtlUnwindEx(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT,PUNWIND_HISTORY_TABLE);
2475 #endif
2476 NTSYSAPI WCHAR     WINAPI RtlUpcaseUnicodeChar(WCHAR);
2477 NTSYSAPI NTSTATUS  WINAPI RtlUpcaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING *,BOOLEAN);
2478 NTSYSAPI NTSTATUS  WINAPI RtlUpcaseUnicodeStringToAnsiString(STRING*,const UNICODE_STRING*,BOOLEAN);
2479 NTSYSAPI NTSTATUS  WINAPI RtlUpcaseUnicodeStringToCountedOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
2480 NTSYSAPI NTSTATUS  WINAPI RtlUpcaseUnicodeStringToOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
2481 NTSYSAPI NTSTATUS  WINAPI RtlUpcaseUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2482 NTSYSAPI NTSTATUS  WINAPI RtlUpcaseUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2483 NTSYSAPI NTSTATUS  WINAPI RtlUpdateTimer(HANDLE, HANDLE, DWORD, DWORD);
2484 NTSYSAPI CHAR      WINAPI RtlUpperChar(CHAR);
2485 NTSYSAPI void      WINAPI RtlUpperString(STRING *,const STRING *);
2486 NTSYSAPI NTSTATUS  WINAPI RtlValidSecurityDescriptor(PSECURITY_DESCRIPTOR);
2487 NTSYSAPI BOOLEAN   WINAPI RtlValidAcl(PACL);
2488 NTSYSAPI BOOLEAN   WINAPI RtlValidSid(PSID);
2489 NTSYSAPI BOOLEAN   WINAPI RtlValidateHeap(HANDLE,ULONG,LPCVOID);
2490 NTSYSAPI NTSTATUS  WINAPI RtlVerifyVersionInfo(const RTL_OSVERSIONINFOEXW*,DWORD,DWORDLONG);
2491 NTSYSAPI NTSTATUS  WINAPI RtlWalkHeap(HANDLE,PVOID);
2492 NTSYSAPI NTSTATUS  WINAPI RtlWow64EnableFsRedirection(BOOLEAN);
2493 NTSYSAPI NTSTATUS  WINAPI RtlWow64EnableFsRedirectionEx(ULONG,ULONG*);
2494 NTSYSAPI NTSTATUS  WINAPI RtlWriteRegistryValue(ULONG,PCWSTR,PCWSTR,ULONG,PVOID,ULONG);
2495 NTSYSAPI NTSTATUS  WINAPI RtlpNtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
2496 NTSYSAPI NTSTATUS  WINAPI RtlpNtEnumerateSubKey(HANDLE,UNICODE_STRING *, ULONG);
2497 NTSYSAPI NTSTATUS  WINAPI RtlpWaitForCriticalSection(RTL_CRITICAL_SECTION *);
2498 NTSYSAPI NTSTATUS  WINAPI RtlpUnWaitCriticalSection(RTL_CRITICAL_SECTION *);
2499 NTSYSAPI NTSTATUS  WINAPI vDbgPrintEx(ULONG,ULONG,LPCSTR,__ms_va_list);
2500 NTSYSAPI NTSTATUS  WINAPI vDbgPrintExWithPrefix(LPCSTR,ULONG,ULONG,LPCSTR,__ms_va_list);
2501 
2502 /* 32-bit only functions */
2503 
2504 #ifndef _WIN64
2505 NTSYSAPI LONGLONG  WINAPI RtlConvertLongToLargeInteger(LONG);
2506 NTSYSAPI ULONGLONG WINAPI RtlConvertUlongToLargeInteger(ULONG);
2507 NTSYSAPI LONGLONG  WINAPI RtlEnlargedIntegerMultiply(INT,INT);
2508 NTSYSAPI ULONGLONG WINAPI RtlEnlargedUnsignedMultiply(UINT,UINT);
2509 NTSYSAPI UINT      WINAPI RtlEnlargedUnsignedDivide(ULONGLONG,UINT,UINT *);
2510 NTSYSAPI LONGLONG  WINAPI RtlExtendedMagicDivide(LONGLONG,LONGLONG,INT);
2511 NTSYSAPI LONGLONG  WINAPI RtlExtendedIntegerMultiply(LONGLONG,INT);
2512 NTSYSAPI LONGLONG  WINAPI RtlExtendedLargeIntegerDivide(LONGLONG,INT,INT *);
2513 NTSYSAPI LONGLONG  WINAPI RtlLargeIntegerAdd(LONGLONG,LONGLONG);
2514 NTSYSAPI LONGLONG  WINAPI RtlLargeIntegerArithmeticShift(LONGLONG,INT);
2515 NTSYSAPI ULONGLONG WINAPI RtlLargeIntegerDivide( ULONGLONG,ULONGLONG,ULONGLONG *);
2516 NTSYSAPI LONGLONG  WINAPI RtlLargeIntegerNegate(LONGLONG);
2517 NTSYSAPI LONGLONG  WINAPI RtlLargeIntegerShiftLeft(LONGLONG,INT);
2518 NTSYSAPI LONGLONG  WINAPI RtlLargeIntegerShiftRight(LONGLONG,INT);
2519 NTSYSAPI LONGLONG  WINAPI RtlLargeIntegerSubtract(LONGLONG,LONGLONG);
2520 NTSYSAPI NTSTATUS  WINAPI RtlLargeIntegerToChar(const ULONGLONG *,ULONG,ULONG,PCHAR);
2521 #endif
2522 
2523 /* Wine internal functions */
2524 
2525 NTSYSAPI NTSTATUS CDECL wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRING *unix_name_ret,
2526                                                    UINT disposition, BOOLEAN check_case );
2527 NTSYSAPI NTSTATUS CDECL wine_unix_to_nt_file_name( const ANSI_STRING *name, UNICODE_STRING *nt );
2528 
2529 
2530 /***********************************************************************
2531  * Inline functions
2532  */
2533 
2534 #define InitializeObjectAttributes(p,n,a,r,s) \
2535     do { \
2536         (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
2537         (p)->RootDirectory = r; \
2538         (p)->Attributes = a; \
2539         (p)->ObjectName = n; \
2540         (p)->SecurityDescriptor = s; \
2541         (p)->SecurityQualityOfService = NULL; \
2542     } while (0)
2543 
2544 #define NtCurrentProcess() ((HANDLE)-1)
2545 
2546 #define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length))
2547 #define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length))
2548 #define RtlStoreUlong(p,v)  do { ULONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
2549 #define RtlStoreUlonglong(p,v) do { ULONGLONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
2550 #define RtlRetrieveUlong(p,s) memcpy((p), (s), sizeof(ULONG))
2551 #define RtlRetrieveUlonglong(p,s) memcpy((p), (s), sizeof(ULONGLONG))
2552 #define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))
2553 
2554 static inline BOOLEAN RtlCheckBit(PCRTL_BITMAP lpBits, ULONG ulBit)
2555 {
2556     if (lpBits && ulBit < lpBits->SizeOfBitMap &&
2557         lpBits->Buffer[ulBit >> 5] & (1 << (ulBit & 31)))
2558         return TRUE;
2559     return FALSE;
2560 }
2561 
2562 /* These are implemented as __fastcall, so we can't let Winelib apps link with them */
2563 static inline USHORT RtlUshortByteSwap(USHORT s)
2564 {
2565     return (s >> 8) | (s << 8);
2566 }
2567 static inline ULONG RtlUlongByteSwap(ULONG i)
2568 {
2569 #if defined(__i386__) && defined(__GNUC__)
2570     ULONG ret;
2571     __asm__("bswap %0" : "=r" (ret) : "" (i) );
2572     return ret;
2573 #else
2574     return ((ULONG)RtlUshortByteSwap((USHORT)i) << 16) | RtlUshortByteSwap((USHORT)(i >> 16));
2575 #endif
2576 }
2577 
2578 /* list manipulation macros */
2579 #define InitializeListHead(le)  (void)((le)->Flink = (le)->Blink = (le))
2580 #define InsertHeadList(le,e)    do { PLIST_ENTRY f = (le)->Flink; (e)->Flink = f; (e)->Blink = (le); f->Blink = (e); (le)->Flink = (e); } while (0)
2581 #define InsertTailList(le,e)    do { PLIST_ENTRY b = (le)->Blink; (e)->Flink = (le); (e)->Blink = b; b->Flink = (e); (le)->Blink = (e); } while (0)
2582 #define IsListEmpty(le)         ((le)->Flink == (le))
2583 #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)
2584 static inline PLIST_ENTRY RemoveHeadList(PLIST_ENTRY le)
2585 {
2586     PLIST_ENTRY f, b, e;
2587 
2588     e = le->Flink;
2589     f = le->Flink->Flink;
2590     b = le->Flink->Blink;
2591     f->Blink = b;
2592     b->Flink = f;
2593 
2594     if (e != le) e->Flink = e->Blink = NULL;
2595     return e;
2596 }
2597 static inline PLIST_ENTRY RemoveTailList(PLIST_ENTRY le)
2598 {
2599     PLIST_ENTRY f, b, e;
2600 
2601     e = le->Blink;
2602     f = le->Blink->Flink;
2603     b = le->Blink->Blink;
2604     f->Blink = b;
2605     b->Flink = f;
2606 
2607     if (e != le) e->Flink = e->Blink = NULL;
2608     return e;
2609 }
2610 
2611 
2612 #ifdef __WINESRC__
2613 
2614 /* FIXME: private structure for vm86 mode, stored in teb->GdiTebBatch */
2615 typedef struct
2616 {
2617     DWORD        dpmi_vif;
2618     DWORD        vm86_pending;
2619 } WINE_VM86_TEB_INFO;
2620 
2621 static inline WINE_VM86_TEB_INFO *get_vm86_teb_info(void)
2622 {
2623     return (WINE_VM86_TEB_INFO *)&NtCurrentTeb()->GdiTebBatch;
2624 }
2625 
2626 /* The thread information for 16-bit threads */
2627 /* NtCurrentTeb()->SubSystemTib points to this */
2628 typedef struct
2629 {
2630     void           *unknown;    /* 00 unknown */
2631     UNICODE_STRING *exe_name;   /* 04 exe module name */
2632 
2633     /* the following fields do not exist under Windows */
2634     UNICODE_STRING  exe_str;    /* exe name string pointed to by exe_name */
2635     CURDIR          curdir;     /* current directory */
2636     WCHAR           curdir_buffer[MAX_PATH];
2637 } WIN16_SUBSYSTEM_TIB;
2638 
2639 #endif /* __WINESRC__ */
2640 
2641 #ifdef __cplusplus
2642 } /* extern "C" */
2643 #endif /* defined(__cplusplus) */
2644 
2645 #endif  /* __WINE_WINTERNL_H */
2646 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.