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