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