kernelbase: Do not forcefully reset console_flags to 0.
[wine/zf.git] / include / winternl.h
blobd35d509eb416bc281c296b2c8b6115d036f1bbd4
1 /*
2 * Internal NT APIs and data structures
4 * Copyright (C) the Wine project
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.
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.
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
21 #ifndef __WINE_WINTERNL_H
22 #define __WINE_WINTERNL_H
24 #include <ntdef.h>
25 #include <windef.h>
27 #ifdef __cplusplus
28 extern "C" {
29 #endif /* defined(__cplusplus) */
32 /**********************************************************************
33 * Fundamental types and data structures
36 #ifndef WINE_NTSTATUS_DECLARED
37 #define WINE_NTSTATUS_DECLARED
38 typedef LONG NTSTATUS;
39 #endif
41 typedef const char *PCSZ;
43 typedef short CSHORT;
44 typedef CSHORT *PCSHORT;
46 #ifndef __STRING_DEFINED__
47 #define __STRING_DEFINED__
48 typedef struct _STRING {
49 USHORT Length;
50 USHORT MaximumLength;
51 PCHAR Buffer;
52 } STRING, *PSTRING;
53 #endif
55 typedef STRING ANSI_STRING;
56 typedef PSTRING PANSI_STRING;
57 typedef const STRING *PCANSI_STRING;
59 typedef STRING OEM_STRING;
60 typedef PSTRING POEM_STRING;
61 typedef const STRING *PCOEM_STRING;
63 #ifndef __UNICODE_STRING_DEFINED__
64 #define __UNICODE_STRING_DEFINED__
65 typedef struct _UNICODE_STRING {
66 USHORT Length; /* bytes */
67 USHORT MaximumLength; /* bytes */
68 PWSTR Buffer;
69 } UNICODE_STRING, *PUNICODE_STRING;
70 #endif
72 typedef const UNICODE_STRING *PCUNICODE_STRING;
74 #ifndef _FILETIME_
75 #define _FILETIME_
76 /* 64 bit number of 100 nanoseconds intervals since January 1, 1601 */
77 typedef struct _FILETIME
79 #ifdef WORDS_BIGENDIAN
80 DWORD dwHighDateTime;
81 DWORD dwLowDateTime;
82 #else
83 DWORD dwLowDateTime;
84 DWORD dwHighDateTime;
85 #endif
86 } FILETIME, *PFILETIME, *LPFILETIME;
87 #endif /* _FILETIME_ */
90 * RTL_SYSTEM_TIME and RTL_TIME_ZONE_INFORMATION are the same as
91 * the SYSTEMTIME and TIME_ZONE_INFORMATION structures defined
92 * in winbase.h, however we need to define them separately so
93 * winternl.h doesn't depend on winbase.h. They are used by
94 * RtlQueryTimeZoneInformation and RtlSetTimeZoneInformation.
95 * The names are guessed; if anybody knows the real names, let me know.
97 typedef struct _RTL_SYSTEM_TIME {
98 WORD wYear;
99 WORD wMonth;
100 WORD wDayOfWeek;
101 WORD wDay;
102 WORD wHour;
103 WORD wMinute;
104 WORD wSecond;
105 WORD wMilliseconds;
106 } RTL_SYSTEM_TIME, *PRTL_SYSTEM_TIME;
108 typedef struct _RTL_TIME_ZONE_INFORMATION {
109 LONG Bias;
110 WCHAR StandardName[32];
111 RTL_SYSTEM_TIME StandardDate;
112 LONG StandardBias;
113 WCHAR DaylightName[32];
114 RTL_SYSTEM_TIME DaylightDate;
115 LONG DaylightBias;
116 } RTL_TIME_ZONE_INFORMATION, *PRTL_TIME_ZONE_INFORMATION;
118 typedef struct _RTL_TIME_DYNAMIC_ZONE_INFORMATION
120 LONG Bias;
121 WCHAR StandardName[32];
122 RTL_SYSTEM_TIME StandardDate;
123 LONG StandardBias;
124 WCHAR DaylightName[32];
125 RTL_SYSTEM_TIME DaylightDate;
126 LONG DaylightBias;
127 WCHAR TimeZoneKeyName[128];
128 BOOLEAN DynamicDaylightTimeDisabled;
129 } RTL_DYNAMIC_TIME_ZONE_INFORMATION, *PRTL_DYNAMIC_TIME_ZONE_INFORMATION;
131 typedef struct _CLIENT_ID
133 HANDLE UniqueProcess;
134 HANDLE UniqueThread;
135 } CLIENT_ID, *PCLIENT_ID;
137 typedef struct _CURDIR
139 UNICODE_STRING DosPath;
140 PVOID Handle;
141 } CURDIR, *PCURDIR;
143 typedef struct RTL_DRIVE_LETTER_CURDIR
145 USHORT Flags;
146 USHORT Length;
147 ULONG TimeStamp;
148 UNICODE_STRING DosPath;
149 } RTL_DRIVE_LETTER_CURDIR, *PRTL_DRIVE_LETTER_CURDIR;
151 typedef struct _RTL_RELATIVE_NAME
153 UNICODE_STRING RelativeName;
154 HANDLE ContainerDirectory;
155 void *CurDirRef;
156 } RTL_RELATIVE_NAME, *PRTL_RELATIVE_NAME;
158 typedef struct tagRTL_BITMAP {
159 ULONG SizeOfBitMap; /* Number of bits in the bitmap */
160 PULONG Buffer; /* Bitmap data, assumed sized to a DWORD boundary */
161 } RTL_BITMAP, *PRTL_BITMAP;
163 typedef const RTL_BITMAP *PCRTL_BITMAP;
165 typedef struct tagRTL_BITMAP_RUN {
166 ULONG StartingIndex; /* Bit position at which run starts */
167 ULONG NumberOfBits; /* Size of the run in bits */
168 } RTL_BITMAP_RUN, *PRTL_BITMAP_RUN;
170 typedef const RTL_BITMAP_RUN *PCRTL_BITMAP_RUN;
172 typedef struct _RTL_USER_PROCESS_PARAMETERS
174 ULONG AllocationSize;
175 ULONG Size;
176 ULONG Flags;
177 ULONG DebugFlags;
178 HANDLE ConsoleHandle;
179 ULONG ConsoleFlags;
180 HANDLE hStdInput;
181 HANDLE hStdOutput;
182 HANDLE hStdError;
183 CURDIR CurrentDirectory;
184 UNICODE_STRING DllPath;
185 UNICODE_STRING ImagePathName;
186 UNICODE_STRING CommandLine;
187 PWSTR Environment;
188 ULONG dwX;
189 ULONG dwY;
190 ULONG dwXSize;
191 ULONG dwYSize;
192 ULONG dwXCountChars;
193 ULONG dwYCountChars;
194 ULONG dwFillAttribute;
195 ULONG dwFlags;
196 ULONG wShowWindow;
197 UNICODE_STRING WindowTitle;
198 UNICODE_STRING Desktop;
199 UNICODE_STRING ShellInfo;
200 UNICODE_STRING RuntimeInfo;
201 RTL_DRIVE_LETTER_CURDIR DLCurrentDirectory[0x20];
202 ULONG EnvironmentSize;
203 ULONG EnvironmentVersion;
204 PVOID PackageDependencyData;
205 ULONG ProcessGroupId;
206 ULONG LoaderThreads;
207 } RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;
209 /* value for Flags field (FIXME: not the correct name) */
210 #define PROCESS_PARAMS_FLAG_NORMALIZED 1
212 typedef struct _PEB_LDR_DATA
214 ULONG Length;
215 BOOLEAN Initialized;
216 PVOID SsHandle;
217 LIST_ENTRY InLoadOrderModuleList;
218 LIST_ENTRY InMemoryOrderModuleList;
219 LIST_ENTRY InInitializationOrderModuleList;
220 PVOID EntryInProgress;
221 BOOLEAN ShutdownInProgress;
222 HANDLE ShutdownThreadId;
223 } PEB_LDR_DATA, *PPEB_LDR_DATA;
225 typedef struct _GDI_TEB_BATCH
227 ULONG Offset;
228 HANDLE HDC;
229 ULONG Buffer[0x136];
230 } GDI_TEB_BATCH;
232 typedef struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME
234 struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME *Previous;
235 struct _ACTIVATION_CONTEXT *ActivationContext;
236 ULONG Flags;
237 } RTL_ACTIVATION_CONTEXT_STACK_FRAME, *PRTL_ACTIVATION_CONTEXT_STACK_FRAME;
239 typedef struct _ACTIVATION_CONTEXT_STACK
241 RTL_ACTIVATION_CONTEXT_STACK_FRAME *ActiveFrame;
242 LIST_ENTRY FrameListCache;
243 ULONG Flags;
244 ULONG NextCookieSequenceNumber;
245 ULONG_PTR StackId;
246 } ACTIVATION_CONTEXT_STACK, *PACTIVATION_CONTEXT_STACK;
248 typedef struct _TEB_ACTIVE_FRAME_CONTEXT
250 ULONG Flags;
251 const char *FrameName;
252 } TEB_ACTIVE_FRAME_CONTEXT, *PTEB_ACTIVE_FRAME_CONTEXT;
254 typedef struct _TEB_ACTIVE_FRAME_CONTEXT_EX
256 TEB_ACTIVE_FRAME_CONTEXT BasicContext;
257 const char *SourceLocation;
258 } TEB_ACTIVE_FRAME_CONTEXT_EX, *PTEB_ACTIVE_FRAME_CONTEXT_EX;
260 typedef struct _TEB_ACTIVE_FRAME
262 ULONG Flags;
263 struct _TEB_ACTIVE_FRAME *Previous;
264 TEB_ACTIVE_FRAME_CONTEXT *Context;
265 } TEB_ACTIVE_FRAME, *PTEB_ACTIVE_FRAME;
267 typedef struct _TEB_ACTIVE_FRAME_EX
269 TEB_ACTIVE_FRAME BasicFrame;
270 void *ExtensionIdentifier;
271 } TEB_ACTIVE_FRAME_EX, *PTEB_ACTIVE_FRAME_EX;
273 typedef struct _FLS_CALLBACK
275 void *unknown;
276 PFLS_CALLBACK_FUNCTION callback; /* ~0 if NULL callback is set, NULL if FLS index is free. */
277 } FLS_CALLBACK, *PFLS_CALLBACK;
279 typedef struct _FLS_INFO_CHUNK
281 ULONG count; /* number of allocated FLS indexes in the chunk. */
282 FLS_CALLBACK callbacks[1]; /* the size is 0x10 for chunk 0 and is twice as
283 * the previous chunk size for the rest. */
284 } FLS_INFO_CHUNK, *PFLS_INFO_CHUNK;
286 typedef struct _GLOBAL_FLS_DATA
288 FLS_INFO_CHUNK *fls_callback_chunks[8];
289 LIST_ENTRY fls_list_head;
290 ULONG fls_high_index;
291 } GLOBAL_FLS_DATA, *PGLOBAL_FLS_DATA;
293 typedef struct _TEB_FLS_DATA
295 LIST_ENTRY fls_list_entry;
296 void **fls_data_chunks[8];
297 } TEB_FLS_DATA, *PTEB_FLS_DATA;
299 #define TEB_ACTIVE_FRAME_CONTEXT_FLAG_EXTENDED 0x00000001
300 #define TEB_ACTIVE_FRAME_FLAG_EXTENDED 0x00000001
302 /***********************************************************************
303 * PEB data structure
305 typedef struct _PEB
306 { /* win32/win64 */
307 BOOLEAN InheritedAddressSpace; /* 000/000 */
308 BOOLEAN ReadImageFileExecOptions; /* 001/001 */
309 BOOLEAN BeingDebugged; /* 002/002 */
310 BOOLEAN SpareBool; /* 003/003 */
311 HANDLE Mutant; /* 004/008 */
312 HMODULE ImageBaseAddress; /* 008/010 */
313 PPEB_LDR_DATA LdrData; /* 00c/018 */
314 RTL_USER_PROCESS_PARAMETERS *ProcessParameters; /* 010/020 */
315 PVOID SubSystemData; /* 014/028 */
316 HANDLE ProcessHeap; /* 018/030 */
317 PRTL_CRITICAL_SECTION FastPebLock; /* 01c/038 */
318 PVOID /*PPEBLOCKROUTINE*/ FastPebLockRoutine; /* 020/040 */
319 PVOID /*PPEBLOCKROUTINE*/ FastPebUnlockRoutine; /* 024/048 */
320 ULONG EnvironmentUpdateCount; /* 028/050 */
321 PVOID KernelCallbackTable; /* 02c/058 */
322 ULONG Reserved; /* 030/060 */
323 ULONG AtlThunkSListPtr32; /* 034/064 */
324 PVOID /*PPEB_FREE_BLOCK*/ FreeList; /* 038/068 */
325 ULONG TlsExpansionCounter; /* 03c/070 */
326 PRTL_BITMAP TlsBitmap; /* 040/078 */
327 ULONG TlsBitmapBits[2]; /* 044/080 */
328 PVOID ReadOnlySharedMemoryBase; /* 04c/088 */
329 PVOID ReadOnlySharedMemoryHeap; /* 050/090 */
330 PVOID *ReadOnlyStaticServerData; /* 054/098 */
331 PVOID AnsiCodePageData; /* 058/0a0 */
332 PVOID OemCodePageData; /* 05c/0a8 */
333 PVOID UnicodeCaseTableData; /* 060/0b0 */
334 ULONG NumberOfProcessors; /* 064/0b8 */
335 ULONG NtGlobalFlag; /* 068/0bc */
336 LARGE_INTEGER CriticalSectionTimeout; /* 070/0c0 */
337 SIZE_T HeapSegmentReserve; /* 078/0c8 */
338 SIZE_T HeapSegmentCommit; /* 07c/0d0 */
339 SIZE_T HeapDeCommitTotalFreeThreshold; /* 080/0d8 */
340 SIZE_T HeapDeCommitFreeBlockThreshold; /* 084/0e0 */
341 ULONG NumberOfHeaps; /* 088/0e8 */
342 ULONG MaximumNumberOfHeaps; /* 08c/0ec */
343 PVOID *ProcessHeaps; /* 090/0f0 */
344 PVOID GdiSharedHandleTable; /* 094/0f8 */
345 PVOID ProcessStarterHelper; /* 098/100 */
346 PVOID GdiDCAttributeList; /* 09c/108 */
347 PVOID LoaderLock; /* 0a0/110 */
348 ULONG OSMajorVersion; /* 0a4/118 */
349 ULONG OSMinorVersion; /* 0a8/11c */
350 ULONG OSBuildNumber; /* 0ac/120 */
351 ULONG OSPlatformId; /* 0b0/124 */
352 ULONG ImageSubSystem; /* 0b4/128 */
353 ULONG ImageSubSystemMajorVersion; /* 0b8/12c */
354 ULONG ImageSubSystemMinorVersion; /* 0bc/130 */
355 ULONG ImageProcessAffinityMask; /* 0c0/134 */
356 HANDLE GdiHandleBuffer[28]; /* 0c4/138 */
357 ULONG unknown[6]; /* 134/218 */
358 PVOID PostProcessInitRoutine; /* 14c/230 */
359 PRTL_BITMAP TlsExpansionBitmap; /* 150/238 */
360 ULONG TlsExpansionBitmapBits[32]; /* 154/240 */
361 ULONG SessionId; /* 1d4/2c0 */
362 ULARGE_INTEGER AppCompatFlags; /* 1d8/2c8 */
363 ULARGE_INTEGER AppCompatFlagsUser; /* 1e0/2d0 */
364 PVOID ShimData; /* 1e8/2d8 */
365 PVOID AppCompatInfo; /* 1ec/2e0 */
366 UNICODE_STRING CSDVersion; /* 1f0/2e8 */
367 PVOID ActivationContextData; /* 1f8/2f8 */
368 PVOID ProcessAssemblyStorageMap; /* 1fc/300 */
369 PVOID SystemDefaultActivationData; /* 200/308 */
370 PVOID SystemAssemblyStorageMap; /* 204/310 */
371 SIZE_T MinimumStackCommit; /* 208/318 */
372 PVOID *FlsCallback; /* 20c/320 */
373 LIST_ENTRY FlsListHead; /* 210/328 */
374 PRTL_BITMAP FlsBitmap; /* 218/338 */
375 ULONG FlsBitmapBits[4]; /* 21c/340 */
376 ULONG FlsHighIndex; /* 22c/350 */
377 PVOID WerRegistrationData; /* 230/358 */
378 PVOID WerShipAssertPtr; /* 234/360 */
379 PVOID pUnused; /* 238/368 */
380 PVOID pImageHeaderHash; /* 23c/370 */
381 ULONG TracingFlags; /* 240/378 */
382 ULONGLONG CsrServerReadOnlySharedMemoryBase; /* 248/380 */
383 ULONG TppWorkerpListLock; /* 250/388 */
384 LIST_ENTRY TppWorkerpList; /* 254/390 */
385 PVOID WaitOnAddressHashTable [0x80]; /* 25c/3a0 */
386 PVOID TelemetryCoverageHeader; /* 45c/7a0 */
387 ULONG CloudFileFlags; /* 460/7a8 */
388 ULONG CloudFileDiagFlags; /* 464/7ac */
389 CHAR PlaceholderCompatibilityMode; /* 468/7b0 */
390 CHAR PlaceholderCompatibilityModeReserved[7]; /* 469/7b1 */
391 PVOID LeapSecondData; /* 470/7b8 */
392 ULONG LeapSecondFlags; /* 474/7c0 */
393 ULONG NtGlobalFlag2; /* 478/7c4 */
394 } PEB, *PPEB;
397 /***********************************************************************
398 * TEB data structure
400 typedef struct _TEB
401 { /* win32/win64 */
402 NT_TIB Tib; /* 000/0000 */
403 PVOID EnvironmentPointer; /* 01c/0038 */
404 CLIENT_ID ClientId; /* 020/0040 */
405 PVOID ActiveRpcHandle; /* 028/0050 */
406 PVOID ThreadLocalStoragePointer; /* 02c/0058 */
407 PPEB Peb; /* 030/0060 */
408 ULONG LastErrorValue; /* 034/0068 */
409 ULONG CountOfOwnedCriticalSections; /* 038/006c */
410 PVOID CsrClientThread; /* 03c/0070 */
411 PVOID Win32ThreadInfo; /* 040/0078 */
412 ULONG User32Reserved[26]; /* 044/0080 */
413 ULONG UserReserved[5]; /* 0ac/00e8 */
414 PVOID WOW32Reserved; /* 0c0/0100 */
415 ULONG CurrentLocale; /* 0c4/0108 */
416 ULONG FpSoftwareStatusRegister; /* 0c8/010c */
417 PVOID ReservedForDebuggerInstrumentation[16]; /* 0cc/0110 */
418 #ifdef _WIN64
419 PVOID SystemReserved1[30]; /* /0190 */
420 #else
421 PVOID SystemReserved1[26]; /* 10c/ used for krnl386 private data in Wine */
422 #endif
423 char PlaceholderCompatibilityMode; /* 174/0280 */
424 char PlaceholderReserved[11]; /* 175/0281 */
425 DWORD ProxiedProcessId; /* 180/028c */
426 ACTIVATION_CONTEXT_STACK ActivationContextStack; /* 184/0290 */
427 UCHAR WorkingOnBehalfOfTicket[8]; /* 19c/02b8 */
428 LONG ExceptionCode; /* 1a4/02c0 */
429 ACTIVATION_CONTEXT_STACK *ActivationContextStackPointer; /* 1a8/02c8 */
430 ULONG_PTR InstrumentationCallbackSp; /* 1ac/02d0 */
431 ULONG_PTR InstrumentationCallbackPreviousPc; /* 1b0/02d8 */
432 ULONG_PTR InstrumentationCallbackPreviousSp; /* 1b4/02e0 */
433 #ifdef _WIN64
434 ULONG TxFsContext; /* /02e8 */
435 BOOLEAN InstrumentationCallbackDisabled; /* /02ec */
436 #else
437 BOOLEAN InstrumentationCallbackDisabled; /* 1b8/ */
438 BYTE SpareBytes1[23]; /* 1b9/ */
439 ULONG TxFsContext; /* 1d0/ */
440 #endif
441 GDI_TEB_BATCH GdiTebBatch; /* 1d4/02f0 used for ntdll private data in Wine */
442 CLIENT_ID RealClientId; /* 6b4/07d8 */
443 HANDLE GdiCachedProcessHandle; /* 6bc/07e8 */
444 ULONG GdiClientPID; /* 6c0/07f0 */
445 ULONG GdiClientTID; /* 6c4/07f4 */
446 PVOID GdiThreadLocaleInfo; /* 6c8/07f8 */
447 ULONG_PTR Win32ClientInfo[62]; /* 6cc/0800 used for user32 private data in Wine */
448 PVOID glDispatchTable[233]; /* 7c4/09f0 */
449 PVOID glReserved1[29]; /* b68/1138 */
450 PVOID glReserved2; /* bdc/1220 */
451 PVOID glSectionInfo; /* be0/1228 */
452 PVOID glSection; /* be4/1230 */
453 PVOID glTable; /* be8/1238 */
454 PVOID glCurrentRC; /* bec/1240 */
455 PVOID glContext; /* bf0/1248 */
456 ULONG LastStatusValue; /* bf4/1250 */
457 UNICODE_STRING StaticUnicodeString; /* bf8/1258 */
458 WCHAR StaticUnicodeBuffer[261]; /* c00/1268 */
459 PVOID DeallocationStack; /* e0c/1478 */
460 PVOID TlsSlots[64]; /* e10/1480 */
461 LIST_ENTRY TlsLinks; /* f10/1680 */
462 PVOID Vdm; /* f18/1690 */
463 PVOID ReservedForNtRpc; /* f1c/1698 */
464 PVOID DbgSsReserved[2]; /* f20/16a0 */
465 ULONG HardErrorDisabled; /* f28/16b0 */
466 PVOID Instrumentation[16]; /* f2c/16b8 */
467 PVOID WinSockData; /* f6c/1738 */
468 ULONG GdiBatchCount; /* f70/1740 */
469 ULONG Spare2; /* f74/1744 */
470 ULONG GuaranteedStackBytes; /* f78/1748 */
471 PVOID ReservedForPerf; /* f7c/1750 */
472 PVOID ReservedForOle; /* f80/1758 */
473 ULONG WaitingOnLoaderLock; /* f84/1760 */
474 PVOID Reserved5[3]; /* f88/1768 */
475 PVOID *TlsExpansionSlots; /* f94/1780 */
476 #ifdef _WIN64
477 PVOID DeallocationBStore; /* /1788 */
478 PVOID BStoreLimit; /* /1790 */
479 #endif
480 ULONG ImpersonationLocale; /* f98/1798 */
481 ULONG IsImpersonating; /* f9c/179c */
482 PVOID NlsCache; /* fa0/17a0 */
483 PVOID ShimData; /* fa4/17a8 */
484 ULONG HeapVirtualAffinity; /* fa8/17b0 */
485 PVOID CurrentTransactionHandle; /* fac/17b8 */
486 TEB_ACTIVE_FRAME *ActiveFrame; /* fb0/17c0 */
487 TEB_FLS_DATA *FlsSlots; /* fb4/17c8 */
488 PVOID PreferredLanguages; /* fb8/17d0 */
489 PVOID UserPrefLanguages; /* fbc/17d8 */
490 PVOID MergedPrefLanguages; /* fc0/17e0 */
491 ULONG MuiImpersonation; /* fc4/17e8 */
492 USHORT CrossTebFlags; /* fc8/17ec */
493 USHORT SameTebFlags; /* fca/17ee */
494 PVOID TxnScopeEnterCallback; /* fcc/17f0 */
495 PVOID TxnScopeExitCallback; /* fd0/17f8 */
496 PVOID TxnScopeContext; /* fd4/1800 */
497 ULONG LockCount; /* fd8/1808 */
498 LONG WowTebOffset; /* fdc/180c */
499 PVOID ResourceRetValue; /* fe0/1810 */
500 PVOID ReservedForWdf; /* fe4/1818 */
501 ULONGLONG ReservedForCrt; /* fe8/1820 */
502 GUID EffectiveContainerId; /* ff0/1828 */
503 } TEB, *PTEB;
506 /***********************************************************************
507 * The 32-bit/64-bit version of the PEB and TEB for WoW64
509 typedef struct _NT_TIB32
511 ULONG ExceptionList; /* 0000 */
512 ULONG StackBase; /* 0004 */
513 ULONG StackLimit; /* 0008 */
514 ULONG SubSystemTib; /* 000c */
515 ULONG FiberData; /* 0010 */
516 ULONG ArbitraryUserPointer; /* 0014 */
517 ULONG Self; /* 0018 */
518 } NT_TIB32;
520 typedef struct _NT_TIB64
522 ULONG64 ExceptionList; /* 0000 */
523 ULONG64 StackBase; /* 0008 */
524 ULONG64 StackLimit; /* 0010 */
525 ULONG64 SubSystemTib; /* 0018 */
526 ULONG64 FiberData; /* 0020 */
527 ULONG64 ArbitraryUserPointer; /* 0028 */
528 ULONG64 Self; /* 0030 */
529 } NT_TIB64;
531 typedef struct _CLIENT_ID32
533 ULONG UniqueProcess;
534 ULONG UniqueThread;
535 } CLIENT_ID32;
537 typedef struct _CLIENT_ID64
539 ULONG64 UniqueProcess;
540 ULONG64 UniqueThread;
541 } CLIENT_ID64;
543 typedef struct _LIST_ENTRY32
545 ULONG Flink;
546 ULONG Blink;
547 } LIST_ENTRY32;
549 typedef struct _LIST_ENTRY64
551 ULONG64 Flink;
552 ULONG64 Blink;
553 } LIST_ENTRY64;
555 typedef struct _UNICODE_STRING32
557 USHORT Length;
558 USHORT MaximumLength;
559 ULONG Buffer;
560 } UNICODE_STRING32;
562 typedef struct _UNICODE_STRING64
564 USHORT Length;
565 USHORT MaximumLength;
566 ULONG64 Buffer;
567 } UNICODE_STRING64;
569 typedef struct _ACTIVATION_CONTEXT_STACK32
571 ULONG ActiveFrame;
572 LIST_ENTRY32 FrameListCache;
573 ULONG Flags;
574 ULONG NextCookieSequenceNumber;
575 ULONG32 StackId;
576 } ACTIVATION_CONTEXT_STACK32;
578 typedef struct _ACTIVATION_CONTEXT_STACK64
580 ULONG64 ActiveFrame;
581 LIST_ENTRY64 FrameListCache;
582 ULONG Flags;
583 ULONG NextCookieSequenceNumber;
584 ULONG64 StackId;
585 } ACTIVATION_CONTEXT_STACK64;
587 typedef struct _PEB_LDR_DATA32
589 ULONG Length;
590 BOOLEAN Initialized;
591 ULONG SsHandle;
592 LIST_ENTRY32 InLoadOrderModuleList;
593 LIST_ENTRY32 InMemoryOrderModuleList;
594 LIST_ENTRY32 InInitializationOrderModuleList;
595 ULONG EntryInProgress;
596 BOOLEAN ShutdownInProgress;
597 ULONG ShutdownThreadId;
598 } PEB_LDR_DATA32, *PPEB_LDR_DATA32;
600 typedef struct _PEB_LDR_DATA64
602 ULONG Length;
603 BOOLEAN Initialized;
604 ULONG64 SsHandle;
605 LIST_ENTRY64 InLoadOrderModuleList;
606 LIST_ENTRY64 InMemoryOrderModuleList;
607 LIST_ENTRY64 InInitializationOrderModuleList;
608 ULONG64 EntryInProgress;
609 BOOLEAN ShutdownInProgress;
610 ULONG64 ShutdownThreadId;
611 } PEB_LDR_DATA64, *PPEB_LDR_DATA64;
613 typedef struct _PEB32
615 BOOLEAN InheritedAddressSpace; /* 0000 */
616 BOOLEAN ReadImageFileExecOptions; /* 0001 */
617 BOOLEAN BeingDebugged; /* 0002 */
618 BOOLEAN SpareBool; /* 0003 */
619 ULONG Mutant; /* 0004 */
620 ULONG ImageBaseAddress; /* 0008 */
621 ULONG LdrData; /* 000c */
622 ULONG ProcessParameters; /* 0010 */
623 ULONG SubSystemData; /* 0014 */
624 ULONG ProcessHeap; /* 0018 */
625 ULONG FastPebLock; /* 001c */
626 ULONG FastPebLockRoutine; /* 0020 */
627 ULONG FastPebUnlockRoutine; /* 0024 */
628 ULONG EnvironmentUpdateCount; /* 0028 */
629 ULONG KernelCallbackTable; /* 002c */
630 ULONG Reserved; /* 0030 */
631 ULONG AtlThunkSListPtr32; /* 0034 */
632 ULONG FreeList; /* 0038 */
633 ULONG TlsExpansionCounter; /* 003c */
634 ULONG TlsBitmap; /* 0040 */
635 ULONG TlsBitmapBits[2]; /* 0044 */
636 ULONG ReadOnlySharedMemoryBase; /* 004c */
637 ULONG ReadOnlySharedMemoryHeap; /* 0050 */
638 ULONG ReadOnlyStaticServerData; /* 0054 */
639 ULONG AnsiCodePageData; /* 0058 */
640 ULONG OemCodePageData; /* 005c */
641 ULONG UnicodeCaseTableData; /* 0060 */
642 ULONG NumberOfProcessors; /* 0064 */
643 ULONG NtGlobalFlag; /* 0068 */
644 LARGE_INTEGER CriticalSectionTimeout; /* 0070 */
645 ULONG HeapSegmentReserve; /* 0078 */
646 ULONG HeapSegmentCommit; /* 007c */
647 ULONG HeapDeCommitTotalFreeThreshold; /* 0080 */
648 ULONG HeapDeCommitFreeBlockThreshold; /* 0084 */
649 ULONG NumberOfHeaps; /* 0088 */
650 ULONG MaximumNumberOfHeaps; /* 008c */
651 ULONG ProcessHeaps; /* 0090 */
652 ULONG GdiSharedHandleTable; /* 0094 */
653 ULONG ProcessStarterHelper; /* 0098 */
654 ULONG GdiDCAttributeList; /* 009c */
655 ULONG LoaderLock; /* 00a0 */
656 ULONG OSMajorVersion; /* 00a4 */
657 ULONG OSMinorVersion; /* 00a8 */
658 ULONG OSBuildNumber; /* 00ac */
659 ULONG OSPlatformId; /* 00b0 */
660 ULONG ImageSubSystem; /* 00b4 */
661 ULONG ImageSubSystemMajorVersion; /* 00b8 */
662 ULONG ImageSubSystemMinorVersion; /* 00bc */
663 ULONG ImageProcessAffinityMask; /* 00c0 */
664 ULONG GdiHandleBuffer[28]; /* 00c4 */
665 ULONG unknown[6]; /* 0134 */
666 ULONG PostProcessInitRoutine; /* 014c */
667 ULONG TlsExpansionBitmap; /* 0150 */
668 ULONG TlsExpansionBitmapBits[32]; /* 0154 */
669 ULONG SessionId; /* 01d4 */
670 ULARGE_INTEGER AppCompatFlags; /* 01d8 */
671 ULARGE_INTEGER AppCompatFlagsUser; /* 01e0 */
672 ULONG ShimData; /* 01e8 */
673 ULONG AppCompatInfo; /* 01ec */
674 UNICODE_STRING CSDVersion; /* 01f0 */
675 ULONG ActivationContextData; /* 01f8 */
676 ULONG ProcessAssemblyStorageMap; /* 01fc */
677 ULONG SystemDefaultActivationData; /* 0200 */
678 ULONG SystemAssemblyStorageMap; /* 0204 */
679 ULONG MinimumStackCommit; /* 0208 */
680 ULONG FlsCallback; /* 020c */
681 LIST_ENTRY FlsListHead; /* 0210 */
682 ULONG FlsBitmap; /* 0218 */
683 ULONG FlsBitmapBits[4]; /* 021c */
684 ULONG FlsHighIndex; /* 022c */
685 ULONG WerRegistrationData; /* 0230 */
686 ULONG WerShipAssertPtr; /* 0234 */
687 ULONG pUnused; /* 0238 */
688 ULONG pImageHeaderHash; /* 023c */
689 ULONG TracingFlags; /* 0240 */
690 ULONGLONG CsrServerReadOnlySharedMemoryBase; /* 0248 */
691 ULONG TppWorkerpListLock; /* 0250 */
692 LIST_ENTRY TppWorkerpList; /* 0254 */
693 ULONG WaitOnAddressHashTable [0x80]; /* 025c */
694 ULONG TelemetryCoverageHeader; /* 045c */
695 ULONG CloudFileFlags; /* 0460 */
696 ULONG CloudFileDiagFlags; /* 0464 */
697 CHAR PlaceholderCompatibilityMode; /* 0468 */
698 CHAR PlaceholderCompatibilityModeReserved[7]; /* 0469 */
699 ULONG LeapSecondData; /* 0470 */
700 ULONG LeapSecondFlags; /* 0474 */
701 ULONG NtGlobalFlag2; /* 0478 */
702 } PEB32;
704 typedef struct _PEB64
706 BOOLEAN InheritedAddressSpace; /* 0000 */
707 BOOLEAN ReadImageFileExecOptions; /* 0001 */
708 BOOLEAN BeingDebugged; /* 0002 */
709 BOOLEAN SpareBool; /* 0003 */
710 ULONG64 Mutant; /* 0008 */
711 ULONG64 ImageBaseAddress; /* 0010 */
712 ULONG64 LdrData; /* 0018 */
713 ULONG64 ProcessParameters; /* 0020 */
714 ULONG64 SubSystemData; /* 0028 */
715 ULONG64 ProcessHeap; /* 0030 */
716 ULONG64 FastPebLock; /* 0038 */
717 ULONG64 FastPebLockRoutine; /* 0040 */
718 ULONG64 FastPebUnlockRoutine; /* 0048 */
719 ULONG EnvironmentUpdateCount; /* 0050 */
720 ULONG64 KernelCallbackTable; /* 0058 */
721 ULONG Reserved; /* 0060 */
722 ULONG AtlThunkSListPtr32; /* 0064 */
723 ULONG64 FreeList; /* 0068 */
724 ULONG TlsExpansionCounter; /* 0070 */
725 ULONG64 TlsBitmap; /* 0078 */
726 ULONG TlsBitmapBits[2]; /* 0080 */
727 ULONG64 ReadOnlySharedMemoryBase; /* 0088 */
728 ULONG64 ReadOnlySharedMemoryHeap; /* 0090 */
729 ULONG64 ReadOnlyStaticServerData; /* 0098 */
730 ULONG64 AnsiCodePageData; /* 00a0 */
731 ULONG64 OemCodePageData; /* 00a8 */
732 ULONG64 UnicodeCaseTableData; /* 00b0 */
733 ULONG NumberOfProcessors; /* 00b8 */
734 ULONG NtGlobalFlag; /* 00bc */
735 LARGE_INTEGER CriticalSectionTimeout; /* 00c0 */
736 ULONG64 HeapSegmentReserve; /* 00c8 */
737 ULONG64 HeapSegmentCommit; /* 00d0 */
738 ULONG64 HeapDeCommitTotalFreeThreshold; /* 00d8 */
739 ULONG64 HeapDeCommitFreeBlockThreshold; /* 00e0 */
740 ULONG NumberOfHeaps; /* 00e8 */
741 ULONG MaximumNumberOfHeaps; /* 00ec */
742 ULONG64 ProcessHeaps; /* 00f0 */
743 ULONG64 GdiSharedHandleTable; /* 00f8 */
744 ULONG64 ProcessStarterHelper; /* 0100 */
745 ULONG64 GdiDCAttributeList; /* 0108 */
746 ULONG64 LoaderLock; /* 0110 */
747 ULONG OSMajorVersion; /* 0118 */
748 ULONG OSMinorVersion; /* 011c */
749 ULONG OSBuildNumber; /* 0120 */
750 ULONG OSPlatformId; /* 0124 */
751 ULONG ImageSubSystem; /* 0128 */
752 ULONG ImageSubSystemMajorVersion; /* 012c */
753 ULONG ImageSubSystemMinorVersion; /* 0130 */
754 ULONG ImageProcessAffinityMask; /* 0134 */
755 ULONG64 GdiHandleBuffer[28]; /* 0138 */
756 ULONG unknown[6]; /* 0218 */
757 ULONG64 PostProcessInitRoutine; /* 0230 */
758 ULONG64 TlsExpansionBitmap; /* 0238 */
759 ULONG TlsExpansionBitmapBits[32]; /* 0240 */
760 ULONG SessionId; /* 02c0 */
761 ULARGE_INTEGER AppCompatFlags; /* 02c8 */
762 ULARGE_INTEGER AppCompatFlagsUser; /* 02d0 */
763 ULONG64 ShimData; /* 02d8 */
764 ULONG64 AppCompatInfo; /* 02e0 */
765 UNICODE_STRING64 CSDVersion; /* 02e8 */
766 ULONG64 ActivationContextData; /* 02f8 */
767 ULONG64 ProcessAssemblyStorageMap; /* 0300 */
768 ULONG64 SystemDefaultActivationData; /* 0308 */
769 ULONG64 SystemAssemblyStorageMap; /* 0310 */
770 ULONG64 MinimumStackCommit; /* 0318 */
771 ULONG64 FlsCallback; /* 0320 */
772 LIST_ENTRY64 FlsListHead; /* 0328 */
773 ULONG64 FlsBitmap; /* 0338 */
774 ULONG FlsBitmapBits[4]; /* 0340 */
775 ULONG FlsHighIndex; /* 0350 */
776 ULONG64 WerRegistrationData; /* 0358 */
777 ULONG64 WerShipAssertPtr; /* 0360 */
778 ULONG64 pUnused; /* 0368 */
779 ULONG64 pImageHeaderHash; /* 0370 */
780 ULONG TracingFlags; /* 0378 */
781 ULONGLONG CsrServerReadOnlySharedMemoryBase; /* 0380 */
782 ULONG TppWorkerpListLock; /* 0388 */
783 LIST_ENTRY64 TppWorkerpList; /* 0390 */
784 ULONG64 WaitOnAddressHashTable [0x80]; /* 03a0 */
785 ULONG64 TelemetryCoverageHeader; /* 07a0 */
786 ULONG CloudFileFlags; /* 07a8 */
787 ULONG CloudFileDiagFlags; /* 07ac */
788 CHAR PlaceholderCompatibilityMode; /* 07b0 */
789 CHAR PlaceholderCompatibilityModeReserved[7]; /* 07b1 */
790 ULONG64 LeapSecondData; /* 07b8 */
791 ULONG LeapSecondFlags; /* 07c0 */
792 ULONG NtGlobalFlag2; /* 07c4 */
793 } PEB64;
795 typedef struct _TEB32
797 NT_TIB32 Tib; /* 0000 */
798 ULONG EnvironmentPointer; /* 001c */
799 CLIENT_ID32 ClientId; /* 0020 */
800 ULONG ActiveRpcHandle; /* 0028 */
801 ULONG ThreadLocalStoragePointer; /* 002c */
802 ULONG Peb; /* 0030 */
803 ULONG LastErrorValue; /* 0034 */
804 ULONG CountOfOwnedCriticalSections; /* 0038 */
805 ULONG CsrClientThread; /* 003c */
806 ULONG Win32ThreadInfo; /* 0040 */
807 ULONG User32Reserved[26]; /* 0044 */
808 ULONG UserReserved[5]; /* 00ac */
809 ULONG WOW32Reserved; /* 00c0 */
810 ULONG CurrentLocale; /* 00c4 */
811 ULONG FpSoftwareStatusRegister; /* 00c8 */
812 ULONG ReservedForDebuggerInstrumentation[16]; /* 00cc */
813 ULONG SystemReserved1[26]; /* 010c */
814 char PlaceholderCompatibilityMode; /* 0174 */
815 char PlaceholderReserved[11]; /* 0175 */
816 DWORD ProxiedProcessId; /* 0180 */
817 ACTIVATION_CONTEXT_STACK32 ActivationContextStack; /* 0184 */
818 UCHAR WorkingOnBehalfOfTicket[8]; /* 019c */
819 LONG ExceptionCode; /* 01a4 */
820 ULONG ActivationContextStackPointer; /* 01a8 */
821 ULONG InstrumentationCallbackSp; /* 01ac */
822 ULONG InstrumentationCallbackPreviousPc; /* 01b0 */
823 ULONG InstrumentationCallbackPreviousSp; /* 01b4 */
824 BOOLEAN InstrumentationCallbackDisabled; /* 01b8 */
825 BYTE SpareBytes1[23]; /* 01b9 */
826 ULONG TxFsContext; /* 01d0 */
827 ULONG GdiTebBatch[0x138]; /* 01d4 */
828 CLIENT_ID32 RealClientId; /* 06b4 */
829 ULONG GdiCachedProcessHandle; /* 06bc */
830 ULONG GdiClientPID; /* 06c0 */
831 ULONG GdiClientTID; /* 06c4 */
832 ULONG GdiThreadLocaleInfo; /* 06c8 */
833 ULONG Win32ClientInfo[62]; /* 06cc */
834 ULONG glDispatchTable[233]; /* 07c4 */
835 ULONG glReserved1[29]; /* 0b68 */
836 ULONG glReserved2; /* 0bdc */
837 ULONG glSectionInfo; /* 0be0 */
838 ULONG glSection; /* 0be4 */
839 ULONG glTable; /* 0be8 */
840 ULONG glCurrentRC; /* 0bec */
841 ULONG glContext; /* 0bf0 */
842 ULONG LastStatusValue; /* 0bf4 */
843 UNICODE_STRING32 StaticUnicodeString; /* 0bf8 */
844 WCHAR StaticUnicodeBuffer[261]; /* 0c00 */
845 ULONG DeallocationStack; /* 0e0c */
846 ULONG TlsSlots[64]; /* 0e10 */
847 LIST_ENTRY32 TlsLinks; /* 0f10 */
848 ULONG Vdm; /* 0f18 */
849 ULONG ReservedForNtRpc; /* 0f1c */
850 ULONG DbgSsReserved[2]; /* 0f20 */
851 ULONG HardErrorDisabled; /* 0f28 */
852 ULONG Instrumentation[16]; /* 0f2c */
853 ULONG WinSockData; /* 0f6c */
854 ULONG GdiBatchCount; /* 0f70 */
855 ULONG Spare2; /* 0f74 */
856 ULONG GuaranteedStackBytes; /* 0f78 */
857 ULONG ReservedForPerf; /* 0f7c */
858 ULONG ReservedForOle; /* 0f80 */
859 ULONG WaitingOnLoaderLock; /* 0f84 */
860 ULONG Reserved5[3]; /* 0f88 */
861 ULONG TlsExpansionSlots; /* 0f94 */
862 ULONG ImpersonationLocale; /* 0f98 */
863 ULONG IsImpersonating; /* 0f9c */
864 ULONG NlsCache; /* 0fa0 */
865 ULONG ShimData; /* 0fa4 */
866 ULONG HeapVirtualAffinity; /* 0fa8 */
867 ULONG CurrentTransactionHandle; /* 0fac */
868 ULONG ActiveFrame; /* 0fb0 */
869 ULONG FlsSlots; /* 0fb4 */
870 ULONG PreferredLanguages; /* 0fb8 */
871 ULONG UserPrefLanguages; /* 0fbc */
872 ULONG MergedPrefLanguages; /* 0fc0 */
873 ULONG MuiImpersonation; /* 0fc4 */
874 USHORT CrossTebFlags; /* 0fc8 */
875 USHORT SameTebFlags; /* 0fca */
876 ULONG TxnScopeEnterCallback; /* 0fcc */
877 ULONG TxnScopeExitCallback; /* 0fd0 */
878 ULONG TxnScopeContext; /* 0fd4 */
879 ULONG LockCount; /* 0fd8 */
880 LONG WowTebOffset; /* 0fdc */
881 ULONG ResourceRetValue; /* 0fe0 */
882 ULONG ReservedForWdf; /* 0fe4 */
883 ULONGLONG ReservedForCrt; /* 0fe8 */
884 GUID EffectiveContainerId; /* 0ff0 */
885 } TEB32;
887 typedef struct _TEB64
889 NT_TIB64 Tib; /* 0000 */
890 ULONG64 EnvironmentPointer; /* 0038 */
891 CLIENT_ID64 ClientId; /* 0040 */
892 ULONG64 ActiveRpcHandle; /* 0050 */
893 ULONG64 ThreadLocalStoragePointer; /* 0058 */
894 ULONG64 Peb; /* 0060 */
895 ULONG LastErrorValue; /* 0068 */
896 ULONG CountOfOwnedCriticalSections; /* 006c */
897 ULONG64 CsrClientThread; /* 0070 */
898 ULONG64 Win32ThreadInfo; /* 0078 */
899 ULONG User32Reserved[26]; /* 0080 */
900 ULONG UserReserved[5]; /* 00e8 */
901 ULONG64 WOW32Reserved; /* 0100 */
902 ULONG CurrentLocale; /* 0108 */
903 ULONG FpSoftwareStatusRegister; /* 010c */
904 ULONG64 ReservedForDebuggerInstrumentation[16]; /* 0110 */
905 ULONG64 SystemReserved1[30]; /* 0190 */
906 char PlaceholderCompatibilityMode; /* 0280 */
907 char PlaceholderReserved[11]; /* 0281 */
908 DWORD ProxiedProcessId; /* 028c */
909 ACTIVATION_CONTEXT_STACK64 ActivationContextStack; /* 0290 */
910 UCHAR WorkingOnBehalfOfTicket[8]; /* 02b8 */
911 LONG ExceptionCode; /* 02c0 */
912 ULONG64 ActivationContextStackPointer; /* 02c8 */
913 ULONG64 InstrumentationCallbackSp; /* 02d0 */
914 ULONG64 InstrumentationCallbackPreviousPc; /* 02d8 */
915 ULONG64 InstrumentationCallbackPreviousSp; /* 02e0 */
916 ULONG TxFsContext; /* 02e8 */
917 BOOLEAN InstrumentationCallbackDisabled; /* 02ec */
918 ULONG64 GdiTebBatch[0x9d]; /* 02f0 */
919 CLIENT_ID64 RealClientId; /* 07d8 */
920 ULONG64 GdiCachedProcessHandle; /* 07e8 */
921 ULONG GdiClientPID; /* 07f0 */
922 ULONG GdiClientTID; /* 07f4 */
923 ULONG64 GdiThreadLocaleInfo; /* 07f8 */
924 ULONG64 Win32ClientInfo[62]; /* 0800 */
925 ULONG64 glDispatchTable[233]; /* 09f0 */
926 ULONG64 glReserved1[29]; /* 1138 */
927 ULONG64 glReserved2; /* 1220 */
928 ULONG64 glSectionInfo; /* 1228 */
929 ULONG64 glSection; /* 1230 */
930 ULONG64 glTable; /* 1238 */
931 ULONG64 glCurrentRC; /* 1240 */
932 ULONG64 glContext; /* 1248 */
933 ULONG LastStatusValue; /* 1250 */
934 UNICODE_STRING64 StaticUnicodeString; /* 1258 */
935 WCHAR StaticUnicodeBuffer[261]; /* 1268 */
936 ULONG64 DeallocationStack; /* 1478 */
937 ULONG64 TlsSlots[64]; /* 1480 */
938 LIST_ENTRY64 TlsLinks; /* 1680 */
939 ULONG64 Vdm; /* 1690 */
940 ULONG64 ReservedForNtRpc; /* 1698 */
941 ULONG64 DbgSsReserved[2]; /* 16a0 */
942 ULONG HardErrorDisabled; /* 16b0 */
943 ULONG64 Instrumentation[16]; /* 16b8 */
944 ULONG64 WinSockData; /* 1738 */
945 ULONG GdiBatchCount; /* 1740 */
946 ULONG Spare2; /* 1744 */
947 ULONG GuaranteedStackBytes; /* 1748 */
948 ULONG64 ReservedForPerf; /* 1750 */
949 ULONG64 ReservedForOle; /* 1758 */
950 ULONG WaitingOnLoaderLock; /* 1760 */
951 ULONG64 Reserved5[3]; /* 1768 */
952 ULONG64 TlsExpansionSlots; /* 1780 */
953 ULONG64 DeallocationBStore; /* 1788 */
954 ULONG64 BStoreLimit; /* 1790 */
955 ULONG ImpersonationLocale; /* 1798 */
956 ULONG IsImpersonating; /* 179c */
957 ULONG64 NlsCache; /* 17a0 */
958 ULONG64 ShimData; /* 17a8 */
959 ULONG HeapVirtualAffinity; /* 17b0 */
960 ULONG64 CurrentTransactionHandle; /* 17b8 */
961 ULONG64 ActiveFrame; /* 17c0 */
962 ULONG64 FlsSlots; /* 17c8 */
963 ULONG64 PreferredLanguages; /* 17d0 */
964 ULONG64 UserPrefLanguages; /* 17d8 */
965 ULONG64 MergedPrefLanguages; /* 17e0 */
966 ULONG MuiImpersonation; /* 17e8 */
967 USHORT CrossTebFlags; /* 17ec */
968 USHORT SameTebFlags; /* 17ee */
969 ULONG64 TxnScopeEnterCallback; /* 17f0 */
970 ULONG64 TxnScopeExitCallback; /* 17f8 */
971 ULONG64 TxnScopeContext; /* 1800 */
972 ULONG LockCount; /* 1808 */
973 LONG WowTebOffset; /* 180c */
974 ULONG64 ResourceRetValue; /* 1810 */
975 ULONG64 ReservedForWdf; /* 1818 */
976 ULONGLONG ReservedForCrt; /* 1820 */
977 GUID EffectiveContainerId; /* 1828 */
978 } TEB64;
980 /* reserved TEB64 TLS slots for Wow64 */
981 #define WOW64_TLS_FILESYSREDIR 8
984 /***********************************************************************
985 * Enums
988 typedef enum _FILE_INFORMATION_CLASS {
989 FileDirectoryInformation = 1,
990 FileFullDirectoryInformation,
991 FileBothDirectoryInformation,
992 FileBasicInformation,
993 FileStandardInformation,
994 FileInternalInformation,
995 FileEaInformation,
996 FileAccessInformation,
997 FileNameInformation,
998 FileRenameInformation,
999 FileLinkInformation,
1000 FileNamesInformation,
1001 FileDispositionInformation,
1002 FilePositionInformation,
1003 FileFullEaInformation,
1004 FileModeInformation,
1005 FileAlignmentInformation,
1006 FileAllInformation,
1007 FileAllocationInformation,
1008 FileEndOfFileInformation,
1009 FileAlternateNameInformation,
1010 FileStreamInformation,
1011 FilePipeInformation,
1012 FilePipeLocalInformation,
1013 FilePipeRemoteInformation,
1014 FileMailslotQueryInformation,
1015 FileMailslotSetInformation,
1016 FileCompressionInformation,
1017 FileObjectIdInformation,
1018 FileCompletionInformation,
1019 FileMoveClusterInformation,
1020 FileQuotaInformation,
1021 FileReparsePointInformation,
1022 FileNetworkOpenInformation,
1023 FileAttributeTagInformation,
1024 FileTrackingInformation,
1025 FileIdBothDirectoryInformation,
1026 FileIdFullDirectoryInformation,
1027 FileValidDataLengthInformation,
1028 FileShortNameInformation,
1029 FileIoCompletionNotificationInformation,
1030 FileIoStatusBlockRangeInformation,
1031 FileIoPriorityHintInformation,
1032 FileSfioReserveInformation,
1033 FileSfioVolumeInformation,
1034 FileHardLinkInformation,
1035 FileProcessIdsUsingFileInformation,
1036 FileNormalizedNameInformation,
1037 FileNetworkPhysicalNameInformation,
1038 FileIdGlobalTxDirectoryInformation,
1039 FileIsRemoteDeviceInformation,
1040 FileAttributeCacheInformation,
1041 FileNumaNodeInformation,
1042 FileStandardLinkInformation,
1043 FileRemoteProtocolInformation,
1044 FileRenameInformationBypassAccessCheck,
1045 FileLinkInformationBypassAccessCheck,
1046 FileVolumeNameInformation,
1047 FileIdInformation,
1048 FileIdExtdDirectoryInformation,
1049 FileReplaceCompletionInformation,
1050 FileHardLinkFullIdInformation,
1051 FileIdExtdBothDirectoryInformation,
1052 FileMaximumInformation
1053 } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
1055 typedef struct _FILE_DIRECTORY_INFORMATION {
1056 ULONG NextEntryOffset;
1057 ULONG FileIndex;
1058 LARGE_INTEGER CreationTime;
1059 LARGE_INTEGER LastAccessTime;
1060 LARGE_INTEGER LastWriteTime;
1061 LARGE_INTEGER ChangeTime;
1062 LARGE_INTEGER EndOfFile;
1063 LARGE_INTEGER AllocationSize;
1064 ULONG FileAttributes;
1065 ULONG FileNameLength;
1066 WCHAR FileName[ANYSIZE_ARRAY];
1067 } FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION;
1069 typedef struct _FILE_FULL_DIRECTORY_INFORMATION {
1070 ULONG NextEntryOffset;
1071 ULONG FileIndex;
1072 LARGE_INTEGER CreationTime;
1073 LARGE_INTEGER LastAccessTime;
1074 LARGE_INTEGER LastWriteTime;
1075 LARGE_INTEGER ChangeTime;
1076 LARGE_INTEGER EndOfFile;
1077 LARGE_INTEGER AllocationSize;
1078 ULONG FileAttributes;
1079 ULONG FileNameLength;
1080 ULONG EaSize;
1081 WCHAR FileName[ANYSIZE_ARRAY];
1082 } FILE_FULL_DIRECTORY_INFORMATION, *PFILE_FULL_DIRECTORY_INFORMATION,
1083 FILE_FULL_DIR_INFORMATION, *PFILE_FULL_DIR_INFORMATION;
1085 typedef struct _FILE_ID_FULL_DIRECTORY_INFORMATION {
1086 ULONG NextEntryOffset;
1087 ULONG FileIndex;
1088 LARGE_INTEGER CreationTime;
1089 LARGE_INTEGER LastAccessTime;
1090 LARGE_INTEGER LastWriteTime;
1091 LARGE_INTEGER ChangeTime;
1092 LARGE_INTEGER EndOfFile;
1093 LARGE_INTEGER AllocationSize;
1094 ULONG FileAttributes;
1095 ULONG FileNameLength;
1096 ULONG EaSize;
1097 LARGE_INTEGER FileId;
1098 WCHAR FileName[ANYSIZE_ARRAY];
1099 } FILE_ID_FULL_DIRECTORY_INFORMATION, *PFILE_ID_FULL_DIRECTORY_INFORMATION;
1101 typedef struct _FILE_BOTH_DIRECTORY_INFORMATION {
1102 ULONG NextEntryOffset;
1103 ULONG FileIndex;
1104 LARGE_INTEGER CreationTime;
1105 LARGE_INTEGER LastAccessTime;
1106 LARGE_INTEGER LastWriteTime;
1107 LARGE_INTEGER ChangeTime;
1108 LARGE_INTEGER EndOfFile;
1109 LARGE_INTEGER AllocationSize;
1110 ULONG FileAttributes;
1111 ULONG FileNameLength;
1112 ULONG EaSize;
1113 CHAR ShortNameLength;
1114 WCHAR ShortName[12];
1115 WCHAR FileName[ANYSIZE_ARRAY];
1116 } FILE_BOTH_DIRECTORY_INFORMATION, *PFILE_BOTH_DIRECTORY_INFORMATION,
1117 FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;
1119 typedef struct _FILE_ID_BOTH_DIRECTORY_INFORMATION {
1120 ULONG NextEntryOffset;
1121 ULONG FileIndex;
1122 LARGE_INTEGER CreationTime;
1123 LARGE_INTEGER LastAccessTime;
1124 LARGE_INTEGER LastWriteTime;
1125 LARGE_INTEGER ChangeTime;
1126 LARGE_INTEGER EndOfFile;
1127 LARGE_INTEGER AllocationSize;
1128 ULONG FileAttributes;
1129 ULONG FileNameLength;
1130 ULONG EaSize;
1131 CHAR ShortNameLength;
1132 WCHAR ShortName[12];
1133 LARGE_INTEGER FileId;
1134 WCHAR FileName[ANYSIZE_ARRAY];
1135 } FILE_ID_BOTH_DIRECTORY_INFORMATION, *PFILE_ID_BOTH_DIRECTORY_INFORMATION;
1137 typedef struct _FILE_ID_GLOBAL_TX_DIR_INFORMATION {
1138 ULONG NextEntryOffset;
1139 ULONG FileIndex;
1140 LARGE_INTEGER CreationTime;
1141 LARGE_INTEGER LastAccessTime;
1142 LARGE_INTEGER LastWriteTime;
1143 LARGE_INTEGER ChangeTime;
1144 LARGE_INTEGER EndOfFile;
1145 LARGE_INTEGER AllocationSize;
1146 ULONG FileAttributes;
1147 ULONG FileNameLength;
1148 LARGE_INTEGER FileId;
1149 GUID LockingTransactionId;
1150 ULONG TxInfoFlags;
1151 WCHAR FileName[ANYSIZE_ARRAY];
1152 } FILE_ID_GLOBAL_TX_DIR_INFORMATION, *PFILE_ID_GLOBAL_TX_DIR_INFORMATION;
1154 typedef struct _FILE_BASIC_INFORMATION {
1155 LARGE_INTEGER CreationTime;
1156 LARGE_INTEGER LastAccessTime;
1157 LARGE_INTEGER LastWriteTime;
1158 LARGE_INTEGER ChangeTime;
1159 ULONG FileAttributes;
1160 } FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
1162 typedef struct _FILE_STANDARD_INFORMATION {
1163 LARGE_INTEGER AllocationSize;
1164 LARGE_INTEGER EndOfFile;
1165 ULONG NumberOfLinks;
1166 BOOLEAN DeletePending;
1167 BOOLEAN Directory;
1168 } FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;
1170 typedef struct _FILE_INTERNAL_INFORMATION {
1171 LARGE_INTEGER IndexNumber;
1172 } FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;
1174 typedef struct _FILE_ID_128 {
1175 UCHAR Identifier[16];
1176 } FILE_ID_128, *PFILE_ID_128;
1178 typedef struct _FILE_ID_INFORMATION {
1179 ULONGLONG VolumeSerialNumber;
1180 FILE_ID_128 FileId;
1181 } FILE_ID_INFORMATION, *PFILE_ID_INFORMATION;
1183 typedef struct _FILE_EA_INFORMATION {
1184 ULONG EaSize;
1185 } FILE_EA_INFORMATION, *PFILE_EA_INFORMATION;
1187 typedef struct _FILE_ACCESS_INFORMATION {
1188 ACCESS_MASK AccessFlags;
1189 } FILE_ACCESS_INFORMATION, *PFILE_ACCESS_INFORMATION;
1191 typedef struct _FILE_NAME_INFORMATION {
1192 ULONG FileNameLength;
1193 WCHAR FileName[1];
1194 } FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
1196 typedef struct _FILE_RENAME_INFORMATION {
1197 BOOLEAN ReplaceIfExists;
1198 HANDLE RootDirectory;
1199 ULONG FileNameLength;
1200 WCHAR FileName[1];
1201 } FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;
1203 typedef struct _FILE_LINK_INFORMATION {
1204 BOOLEAN ReplaceIfExists;
1205 HANDLE RootDirectory;
1206 ULONG FileNameLength;
1207 WCHAR FileName[1];
1208 } FILE_LINK_INFORMATION, *PFILE_LINK_INFORMATION;
1210 typedef struct _FILE_NAMES_INFORMATION {
1211 ULONG NextEntryOffset;
1212 ULONG FileIndex;
1213 ULONG FileNameLength;
1214 WCHAR FileName[1];
1215 } FILE_NAMES_INFORMATION, *PFILE_NAMES_INFORMATION;
1217 typedef struct _FILE_DISPOSITION_INFORMATION {
1218 BOOLEAN DoDeleteFile;
1219 } FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION;
1221 typedef struct _FILE_POSITION_INFORMATION {
1222 LARGE_INTEGER CurrentByteOffset;
1223 } FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;
1225 typedef struct _FILE_ALIGNMENT_INFORMATION {
1226 ULONG AlignmentRequirement;
1227 } FILE_ALIGNMENT_INFORMATION, *PFILE_ALIGNMENT_INFORMATION;
1229 typedef struct _FILE_ALLOCATION_INFORMATION {
1230 LARGE_INTEGER AllocationSize;
1231 } FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION;
1233 typedef struct _FILE_END_OF_FILE_INFORMATION {
1234 LARGE_INTEGER EndOfFile;
1235 } FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;
1237 typedef struct _FILE_NETWORK_OPEN_INFORMATION {
1238 LARGE_INTEGER CreationTime;
1239 LARGE_INTEGER LastAccessTime;
1240 LARGE_INTEGER LastWriteTime;
1241 LARGE_INTEGER ChangeTime;
1242 LARGE_INTEGER AllocationSize;
1243 LARGE_INTEGER EndOfFile;
1244 ULONG FileAttributes;
1245 } FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;
1247 typedef struct _FILE_FULL_EA_INFORMATION {
1248 ULONG NextEntryOffset;
1249 UCHAR Flags;
1250 UCHAR EaNameLength;
1251 USHORT EaValueLength;
1252 CHAR EaName[1];
1253 } FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
1255 typedef struct _FILE_MODE_INFORMATION {
1256 ULONG Mode;
1257 } FILE_MODE_INFORMATION, *PFILE_MODE_INFORMATION;
1259 typedef struct _FILE_STREAM_INFORMATION
1261 ULONG NextEntryOffset;
1262 ULONG StreamNameLength;
1263 LARGE_INTEGER StreamSize;
1264 LARGE_INTEGER StreamAllocationSize;
1265 WCHAR StreamName[1];
1266 } FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
1268 typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION
1270 ULONG FileAttributes;
1271 ULONG ReparseTag;
1272 } FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION;
1274 typedef struct _FILE_MAILSLOT_QUERY_INFORMATION {
1275 ULONG MaximumMessageSize;
1276 ULONG MailslotQuota;
1277 ULONG NextMessageSize;
1278 ULONG MessagesAvailable;
1279 LARGE_INTEGER ReadTimeout;
1280 } FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION;
1282 typedef struct _FILE_MAILSLOT_SET_INFORMATION {
1283 LARGE_INTEGER ReadTimeout;
1284 } FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION;
1286 typedef struct _FILE_PIPE_INFORMATION {
1287 ULONG ReadMode;
1288 ULONG CompletionMode;
1289 } FILE_PIPE_INFORMATION, *PFILE_PIPE_INFORMATION;
1291 typedef struct _FILE_PIPE_LOCAL_INFORMATION {
1292 ULONG NamedPipeType;
1293 ULONG NamedPipeConfiguration;
1294 ULONG MaximumInstances;
1295 ULONG CurrentInstances;
1296 ULONG InboundQuota;
1297 ULONG ReadDataAvailable;
1298 ULONG OutboundQuota;
1299 ULONG WriteQuotaAvailable;
1300 ULONG NamedPipeState;
1301 ULONG NamedPipeEnd;
1302 } FILE_PIPE_LOCAL_INFORMATION, *PFILE_PIPE_LOCAL_INFORMATION;
1304 #define FILE_PIPE_DISCONNECTED_STATE 0x00000001
1305 #define FILE_PIPE_LISTENING_STATE 0x00000002
1306 #define FILE_PIPE_CONNECTED_STATE 0x00000003
1307 #define FILE_PIPE_CLOSING_STATE 0x00000004
1309 typedef struct _FILE_OBJECTID_BUFFER
1311 BYTE ObjectId[16];
1312 union
1314 struct
1316 BYTE BirthVolumeId[16];
1317 BYTE BirthObjectId[16];
1318 BYTE DomainId[16];
1319 } DUMMYSTRUCTNAME;
1320 BYTE ExtendedInfo[48];
1321 } DUMMYUNIONNAME;
1322 } FILE_OBJECTID_BUFFER, *PFILE_OBJECTID_BUFFER;
1324 typedef struct _FILE_OBJECTID_INFORMATION {
1325 LONGLONG FileReference;
1326 UCHAR ObjectId[16];
1327 union {
1328 struct {
1329 UCHAR BirthVolumeId[16];
1330 UCHAR BirthObjectId[16];
1331 UCHAR DomainId[16];
1332 } DUMMYSTRUCTNAME;
1333 UCHAR ExtendedInfo[48];
1334 } DUMMYUNIONNAME;
1335 } FILE_OBJECTID_INFORMATION, *PFILE_OBJECTID_INFORMATION;
1337 typedef struct _FILE_QUOTA_INFORMATION {
1338 ULONG NextEntryOffset;
1339 ULONG SidLength;
1340 LARGE_INTEGER ChangeTime;
1341 LARGE_INTEGER QuotaUsed;
1342 LARGE_INTEGER QuotaThreshold;
1343 LARGE_INTEGER QuotaLimit;
1344 SID Sid;
1345 } FILE_QUOTA_INFORMATION, *PFILE_QUOTA_INFORMATION;
1347 typedef struct _FILE_REPARSE_POINT_INFORMATION {
1348 LONGLONG FileReference;
1349 ULONG Tag;
1350 } FILE_REPARSE_POINT_INFORMATION, *PFILE_REPARSE_POINT_INFORMATION;
1352 typedef struct _FILE_ALL_INFORMATION {
1353 FILE_BASIC_INFORMATION BasicInformation;
1354 FILE_STANDARD_INFORMATION StandardInformation;
1355 FILE_INTERNAL_INFORMATION InternalInformation;
1356 FILE_EA_INFORMATION EaInformation;
1357 FILE_ACCESS_INFORMATION AccessInformation;
1358 FILE_POSITION_INFORMATION PositionInformation;
1359 FILE_MODE_INFORMATION ModeInformation;
1360 FILE_ALIGNMENT_INFORMATION AlignmentInformation;
1361 FILE_NAME_INFORMATION NameInformation;
1362 } FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION;
1364 typedef struct _FILE_IO_COMPLETION_NOTIFICATION_INFORMATION {
1365 ULONG Flags;
1366 } FILE_IO_COMPLETION_NOTIFICATION_INFORMATION, *PFILE_IO_COMPLETION_NOTIFICATION_INFORMATION;
1368 #define FILE_SKIP_COMPLETION_PORT_ON_SUCCESS 0x1
1369 #define FILE_SKIP_SET_EVENT_ON_HANDLE 0x2
1370 #define FILE_SKIP_SET_USER_EVENT_ON_FAST_IO 0x4
1372 typedef enum _FSINFOCLASS {
1373 FileFsVolumeInformation = 1,
1374 FileFsLabelInformation,
1375 FileFsSizeInformation,
1376 FileFsDeviceInformation,
1377 FileFsAttributeInformation,
1378 FileFsControlInformation,
1379 FileFsFullSizeInformation,
1380 FileFsObjectIdInformation,
1381 FileFsMaximumInformation
1382 } FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
1384 typedef enum _KEY_INFORMATION_CLASS {
1385 KeyBasicInformation,
1386 KeyNodeInformation,
1387 KeyFullInformation,
1388 KeyNameInformation,
1389 KeyCachedInformation,
1390 KeyFlagsInformation,
1391 KeyVirtualizationInformation,
1392 KeyHandleTagsInformation,
1393 MaxKeyInfoClass
1394 } KEY_INFORMATION_CLASS;
1396 typedef enum _KEY_VALUE_INFORMATION_CLASS {
1397 KeyValueBasicInformation,
1398 KeyValueFullInformation,
1399 KeyValuePartialInformation,
1400 KeyValueFullInformationAlign64,
1401 KeyValuePartialInformationAlign64
1402 } KEY_VALUE_INFORMATION_CLASS;
1404 typedef enum _OBJECT_INFORMATION_CLASS {
1405 ObjectBasicInformation,
1406 ObjectNameInformation,
1407 ObjectTypeInformation,
1408 ObjectTypesInformation,
1409 ObjectDataInformation
1410 } OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS;
1412 typedef enum _PROCESSINFOCLASS {
1413 ProcessBasicInformation = 0,
1414 ProcessQuotaLimits = 1,
1415 ProcessIoCounters = 2,
1416 ProcessVmCounters = 3,
1417 ProcessTimes = 4,
1418 ProcessBasePriority = 5,
1419 ProcessRaisePriority = 6,
1420 ProcessDebugPort = 7,
1421 ProcessExceptionPort = 8,
1422 ProcessAccessToken = 9,
1423 ProcessLdtInformation = 10,
1424 ProcessLdtSize = 11,
1425 ProcessDefaultHardErrorMode = 12,
1426 ProcessIoPortHandlers = 13,
1427 ProcessPooledUsageAndLimits = 14,
1428 ProcessWorkingSetWatch = 15,
1429 ProcessUserModeIOPL = 16,
1430 ProcessEnableAlignmentFaultFixup = 17,
1431 ProcessPriorityClass = 18,
1432 ProcessWx86Information = 19,
1433 ProcessHandleCount = 20,
1434 ProcessAffinityMask = 21,
1435 ProcessPriorityBoost = 22,
1436 ProcessDeviceMap = 23,
1437 ProcessSessionInformation = 24,
1438 ProcessForegroundInformation = 25,
1439 ProcessWow64Information = 26,
1440 ProcessImageFileName = 27,
1441 ProcessLUIDDeviceMapsEnabled = 28,
1442 ProcessBreakOnTermination = 29,
1443 ProcessDebugObjectHandle = 30,
1444 ProcessDebugFlags = 31,
1445 ProcessHandleTracing = 32,
1446 ProcessIoPriority = 33,
1447 ProcessExecuteFlags = 34,
1448 ProcessTlsInformation = 35,
1449 ProcessCookie = 36,
1450 ProcessImageInformation = 37,
1451 ProcessCycleTime = 38,
1452 ProcessPagePriority = 39,
1453 ProcessInstrumentationCallback = 40,
1454 ProcessThreadStackAllocation = 41,
1455 ProcessWorkingSetWatchEx = 42,
1456 ProcessImageFileNameWin32 = 43,
1457 MaxProcessInfoClass
1458 } PROCESSINFOCLASS, PROCESS_INFORMATION_CLASS;
1460 #define MEM_EXECUTE_OPTION_DISABLE 0x01
1461 #define MEM_EXECUTE_OPTION_ENABLE 0x02
1462 #define MEM_EXECUTE_OPTION_DISABLE_THUNK_EMULATION 0x04
1463 #define MEM_EXECUTE_OPTION_PERMANENT 0x08
1465 typedef enum _SECTION_INHERIT {
1466 ViewShare = 1,
1467 ViewUnmap = 2
1468 } SECTION_INHERIT;
1470 typedef enum _SYSTEM_INFORMATION_CLASS {
1471 SystemBasicInformation = 0,
1472 SystemCpuInformation = 1,
1473 SystemPerformanceInformation = 2,
1474 SystemTimeOfDayInformation = 3, /* was SystemTimeInformation */
1475 Unknown4,
1476 SystemProcessInformation = 5,
1477 Unknown6,
1478 Unknown7,
1479 SystemProcessorPerformanceInformation = 8,
1480 Unknown9,
1481 Unknown10,
1482 SystemModuleInformation = 11,
1483 Unknown12,
1484 Unknown13,
1485 Unknown14,
1486 Unknown15,
1487 SystemHandleInformation = 16,
1488 Unknown17,
1489 SystemPageFileInformation = 18,
1490 Unknown19,
1491 Unknown20,
1492 SystemCacheInformation = 21,
1493 Unknown22,
1494 SystemInterruptInformation = 23,
1495 SystemDpcBehaviourInformation = 24,
1496 SystemFullMemoryInformation = 25,
1497 SystemNotImplemented6 = 25,
1498 SystemLoadImage = 26,
1499 SystemUnloadImage = 27,
1500 SystemTimeAdjustmentInformation = 28,
1501 SystemTimeAdjustment = 28,
1502 SystemSummaryMemoryInformation = 29,
1503 SystemNotImplemented7 = 29,
1504 SystemNextEventIdInformation = 30,
1505 SystemNotImplemented8 = 30,
1506 SystemEventIdsInformation = 31,
1507 SystemCrashDumpInformation = 32,
1508 SystemExceptionInformation = 33,
1509 SystemCrashDumpStateInformation = 34,
1510 SystemKernelDebuggerInformation = 35,
1511 SystemContextSwitchInformation = 36,
1512 SystemRegistryQuotaInformation = 37,
1513 SystemCurrentTimeZoneInformation = 44,
1514 SystemTimeZoneInformation = 44,
1515 SystemLookasideInformation = 45,
1516 SystemSetTimeSlipEvent = 46,
1517 SystemCreateSession = 47,
1518 SystemDeleteSession = 48,
1519 SystemInvalidInfoClass4 = 49,
1520 SystemRangeStartInformation = 50,
1521 SystemVerifierInformation = 51,
1522 SystemAddVerifier = 52,
1523 SystemSessionProcessesInformation = 53,
1524 SystemLoadGdiDriverInSystemSpace = 54,
1525 SystemNumaProcessorMap = 55,
1526 SystemPrefetcherInformation = 56,
1527 SystemExtendedProcessInformation = 57,
1528 SystemRecommendedSharedDataAlignment = 58,
1529 SystemComPlusPackage = 59,
1530 SystemNumaAvailableMemory = 60,
1531 SystemProcessorPowerInformation = 61,
1532 SystemEmulationBasicInformation = 62,
1533 SystemEmulationProcessorInformation = 63,
1534 SystemExtendedHandleInformation = 64,
1535 SystemLostDelayedWriteInformation = 65,
1536 SystemBigPoolInformation = 66,
1537 SystemSessionPoolTagInformation = 67,
1538 SystemSessionMappedViewInformation = 68,
1539 SystemHotpatchInformation = 69,
1540 SystemObjectSecurityMode = 70,
1541 SystemWatchdogTimerHandler = 71,
1542 SystemWatchdogTimerInformation = 72,
1543 SystemLogicalProcessorInformation = 73,
1544 SystemWow64SharedInformation = 74,
1545 SystemRegisterFirmwareTableInformationHandler = 75,
1546 SystemFirmwareTableInformation = 76,
1547 SystemModuleInformationEx = 77,
1548 SystemVerifierTriageInformation = 78,
1549 SystemSuperfetchInformation = 79,
1550 SystemMemoryListInformation = 80,
1551 SystemFileCacheInformationEx = 81,
1552 SystemDynamicTimeZoneInformation = 102,
1553 SystemLogicalProcessorInformationEx = 107,
1554 SystemInformationClassMax
1555 } SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS;
1557 typedef enum _THREADINFOCLASS {
1558 ThreadBasicInformation = 0,
1559 ThreadTimes,
1560 ThreadPriority,
1561 ThreadBasePriority,
1562 ThreadAffinityMask,
1563 ThreadImpersonationToken,
1564 ThreadDescriptorTableEntry,
1565 ThreadEnableAlignmentFaultFixup,
1566 ThreadEventPair_Reusable,
1567 ThreadQuerySetWin32StartAddress,
1568 ThreadZeroTlsCell,
1569 ThreadPerformanceCount,
1570 ThreadAmILastThread,
1571 ThreadIdealProcessor,
1572 ThreadPriorityBoost,
1573 ThreadSetTlsArrayAddress,
1574 ThreadIsIoPending,
1575 ThreadHideFromDebugger,
1576 ThreadBreakOnTermination,
1577 ThreadSwitchLegacyState,
1578 ThreadIsTerminated,
1579 ThreadLastSystemCall,
1580 ThreadIoPriority,
1581 ThreadCycleTime,
1582 ThreadPagePriority,
1583 ThreadActualBasePriority,
1584 ThreadTebInformation,
1585 ThreadCSwitchMon,
1586 ThreadCSwitchPmu,
1587 ThreadWow64Context,
1588 ThreadGroupInformation,
1589 ThreadUmsInformation,
1590 ThreadCounterProfiling,
1591 ThreadIdealProcessorEx,
1592 ThreadSuspendCount = 35,
1593 ThreadDescription = 38,
1594 MaxThreadInfoClass
1595 } THREADINFOCLASS;
1597 typedef struct _THREAD_BASIC_INFORMATION
1599 NTSTATUS ExitStatus;
1600 PVOID TebBaseAddress;
1601 CLIENT_ID ClientId;
1602 ULONG_PTR AffinityMask;
1603 LONG Priority;
1604 LONG BasePriority;
1605 } THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION;
1607 typedef struct _THREAD_DESCRIPTOR_INFORMATION
1609 DWORD Selector;
1610 LDT_ENTRY Entry;
1611 } THREAD_DESCRIPTOR_INFORMATION, *PTHREAD_DESCRIPTOR_INFORMATION;
1613 typedef struct _THREAD_DESCRIPTION_INFORMATION
1615 UNICODE_STRING Description;
1616 } THREAD_DESCRIPTION_INFORMATION, *PTHREAD_DESCRIPTION_INFORMATION;
1618 typedef struct _KERNEL_USER_TIMES {
1619 LARGE_INTEGER CreateTime;
1620 LARGE_INTEGER ExitTime;
1621 LARGE_INTEGER KernelTime;
1622 LARGE_INTEGER UserTime;
1623 } KERNEL_USER_TIMES, *PKERNEL_USER_TIMES;
1625 typedef enum _WINSTATIONINFOCLASS {
1626 WinStationInformation = 8
1627 } WINSTATIONINFOCLASS;
1629 typedef enum _MEMORY_INFORMATION_CLASS {
1630 MemoryBasicInformation,
1631 MemoryWorkingSetList,
1632 MemorySectionName,
1633 MemoryBasicVlmInformation,
1634 MemoryWorkingSetExInformation
1635 } MEMORY_INFORMATION_CLASS;
1637 typedef struct _MEMORY_SECTION_NAME
1639 UNICODE_STRING SectionFileName;
1640 } MEMORY_SECTION_NAME, *PMEMORY_SECTION_NAME;
1642 typedef union _MEMORY_WORKING_SET_EX_BLOCK {
1643 ULONG_PTR Flags;
1644 struct {
1645 ULONG_PTR Valid : 1;
1646 ULONG_PTR ShareCount : 3;
1647 ULONG_PTR Win32Protection : 11;
1648 ULONG_PTR Shared : 1;
1649 ULONG_PTR Node : 6;
1650 ULONG_PTR Locked : 1;
1651 ULONG_PTR LargePage : 1;
1652 } DUMMYSTRUCTNAME;
1653 } MEMORY_WORKING_SET_EX_BLOCK, *PMEMORY_WORKING_SET_EX_BLOCK;
1655 typedef struct _MEMORY_WORKING_SET_EX_INFORMATION {
1656 PVOID VirtualAddress;
1657 MEMORY_WORKING_SET_EX_BLOCK VirtualAttributes;
1658 } MEMORY_WORKING_SET_EX_INFORMATION, *PMEMORY_WORKING_SET_EX_INFORMATION;
1660 typedef enum _MUTANT_INFORMATION_CLASS
1662 MutantBasicInformation
1663 } MUTANT_INFORMATION_CLASS, *PMUTANT_INFORMATION_CLASS;
1665 typedef struct _MUTANT_BASIC_INFORMATION {
1666 LONG CurrentCount;
1667 BOOLEAN OwnedByCaller;
1668 BOOLEAN AbandonedState;
1669 } MUTANT_BASIC_INFORMATION, *PMUTANT_BASIC_INFORMATION;
1671 typedef enum _TIMER_INFORMATION_CLASS
1673 TimerBasicInformation = 0
1674 } TIMER_INFORMATION_CLASS;
1676 typedef struct _TIMER_BASIC_INFORMATION
1678 LARGE_INTEGER RemainingTime;
1679 BOOLEAN TimerState;
1680 } TIMER_BASIC_INFORMATION, *PTIMER_BASIC_INFORMATION;
1683 /* return type of RtlDetermineDosPathNameType_U (FIXME: not the correct names) */
1684 typedef enum
1686 INVALID_PATH = 0,
1687 UNC_PATH, /* "//foo" */
1688 ABSOLUTE_DRIVE_PATH, /* "c:/foo" */
1689 RELATIVE_DRIVE_PATH, /* "c:foo" */
1690 ABSOLUTE_PATH, /* "/foo" */
1691 RELATIVE_PATH, /* "foo" */
1692 DEVICE_PATH, /* "//./foo" */
1693 UNC_DOT_PATH /* "//." */
1694 } DOS_PATHNAME_TYPE;
1697 /***********************************************************************
1698 * Types and data structures
1701 /* This is used by NtQuerySystemInformation */
1702 typedef struct _SYSTEM_THREAD_INFORMATION
1703 { /* win32/win64 */
1704 LARGE_INTEGER KernelTime; /* 00/00 */
1705 LARGE_INTEGER UserTime; /* 08/08 */
1706 LARGE_INTEGER CreateTime; /* 10/10 */
1707 DWORD dwTickCount; /* 18/18 */
1708 LPVOID StartAddress; /* 1c/20 */
1709 CLIENT_ID ClientId; /* 20/28 */
1710 DWORD dwCurrentPriority; /* 28/38 */
1711 DWORD dwBasePriority; /* 2c/3c */
1712 DWORD dwContextSwitches; /* 30/40 */
1713 DWORD dwThreadState; /* 34/44 */
1714 DWORD dwWaitReason; /* 38/48 */
1715 DWORD dwUnknown; /* 3c/4c */
1716 } SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION;
1718 typedef struct _IO_STATUS_BLOCK {
1719 union {
1720 NTSTATUS Status;
1721 PVOID Pointer;
1722 } DUMMYUNIONNAME;
1724 ULONG_PTR Information;
1725 } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
1727 typedef void (WINAPI * PIO_APC_ROUTINE)(PVOID,PIO_STATUS_BLOCK,ULONG);
1729 typedef struct _KEY_BASIC_INFORMATION {
1730 LARGE_INTEGER LastWriteTime;
1731 ULONG TitleIndex;
1732 ULONG NameLength;
1733 WCHAR Name[1];
1734 } KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
1736 typedef struct _KEY_NODE_INFORMATION
1738 LARGE_INTEGER LastWriteTime;
1739 ULONG TitleIndex;
1740 ULONG ClassOffset;
1741 ULONG ClassLength;
1742 ULONG NameLength;
1743 WCHAR Name[1];
1744 /* Class[1]; */
1745 } KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
1747 typedef struct _KEY_FULL_INFORMATION
1749 LARGE_INTEGER LastWriteTime;
1750 ULONG TitleIndex;
1751 ULONG ClassOffset;
1752 ULONG ClassLength;
1753 ULONG SubKeys;
1754 ULONG MaxNameLen;
1755 ULONG MaxClassLen;
1756 ULONG Values;
1757 ULONG MaxValueNameLen;
1758 ULONG MaxValueDataLen;
1759 WCHAR Class[1];
1760 } KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
1762 typedef struct _KEY_NAME_INFORMATION {
1763 ULONG NameLength;
1764 WCHAR Name[1];
1765 } KEY_NAME_INFORMATION, *PKEY_NAME_INFORMATION;
1767 typedef struct _KEY_CACHED_INFORMATION
1769 LARGE_INTEGER LastWriteTime;
1770 ULONG TitleIndex;
1771 ULONG SubKeys;
1772 ULONG MaxNameLen;
1773 ULONG Values;
1774 ULONG MaxValueNameLen;
1775 ULONG MaxValueDataLen;
1776 ULONG NameLength;
1777 } KEY_CACHED_INFORMATION, *PKEY_CACHED_INFORMATION;
1779 typedef struct _KEY_VALUE_ENTRY
1781 PUNICODE_STRING ValueName;
1782 ULONG DataLength;
1783 ULONG DataOffset;
1784 ULONG Type;
1785 } KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
1787 typedef struct _KEY_VALUE_BASIC_INFORMATION {
1788 ULONG TitleIndex;
1789 ULONG Type;
1790 ULONG NameLength;
1791 WCHAR Name[1];
1792 } KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
1794 typedef struct _KEY_VALUE_FULL_INFORMATION {
1795 ULONG TitleIndex;
1796 ULONG Type;
1797 ULONG DataOffset;
1798 ULONG DataLength;
1799 ULONG NameLength;
1800 WCHAR Name[1];
1801 } KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
1803 typedef struct _KEY_VALUE_PARTIAL_INFORMATION {
1804 ULONG TitleIndex;
1805 ULONG Type;
1806 ULONG DataLength;
1807 UCHAR Data[1];
1808 } KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
1810 #ifndef __OBJECT_ATTRIBUTES_DEFINED__
1811 #define __OBJECT_ATTRIBUTES_DEFINED__
1812 typedef struct _OBJECT_ATTRIBUTES {
1813 ULONG Length;
1814 HANDLE RootDirectory;
1815 PUNICODE_STRING ObjectName;
1816 ULONG Attributes;
1817 PVOID SecurityDescriptor; /* type SECURITY_DESCRIPTOR */
1818 PVOID SecurityQualityOfService; /* type SECURITY_QUALITY_OF_SERVICE */
1819 } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
1820 #endif
1822 typedef struct _OBJECT_DATA_INFORMATION {
1823 BOOLEAN InheritHandle;
1824 BOOLEAN ProtectFromClose;
1825 } OBJECT_DATA_INFORMATION, *POBJECT_DATA_INFORMATION;
1827 typedef struct _OBJECT_BASIC_INFORMATION {
1828 ULONG Attributes;
1829 ACCESS_MASK GrantedAccess;
1830 ULONG HandleCount;
1831 ULONG PointerCount;
1832 ULONG PagedPoolUsage;
1833 ULONG NonPagedPoolUsage;
1834 ULONG Reserved[3];
1835 ULONG NameInformationLength;
1836 ULONG TypeInformationLength;
1837 ULONG SecurityDescriptorLength;
1838 LARGE_INTEGER CreateTime;
1839 } OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION;
1841 typedef struct _OBJECT_NAME_INFORMATION {
1842 UNICODE_STRING Name;
1843 } OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
1845 typedef struct __OBJECT_TYPE_INFORMATION {
1846 UNICODE_STRING TypeName;
1847 ULONG TotalNumberOfObjects;
1848 ULONG TotalNumberOfHandles;
1849 ULONG TotalPagedPoolUsage;
1850 ULONG TotalNonPagedPoolUsage;
1851 ULONG TotalNamePoolUsage;
1852 ULONG TotalHandleTableUsage;
1853 ULONG HighWaterNumberOfObjects;
1854 ULONG HighWaterNumberOfHandles;
1855 ULONG HighWaterPagedPoolUsage;
1856 ULONG HighWaterNonPagedPoolUsage;
1857 ULONG HighWaterNamePoolUsage;
1858 ULONG HighWaterHandleTableUsage;
1859 ULONG InvalidAttributes;
1860 GENERIC_MAPPING GenericMapping;
1861 ULONG ValidAccessMask;
1862 BOOLEAN SecurityRequired;
1863 BOOLEAN MaintainHandleCount;
1864 UCHAR TypeIndex;
1865 CHAR ReservedByte;
1866 ULONG PoolType;
1867 ULONG DefaultPagedPoolCharge;
1868 ULONG DefaultNonPagedPoolCharge;
1869 } OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION;
1871 typedef struct _OBJECT_TYPES_INFORMATION
1873 ULONG NumberOfTypes;
1874 } OBJECT_TYPES_INFORMATION, *POBJECT_TYPES_INFORMATION;
1876 typedef struct _PROCESS_BASIC_INFORMATION {
1877 #ifdef __WINESRC__
1878 DWORD_PTR ExitStatus;
1879 PPEB PebBaseAddress;
1880 DWORD_PTR AffinityMask;
1881 DWORD_PTR BasePriority;
1882 ULONG_PTR UniqueProcessId;
1883 ULONG_PTR InheritedFromUniqueProcessId;
1884 #else
1885 PVOID Reserved1;
1886 PPEB PebBaseAddress;
1887 PVOID Reserved2[2];
1888 ULONG_PTR UniqueProcessId;
1889 PVOID Reserved3;
1890 #endif
1891 } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
1893 #define PROCESS_PRIOCLASS_IDLE 1
1894 #define PROCESS_PRIOCLASS_NORMAL 2
1895 #define PROCESS_PRIOCLASS_HIGH 3
1896 #define PROCESS_PRIOCLASS_REALTIME 4
1897 #define PROCESS_PRIOCLASS_BELOW_NORMAL 5
1898 #define PROCESS_PRIOCLASS_ABOVE_NORMAL 6
1900 typedef struct _PROCESS_PRIORITY_CLASS {
1901 BOOLEAN Foreground;
1902 UCHAR PriorityClass;
1903 } PROCESS_PRIORITY_CLASS, *PPROCESS_PRIORITY_CLASS;
1905 typedef struct _PROCESS_STACK_ALLOCATION_INFORMATION
1907 SIZE_T ReserveSize;
1908 SIZE_T ZeroBits;
1909 PVOID StackBase;
1910 } PROCESS_STACK_ALLOCATION_INFORMATION, *PPROCESS_STACK_ALLOCATION_INFORMATION;
1912 typedef struct _PROCESS_STACK_ALLOCATION_INFORMATION_EX
1914 ULONG PreferredNode;
1915 ULONG Reserved0;
1916 ULONG Reserved1;
1917 ULONG Reserved2;
1918 PROCESS_STACK_ALLOCATION_INFORMATION AllocInfo;
1919 } PROCESS_STACK_ALLOCATION_INFORMATION_EX, *PPROCESS_STACK_ALLOCATION_INFORMATION_EX;
1921 typedef struct _RTL_HEAP_DEFINITION {
1922 ULONG Length; /* = sizeof(RTL_HEAP_DEFINITION) */
1924 ULONG Unknown[11];
1925 } RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION;
1927 typedef struct _RTL_RWLOCK {
1928 RTL_CRITICAL_SECTION rtlCS;
1930 HANDLE hSharedReleaseSemaphore;
1931 UINT uSharedWaiters;
1933 HANDLE hExclusiveReleaseSemaphore;
1934 UINT uExclusiveWaiters;
1936 INT iNumberActive;
1937 HANDLE hOwningThreadId;
1938 DWORD dwTimeoutBoost;
1939 PVOID pDebugInfo;
1940 } RTL_RWLOCK, *LPRTL_RWLOCK;
1942 /* System Information Class 0x00 */
1944 typedef struct _SYSTEM_BASIC_INFORMATION {
1945 #ifdef __WINESRC__
1946 DWORD unknown;
1947 ULONG KeMaximumIncrement;
1948 ULONG PageSize;
1949 ULONG MmNumberOfPhysicalPages;
1950 ULONG MmLowestPhysicalPage;
1951 ULONG MmHighestPhysicalPage;
1952 ULONG_PTR AllocationGranularity;
1953 PVOID LowestUserAddress;
1954 PVOID HighestUserAddress;
1955 ULONG_PTR ActiveProcessorsAffinityMask;
1956 BYTE NumberOfProcessors;
1957 #else
1958 BYTE Reserved1[24];
1959 PVOID Reserved2[4];
1960 CCHAR NumberOfProcessors;
1961 #endif
1962 } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
1964 /* System Information Class 0x01 */
1966 typedef struct _SYSTEM_CPU_INFORMATION {
1967 WORD Architecture;
1968 WORD Level;
1969 WORD Revision; /* combination of CPU model and stepping */
1970 WORD Reserved; /* always zero */
1971 DWORD FeatureSet; /* see bit flags below */
1972 } SYSTEM_CPU_INFORMATION, *PSYSTEM_CPU_INFORMATION;
1974 /* definitions of bits in the Feature set for the x86 processors */
1975 #define CPU_FEATURE_VME 0x00000005 /* Virtual 86 Mode Extensions */
1976 #define CPU_FEATURE_TSC 0x00000002 /* Time Stamp Counter available */
1977 #define CPU_FEATURE_CMOV 0x00000008 /* Conditional Move instruction*/
1978 #define CPU_FEATURE_PGE 0x00000014 /* Page table Entry Global bit */
1979 #define CPU_FEATURE_PSE 0x00000024 /* Page Size Extension */
1980 #define CPU_FEATURE_MTRR 0x00000040 /* Memory Type Range Registers */
1981 #define CPU_FEATURE_CX8 0x00000080 /* Compare and eXchange 8 byte instr. */
1982 #define CPU_FEATURE_MMX 0x00000100 /* Multi Media eXtensions */
1983 #define CPU_FEATURE_X86 0x00000200 /* seems to be always ON, on the '86 */
1984 #define CPU_FEATURE_PAT 0x00000400 /* Page Attribute Table */
1985 #define CPU_FEATURE_FXSR 0x00000800 /* FXSAVE and FXSTORE instructions */
1986 #define CPU_FEATURE_SEP 0x00001000 /* SYSENTER and SYSEXIT instructions */
1987 #define CPU_FEATURE_SSE 0x00002000 /* SSE extensions (ext. MMX) */
1988 #define CPU_FEATURE_3DNOW 0x00004000 /* 3DNOW instructions available */
1989 #define CPU_FEATURE_SSE2 0x00010000 /* SSE2 extensions (XMMI64) */
1990 #define CPU_FEATURE_DS 0x00020000 /* Debug Store */
1991 #define CPU_FEATURE_HTT 0x00040000 /* Hyper Threading Technology */
1992 #define CPU_FEATURE_SSE3 0x00080000 /* SSE3 extensions */
1993 #define CPU_FEATURE_CX128 0x00100000 /* cmpxchg16b instruction */
1994 #define CPU_FEATURE_XSAVE 0x00800000 /* XSAVE instructions */
1995 #define CPU_FEATURE_2NDLEV 0x04000000 /* Second-level address translation */
1996 #define CPU_FEATURE_VIRT 0x08000000 /* Virtualization support */
1997 #define CPU_FEATURE_RDFS 0x10000000 /* RDFSBASE etc. instructions */
1998 #define CPU_FEATURE_NX 0x20000000 /* Data execution prevention */
2000 /* FIXME: following values are made up, actual flags are unknown */
2001 #define CPU_FEATURE_SSSE3 0x00008000 /* SSSE3 instructions */
2002 #define CPU_FEATURE_SSE41 0x01000000 /* SSE41 instructions */
2003 #define CPU_FEATURE_SSE42 0x02000000 /* SSE42 instructions */
2004 #define CPU_FEATURE_AVX 0x40000000 /* AVX instructions */
2005 #define CPU_FEATURE_AVX2 0x80000000 /* AVX2 instructions */
2006 #define CPU_FEATURE_PAE 0x00200000
2007 #define CPU_FEATURE_DAZ 0x00400000
2009 #define CPU_FEATURE_ARM_VFP_32 0x00000001
2010 #define CPU_FEATURE_ARM_NEON 0x00000002
2011 #define CPU_FEATURE_ARM_V8_CRC32 0x00000004
2012 #define CPU_FEATURE_ARM_V8_CRYPTO 0x00000008
2014 /* System Information Class 0x02 */
2016 /* Documented in "Windows NT/2000 Native API Reference" by Gary Nebbett. */
2017 typedef struct _SYSTEM_PERFORMANCE_INFORMATION {
2018 LARGE_INTEGER IdleTime;
2019 LARGE_INTEGER ReadTransferCount;
2020 LARGE_INTEGER WriteTransferCount;
2021 LARGE_INTEGER OtherTransferCount;
2022 ULONG ReadOperationCount;
2023 ULONG WriteOperationCount;
2024 ULONG OtherOperationCount;
2025 ULONG AvailablePages;
2026 ULONG TotalCommittedPages;
2027 ULONG TotalCommitLimit;
2028 ULONG PeakCommitment;
2029 ULONG PageFaults;
2030 ULONG WriteCopyFaults;
2031 ULONG TransitionFaults;
2032 ULONG Reserved1;
2033 ULONG DemandZeroFaults;
2034 ULONG PagesRead;
2035 ULONG PageReadIos;
2036 ULONG Reserved2[2];
2037 ULONG PagefilePagesWritten;
2038 ULONG PagefilePageWriteIos;
2039 ULONG MappedFilePagesWritten;
2040 ULONG MappedFilePageWriteIos;
2041 ULONG PagedPoolUsage;
2042 ULONG NonPagedPoolUsage;
2043 ULONG PagedPoolAllocs;
2044 ULONG PagedPoolFrees;
2045 ULONG NonPagedPoolAllocs;
2046 ULONG NonPagedPoolFrees;
2047 ULONG TotalFreeSystemPtes;
2048 ULONG SystemCodePage;
2049 ULONG TotalSystemDriverPages;
2050 ULONG TotalSystemCodePages;
2051 ULONG SmallNonPagedLookasideListAllocateHits;
2052 ULONG SmallPagedLookasideListAllocateHits;
2053 ULONG Reserved3;
2054 ULONG MmSystemCachePage;
2055 ULONG PagedPoolPage;
2056 ULONG SystemDriverPage;
2057 ULONG FastReadNoWait;
2058 ULONG FastReadWait;
2059 ULONG FastReadResourceMiss;
2060 ULONG FastReadNotPossible;
2061 ULONG FastMdlReadNoWait;
2062 ULONG FastMdlReadWait;
2063 ULONG FastMdlReadResourceMiss;
2064 ULONG FastMdlReadNotPossible;
2065 ULONG MapDataNoWait;
2066 ULONG MapDataWait;
2067 ULONG MapDataNoWaitMiss;
2068 ULONG MapDataWaitMiss;
2069 ULONG PinMappedDataCount;
2070 ULONG PinReadNoWait;
2071 ULONG PinReadWait;
2072 ULONG PinReadNoWaitMiss;
2073 ULONG PinReadWaitMiss;
2074 ULONG CopyReadNoWait;
2075 ULONG CopyReadWait;
2076 ULONG CopyReadNoWaitMiss;
2077 ULONG CopyReadWaitMiss;
2078 ULONG MdlReadNoWait;
2079 ULONG MdlReadWait;
2080 ULONG MdlReadNoWaitMiss;
2081 ULONG MdlReadWaitMiss;
2082 ULONG ReadAheadIos;
2083 ULONG LazyWriteIos;
2084 ULONG LazyWritePages;
2085 ULONG DataFlushes;
2086 ULONG DataPages;
2087 ULONG ContextSwitches;
2088 ULONG FirstLevelTbFills;
2089 ULONG SecondLevelTbFills;
2090 ULONG SystemCalls;
2091 } SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
2093 /* System Information Class 0x03 */
2095 typedef struct _SYSTEM_TIMEOFDAY_INFORMATION {
2096 #ifdef __WINESRC__
2097 LARGE_INTEGER BootTime;
2098 LARGE_INTEGER SystemTime;
2099 LARGE_INTEGER TimeZoneBias;
2100 ULONG TimeZoneId;
2101 ULONG Reserved;
2102 ULONGLONG BootTimeBias;
2103 ULONGLONG SleepTimeBias;
2104 #else
2105 BYTE Reserved1[48];
2106 #endif
2107 } SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION; /* was SYSTEM_TIME_INFORMATION */
2109 /* System Information Class 0x08 */
2111 typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION {
2112 LARGE_INTEGER IdleTime;
2113 LARGE_INTEGER KernelTime;
2114 LARGE_INTEGER UserTime;
2115 LARGE_INTEGER Reserved1[2];
2116 ULONG Reserved2;
2117 } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
2119 /* System Information Class 0x0b */
2121 typedef struct _SYSTEM_DRIVER_INFORMATION {
2122 PVOID pvAddress;
2123 DWORD dwUnknown1;
2124 DWORD dwUnknown2;
2125 DWORD dwEntryIndex;
2126 DWORD dwUnknown3;
2127 char szName[MAX_PATH + 1];
2128 } SYSTEM_DRIVER_INFORMATION, *PSYSTEM_DRIVER_INFORMATION;
2130 /* System Information Class 0x10 */
2132 typedef struct _SYSTEM_HANDLE_ENTRY {
2133 ULONG OwnerPid;
2134 BYTE ObjectType;
2135 BYTE HandleFlags;
2136 USHORT HandleValue;
2137 PVOID ObjectPointer;
2138 ULONG AccessMask;
2139 } SYSTEM_HANDLE_ENTRY, *PSYSTEM_HANDLE_ENTRY;
2141 typedef struct _SYSTEM_HANDLE_INFORMATION {
2142 ULONG Count;
2143 SYSTEM_HANDLE_ENTRY Handle[1];
2144 } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
2146 typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX
2148 void *Object;
2149 ULONG_PTR UniqueProcessId;
2150 ULONG_PTR HandleValue;
2151 ULONG GrantedAccess;
2152 USHORT CreatorBackTraceIndex;
2153 USHORT ObjectTypeIndex;
2154 ULONG HandleAttributes;
2155 ULONG Reserved;
2156 } SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX;
2158 typedef struct _SYSTEM_HANDLE_INFORMATION_EX
2160 ULONG_PTR NumberOfHandles;
2161 ULONG_PTR Reserved;
2162 SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX Handles[1];
2163 } SYSTEM_HANDLE_INFORMATION_EX;
2165 /* System Information Class 0x15 */
2167 typedef struct _SYSTEM_CACHE_INFORMATION {
2168 ULONG CurrentSize;
2169 ULONG PeakSize;
2170 ULONG PageFaultCount;
2171 ULONG MinimumWorkingSet;
2172 ULONG MaximumWorkingSet;
2173 ULONG unused[4];
2174 #ifdef _WIN64
2175 ULONG unknown64[7];
2176 #endif
2177 } SYSTEM_CACHE_INFORMATION, *PSYSTEM_CACHE_INFORMATION;
2179 /* System Information Class 0x17 */
2181 typedef struct _SYSTEM_INTERRUPT_INFORMATION {
2182 BYTE Reserved1[24];
2183 } SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION;
2185 typedef struct _SYSTEM_CONFIGURATION_INFO {
2186 union {
2187 ULONG OemId;
2188 struct {
2189 WORD ProcessorArchitecture;
2190 WORD Reserved;
2191 } tag1;
2192 } tag2;
2193 ULONG PageSize;
2194 PVOID MinimumApplicationAddress;
2195 PVOID MaximumApplicationAddress;
2196 ULONG ActiveProcessorMask;
2197 ULONG NumberOfProcessors;
2198 ULONG ProcessorType;
2199 ULONG AllocationGranularity;
2200 WORD ProcessorLevel;
2201 WORD ProcessorRevision;
2202 } SYSTEM_CONFIGURATION_INFO, *PSYSTEM_CONFIGURATION_INFO;
2204 typedef struct _SYSTEM_EXCEPTION_INFORMATION {
2205 BYTE Reserved1[16];
2206 } SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION;
2208 typedef struct _SYSTEM_LOOKASIDE_INFORMATION {
2209 BYTE Reserved1[32];
2210 } SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION;
2212 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION {
2213 BOOLEAN DebuggerEnabled;
2214 BOOLEAN DebuggerNotPresent;
2215 } SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION;
2217 typedef struct _VM_COUNTERS
2219 SIZE_T PeakVirtualSize;
2220 SIZE_T VirtualSize;
2221 ULONG PageFaultCount;
2222 SIZE_T PeakWorkingSetSize;
2223 SIZE_T WorkingSetSize;
2224 SIZE_T QuotaPeakPagedPoolUsage;
2225 SIZE_T QuotaPagedPoolUsage;
2226 SIZE_T QuotaPeakNonPagedPoolUsage;
2227 SIZE_T QuotaNonPagedPoolUsage;
2228 SIZE_T PagefileUsage;
2229 SIZE_T PeakPagefileUsage;
2230 } VM_COUNTERS, *PVM_COUNTERS;
2232 typedef struct _VM_COUNTERS_EX
2234 SIZE_T PeakVirtualSize;
2235 SIZE_T VirtualSize;
2236 ULONG PageFaultCount;
2237 SIZE_T PeakWorkingSetSize;
2238 SIZE_T WorkingSetSize;
2239 SIZE_T QuotaPeakPagedPoolUsage;
2240 SIZE_T QuotaPagedPoolUsage;
2241 SIZE_T QuotaPeakNonPagedPoolUsage;
2242 SIZE_T QuotaNonPagedPoolUsage;
2243 SIZE_T PagefileUsage;
2244 SIZE_T PeakPagefileUsage;
2245 SIZE_T PrivateUsage;
2246 } VM_COUNTERS_EX, *PVM_COUNTERS_EX;
2248 typedef struct _SYSTEM_PROCESS_INFORMATION {
2249 #ifdef __WINESRC__ /* win32/win64 */
2250 ULONG NextEntryOffset; /* 00/00 */
2251 DWORD dwThreadCount; /* 04/04 */
2252 DWORD dwUnknown1[6]; /* 08/08 */
2253 LARGE_INTEGER CreationTime; /* 20/20 */
2254 LARGE_INTEGER UserTime; /* 28/28 */
2255 LARGE_INTEGER KernelTime; /* 30/30 */
2256 UNICODE_STRING ProcessName; /* 38/38 */
2257 DWORD dwBasePriority; /* 40/48 */
2258 HANDLE UniqueProcessId; /* 44/50 */
2259 HANDLE ParentProcessId; /* 48/58 */
2260 ULONG HandleCount; /* 4c/60 */
2261 ULONG SessionId; /* 50/64 */
2262 DWORD dwUnknown4; /* 54/68 */
2263 VM_COUNTERS_EX vmCounters; /* 58/70 */
2264 IO_COUNTERS ioCounters; /* 88/d0 */
2265 SYSTEM_THREAD_INFORMATION ti[1]; /* b8/100 */
2266 #else
2267 ULONG NextEntryOffset; /* 00/00 */
2268 BYTE Reserved1[52]; /* 04/04 */
2269 PVOID Reserved2[3]; /* 38/38 */
2270 HANDLE UniqueProcessId; /* 44/50 */
2271 PVOID Reserved3; /* 48/58 */
2272 ULONG HandleCount; /* 4c/60 */
2273 BYTE Reserved4[4]; /* 50/64 */
2274 PVOID Reserved5[11]; /* 54/68 */
2275 SIZE_T PeakPagefileUsage; /* 80/c0 */
2276 SIZE_T PrivatePageCount; /* 84/c8 */
2277 LARGE_INTEGER Reserved6[6]; /* 88/d0 */
2278 #endif
2279 } SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
2281 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION {
2282 ULONG RegistryQuotaAllowed;
2283 ULONG RegistryQuotaUsed;
2284 PVOID Reserved1;
2285 } SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION;
2287 typedef struct _SYSTEM_TIME_ADJUSTMENT_QUERY {
2288 ULONG TimeAdjustment;
2289 ULONG TimeIncrement;
2290 BOOLEAN TimeAdjustmentDisabled;
2291 } SYSTEM_TIME_ADJUSTMENT_QUERY, *PSYSTEM_TIME_ADJUSTMENT_QUERY;
2293 typedef struct _SYSTEM_TIME_ADJUSTMENT {
2294 ULONG TimeAdjustment;
2295 BOOLEAN TimeAdjustmentDisabled;
2296 } SYSTEM_TIME_ADJUSTMENT, *PSYSTEM_TIME_ADJUSTMENT;
2298 typedef enum _SYSTEM_FIRMWARE_TABLE_ACTION
2300 SystemFirmwareTable_Enumerate = 0,
2301 SystemFirmwareTable_Get = 1
2302 } SYSTEM_FIRMWARE_TABLE_ACTION, *PSYSTEM_FIRMWARE_TABLE_ACTION;
2304 /* System Information Class 0x4C */
2306 typedef struct _SYSTEM_FIRMWARE_TABLE_INFORMATION
2308 ULONG ProviderSignature;
2309 SYSTEM_FIRMWARE_TABLE_ACTION Action;
2310 ULONG TableID;
2311 ULONG TableBufferLength;
2312 UCHAR TableBuffer[1];
2313 } SYSTEM_FIRMWARE_TABLE_INFORMATION, *PSYSTEM_FIRMWARE_TABLE_INFORMATION;
2315 typedef struct _TIME_FIELDS
2316 { CSHORT Year;
2317 CSHORT Month;
2318 CSHORT Day;
2319 CSHORT Hour;
2320 CSHORT Minute;
2321 CSHORT Second;
2322 CSHORT Milliseconds;
2323 CSHORT Weekday;
2324 } TIME_FIELDS, *PTIME_FIELDS;
2326 typedef struct _WINSTATIONINFORMATIONW {
2327 BYTE Reserved2[70];
2328 ULONG LogonId;
2329 BYTE Reserved3[1140];
2330 } WINSTATIONINFORMATIONW, *PWINSTATIONINFORMATIONW;
2332 typedef BOOLEAN (WINAPI * PWINSTATIONQUERYINFORMATIONW)(HANDLE,ULONG,WINSTATIONINFOCLASS,PVOID,ULONG,PULONG);
2334 typedef struct _LDR_RESOURCE_INFO
2336 ULONG_PTR Type;
2337 ULONG_PTR Name;
2338 ULONG Language;
2339 } LDR_RESOURCE_INFO, *PLDR_RESOURCE_INFO;
2342 /* debug buffer definitions */
2344 typedef struct _DEBUG_BUFFER {
2345 HANDLE SectionHandle;
2346 PVOID SectionBase;
2347 PVOID RemoteSectionBase;
2348 ULONG SectionBaseDelta;
2349 HANDLE EventPairHandle;
2350 ULONG Unknown[2];
2351 HANDLE RemoteThreadHandle;
2352 ULONG InfoClassMask;
2353 ULONG SizeOfInfo;
2354 ULONG AllocatedSize;
2355 ULONG SectionSize;
2356 PVOID ModuleInformation;
2357 PVOID BackTraceInformation;
2358 PVOID HeapInformation;
2359 PVOID LockInformation;
2360 PVOID Reserved[8];
2361 } DEBUG_BUFFER, *PDEBUG_BUFFER;
2363 #define PDI_MODULES 0x01
2364 #define PDI_BACKTRACE 0x02
2365 #define PDI_HEAPS 0x04
2366 #define PDI_HEAP_TAGS 0x08
2367 #define PDI_HEAP_BLOCKS 0x10
2368 #define PDI_LOCKS 0x20
2370 typedef struct _DEBUG_MODULE_INFORMATION {
2371 ULONG Reserved[2];
2372 ULONG Base;
2373 ULONG Size;
2374 ULONG Flags;
2375 USHORT Index;
2376 USHORT Unknown;
2377 USHORT LoadCount;
2378 USHORT ModuleNameOffset;
2379 CHAR ImageName[256];
2380 } DEBUG_MODULE_INFORMATION, *PDEBUG_MODULE_INFORMATION;
2382 typedef struct _DEBUG_HEAP_INFORMATION {
2383 ULONG Base;
2384 ULONG Flags;
2385 USHORT Granularity;
2386 USHORT Unknown;
2387 ULONG Allocated;
2388 ULONG Committed;
2389 ULONG TagCount;
2390 ULONG BlockCount;
2391 ULONG Reserved[7];
2392 PVOID Tags;
2393 PVOID Blocks;
2394 } DEBUG_HEAP_INFORMATION, *PDEBUG_HEAP_INFORMATION;
2396 typedef struct _DEBUG_LOCK_INFORMATION {
2397 PVOID Address;
2398 USHORT Type;
2399 USHORT CreatorBackTraceIndex;
2400 ULONG OwnerThreadId;
2401 ULONG ActiveCount;
2402 ULONG ContentionCount;
2403 ULONG EntryCount;
2404 ULONG RecursionCount;
2405 ULONG NumberOfSharedWaiters;
2406 ULONG NumberOfExclusiveWaiters;
2407 } DEBUG_LOCK_INFORMATION, *PDEBUG_LOCK_INFORMATION;
2409 typedef struct _PORT_MESSAGE_HEADER {
2410 USHORT DataSize;
2411 USHORT MessageSize;
2412 USHORT MessageType;
2413 USHORT VirtualRangesOffset;
2414 CLIENT_ID ClientId;
2415 ULONG MessageId;
2416 ULONG SectionSize;
2417 } PORT_MESSAGE_HEADER, *PPORT_MESSAGE_HEADER, PORT_MESSAGE, *PPORT_MESSAGE;
2419 typedef unsigned short RTL_ATOM, *PRTL_ATOM;
2421 typedef enum _ATOM_INFORMATION_CLASS {
2422 AtomBasicInformation = 0,
2423 AtomTableInformation = 1,
2424 } ATOM_INFORMATION_CLASS;
2426 typedef struct _ATOM_BASIC_INFORMATION {
2427 USHORT ReferenceCount;
2428 USHORT Pinned;
2429 USHORT NameLength;
2430 WCHAR Name[1];
2431 } ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION;
2433 /* FIXME: names probably not correct */
2434 typedef struct _RTL_HANDLE
2436 struct _RTL_HANDLE * Next;
2437 } RTL_HANDLE;
2439 /* FIXME: names probably not correct */
2440 typedef struct _RTL_HANDLE_TABLE
2442 ULONG MaxHandleCount; /* 0x00 */
2443 ULONG HandleSize; /* 0x04 */
2444 ULONG Unused[2]; /* 0x08-0x0c */
2445 PVOID NextFree; /* 0x10 */
2446 PVOID FirstHandle; /* 0x14 */
2447 PVOID ReservedMemory; /* 0x18 */
2448 PVOID MaxHandle; /* 0x1c */
2449 } RTL_HANDLE_TABLE;
2451 typedef struct _RTL_ATOM_TABLE_ENTRY
2453 struct _RTL_ATOM_TABLE_ENTRY *HashLink;
2454 WORD HandleIndex;
2455 WORD Atom;
2456 WORD ReferenceCount;
2457 UCHAR Flags;
2458 UCHAR NameLength;
2459 WCHAR Name[1];
2460 } RTL_ATOM_TABLE_ENTRY, *PRTL_ATOM_TABLE_ENTRY;
2462 typedef struct _RTL_ATOM_TABLE
2464 ULONG Signature;
2465 RTL_CRITICAL_SECTION CriticalSection;
2466 RTL_HANDLE_TABLE HandleTable;
2467 ULONG NumberOfBuckets;
2468 RTL_ATOM_TABLE_ENTRY *Buckets[1];
2469 } *RTL_ATOM_TABLE, **PRTL_ATOM_TABLE;
2471 /***********************************************************************
2472 * Defines
2475 /* flags for NtCreateFile and NtOpenFile */
2476 #define FILE_DIRECTORY_FILE 0x00000001
2477 #define FILE_WRITE_THROUGH 0x00000002
2478 #define FILE_SEQUENTIAL_ONLY 0x00000004
2479 #define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
2480 #define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
2481 #define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
2482 #define FILE_NON_DIRECTORY_FILE 0x00000040
2483 #define FILE_CREATE_TREE_CONNECTION 0x00000080
2484 #define FILE_COMPLETE_IF_OPLOCKED 0x00000100
2485 #define FILE_NO_EA_KNOWLEDGE 0x00000200
2486 #define FILE_OPEN_FOR_RECOVERY 0x00000400
2487 #define FILE_RANDOM_ACCESS 0x00000800
2488 #define FILE_DELETE_ON_CLOSE 0x00001000
2489 #define FILE_OPEN_BY_FILE_ID 0x00002000
2490 #define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
2491 #define FILE_NO_COMPRESSION 0x00008000
2492 #define FILE_RESERVE_OPFILTER 0x00100000
2493 #define FILE_OPEN_REPARSE_POINT 0x00200000
2494 #define FILE_OPEN_OFFLINE_FILE 0x00400000
2495 #define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000
2497 #define FILE_ATTRIBUTE_VALID_FLAGS 0x00007fb7
2498 #define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7
2500 /* status for NtCreateFile or NtOpenFile */
2501 #define FILE_SUPERSEDED 0
2502 #define FILE_OPENED 1
2503 #define FILE_CREATED 2
2504 #define FILE_OVERWRITTEN 3
2505 #define FILE_EXISTS 4
2506 #define FILE_DOES_NOT_EXIST 5
2508 /* disposition for NtCreateFile */
2509 #define FILE_SUPERSEDE 0
2510 #define FILE_OPEN 1
2511 #define FILE_CREATE 2
2512 #define FILE_OPEN_IF 3
2513 #define FILE_OVERWRITE 4
2514 #define FILE_OVERWRITE_IF 5
2515 #define FILE_MAXIMUM_DISPOSITION 5
2517 /* Characteristics of a File System */
2518 #define FILE_REMOVABLE_MEDIA 0x00000001
2519 #define FILE_READ_ONLY_DEVICE 0x00000002
2520 #define FILE_FLOPPY_DISKETTE 0x00000004
2521 #define FILE_WRITE_ONE_MEDIA 0x00000008
2522 #define FILE_REMOTE_DEVICE 0x00000010
2523 #define FILE_DEVICE_IS_MOUNTED 0x00000020
2524 #define FILE_VIRTUAL_VOLUME 0x00000040
2525 #define FILE_AUTOGENERATED_DEVICE_NAME 0x00000080
2526 #define FILE_DEVICE_SECURE_OPEN 0x00000100
2527 #define FILE_CHARACTERISTIC_PNP_DEVICE 0x00000800
2528 #define FILE_CHARACTERISTIC_TS_DEVICE 0x00001000
2529 #define FILE_CHARACTERISTIC_WEBDAV_DEVICE 0x00002000
2530 #define FILE_CHARACTERISTIC_CSV 0x00010000
2531 #define FILE_DEVICE_ALLOW_APPCONTAINER_TRAVERSAL 0x00020000
2532 #define FILE_PORTABLE_DEVICE 0x00040000
2534 /* options for NtCreateNamedPipeFile */
2535 #define FILE_PIPE_INBOUND 0x00000000
2536 #define FILE_PIPE_OUTBOUND 0x00000001
2537 #define FILE_PIPE_FULL_DUPLEX 0x00000002
2539 /* options for pipe's type */
2540 #define FILE_PIPE_TYPE_MESSAGE 0x00000001
2541 #define FILE_PIPE_TYPE_BYTE 0x00000000
2542 /* options for pipe's message mode */
2543 #define FILE_PIPE_MESSAGE_MODE 0x00000001
2544 #define FILE_PIPE_BYTE_STREAM_MODE 0x00000000
2545 /* options for pipe's blocking mode */
2546 #define FILE_PIPE_COMPLETE_OPERATION 0x00000001
2547 #define FILE_PIPE_QUEUE_OPERATION 0x00000000
2548 /* and client / server end */
2549 #define FILE_PIPE_SERVER_END 0x00000001
2550 #define FILE_PIPE_CLIENT_END 0x00000000
2552 #define INTERNAL_TS_ACTIVE_CONSOLE_ID ( *((volatile ULONG*)(0x7ffe02d8)) )
2554 #define LOGONID_CURRENT ((ULONG)-1)
2556 #define OBJ_PROTECT_CLOSE 0x00000001
2557 #define OBJ_INHERIT 0x00000002
2558 #define OBJ_PERMANENT 0x00000010
2559 #define OBJ_EXCLUSIVE 0x00000020
2560 #define OBJ_CASE_INSENSITIVE 0x00000040
2561 #define OBJ_OPENIF 0x00000080
2562 #define OBJ_OPENLINK 0x00000100
2563 #define OBJ_KERNEL_HANDLE 0x00000200
2564 #define OBJ_VALID_ATTRIBUTES 0x000003F2
2566 #define SERVERNAME_CURRENT ((HANDLE)NULL)
2568 typedef void (CALLBACK *PNTAPCFUNC)(ULONG_PTR,ULONG_PTR,ULONG_PTR); /* FIXME: not the right name */
2569 typedef void (CALLBACK *PRTL_THREAD_START_ROUTINE)(LPVOID); /* FIXME: not the right name */
2570 typedef DWORD (CALLBACK *PRTL_WORK_ITEM_ROUTINE)(LPVOID); /* FIXME: not the right name */
2571 typedef void (NTAPI *RTL_WAITORTIMERCALLBACKFUNC)(PVOID,BOOLEAN); /* FIXME: not the right name */
2574 /* DbgPrintEx default levels */
2575 #define DPFLTR_ERROR_LEVEL 0
2576 #define DPFLTR_WARNING_LEVEL 1
2577 #define DPFLTR_TRACE_LEVEL 2
2578 #define DPFLTR_INFO_LEVEL 3
2579 #define DPFLTR_MASK 0x8000000
2581 /* Well-known LUID values */
2582 #define SE_MIN_WELL_KNOWN_PRIVILEGE 2
2583 #define SE_CREATE_TOKEN_PRIVILEGE 2
2584 #define SE_ASSIGNPRIMARYTOKEN_PRIVILEGE 3
2585 #define SE_LOCK_MEMORY_PRIVILEGE 4
2586 #define SE_INCREASE_QUOTA_PRIVILEGE 5
2587 #define SE_UNSOLICITED_INPUT_PRIVILEGE 6 /* obsolete */
2588 #define SE_MACHINE_ACCOUNT_PRIVILEGE 6
2589 #define SE_TCB_PRIVILEGE 7
2590 #define SE_SECURITY_PRIVILEGE 8
2591 #define SE_TAKE_OWNERSHIP_PRIVILEGE 9
2592 #define SE_LOAD_DRIVER_PRIVILEGE 10
2593 #define SE_SYSTEM_PROFILE_PRIVILEGE 11
2594 #define SE_SYSTEMTIME_PRIVILEGE 12
2595 #define SE_PROF_SINGLE_PROCESS_PRIVILEGE 13
2596 #define SE_INC_BASE_PRIORITY_PRIVILEGE 14
2597 #define SE_CREATE_PAGEFILE_PRIVILEGE 15
2598 #define SE_CREATE_PERMANENT_PRIVILEGE 16
2599 #define SE_BACKUP_PRIVILEGE 17
2600 #define SE_RESTORE_PRIVILEGE 18
2601 #define SE_SHUTDOWN_PRIVILEGE 19
2602 #define SE_DEBUG_PRIVILEGE 20
2603 #define SE_AUDIT_PRIVILEGE 21
2604 #define SE_SYSTEM_ENVIRONMENT_PRIVILEGE 22
2605 #define SE_CHANGE_NOTIFY_PRIVILEGE 23
2606 #define SE_REMOTE_SHUTDOWN_PRIVILEGE 24
2607 #define SE_UNDOCK_PRIVILEGE 25
2608 #define SE_SYNC_AGENT_PRIVILEGE 26
2609 #define SE_ENABLE_DELEGATION_PRIVILEGE 27
2610 #define SE_MANAGE_VOLUME_PRIVILEGE 28
2611 #define SE_IMPERSONATE_PRIVILEGE 29
2612 #define SE_CREATE_GLOBAL_PRIVILEGE 30
2613 #define SE_MAX_WELL_KNOWN_PRIVILEGE SE_CREATE_GLOBAL_PRIVILEGE
2615 /* NtGlobalFlag bits */
2616 #define FLG_STOP_ON_EXCEPTION 0x00000001
2617 #define FLG_SHOW_LDR_SNAPS 0x00000002
2618 #define FLG_DEBUG_INITIAL_COMMAND 0x00000004
2619 #define FLG_STOP_ON_HUNG_GUI 0x00000008
2620 #define FLG_HEAP_ENABLE_TAIL_CHECK 0x00000010
2621 #define FLG_HEAP_ENABLE_FREE_CHECK 0x00000020
2622 #define FLG_HEAP_VALIDATE_PARAMETERS 0x00000040
2623 #define FLG_HEAP_VALIDATE_ALL 0x00000080
2624 #define FLG_APPLICATION_VERIFIER 0x00000100
2625 #define FLG_POOL_ENABLE_TAGGING 0x00000400
2626 #define FLG_HEAP_ENABLE_TAGGING 0x00000800
2627 #define FLG_USER_STACK_TRACE_DB 0x00001000
2628 #define FLG_KERNEL_STACK_TRACE_DB 0x00002000
2629 #define FLG_MAINTAIN_OBJECT_TYPELIST 0x00004000
2630 #define FLG_HEAP_ENABLE_TAG_BY_DLL 0x00008000
2631 #define FLG_DISABLE_STACK_EXTENSION 0x00010000
2632 #define FLG_ENABLE_CSRDEBUG 0x00020000
2633 #define FLG_ENABLE_KDEBUG_SYMBOL_LOAD 0x00040000
2634 #define FLG_DISABLE_PAGE_KERNEL_STACKS 0x00080000
2635 #define FLG_ENABLE_SYSTEM_CRIT_BREAKS 0x00100000
2636 #define FLG_HEAP_DISABLE_COALESCING 0x00200000
2637 #define FLG_ENABLE_CLOSE_EXCEPTIONS 0x00400000
2638 #define FLG_ENABLE_EXCEPTION_LOGGING 0x00800000
2639 #define FLG_ENABLE_HANDLE_TYPE_TAGGING 0x01000000
2640 #define FLG_HEAP_PAGE_ALLOCS 0x02000000
2641 #define FLG_DEBUG_INITIAL_COMMAND_EX 0x04000000
2642 #define FLG_DISABLE_DBGPRINT 0x08000000
2643 #define FLG_CRITSEC_EVENT_CREATION 0x10000000
2644 #define FLG_LDR_TOP_DOWN 0x20000000
2645 #define FLG_ENABLE_HANDLE_EXCEPTIONS 0x40000000
2646 #define FLG_DISABLE_PROTDLLS 0x80000000
2648 /* Rtl*Registry* functions structs and defines */
2649 #define RTL_REGISTRY_ABSOLUTE 0
2650 #define RTL_REGISTRY_SERVICES 1
2651 #define RTL_REGISTRY_CONTROL 2
2652 #define RTL_REGISTRY_WINDOWS_NT 3
2653 #define RTL_REGISTRY_DEVICEMAP 4
2654 #define RTL_REGISTRY_USER 5
2656 #define RTL_REGISTRY_HANDLE 0x40000000
2657 #define RTL_REGISTRY_OPTIONAL 0x80000000
2659 #define RTL_QUERY_REGISTRY_SUBKEY 0x00000001
2660 #define RTL_QUERY_REGISTRY_TOPKEY 0x00000002
2661 #define RTL_QUERY_REGISTRY_REQUIRED 0x00000004
2662 #define RTL_QUERY_REGISTRY_NOVALUE 0x00000008
2663 #define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010
2664 #define RTL_QUERY_REGISTRY_DIRECT 0x00000020
2665 #define RTL_QUERY_REGISTRY_DELETE 0x00000040
2666 #define RTL_QUERY_REGISTRY_TYPECHECK 0x00000100
2668 #define RTL_QUERY_REGISTRY_TYPECHECK_SHIFT 24
2670 typedef NTSTATUS (WINAPI *PRTL_QUERY_REGISTRY_ROUTINE)( PCWSTR ValueName,
2671 ULONG ValueType,
2672 PVOID ValueData,
2673 ULONG ValueLength,
2674 PVOID Context,
2675 PVOID EntryContext);
2677 typedef struct _RTL_QUERY_REGISTRY_TABLE
2679 PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;
2680 ULONG Flags;
2681 PWSTR Name;
2682 PVOID EntryContext;
2683 ULONG DefaultType;
2684 PVOID DefaultData;
2685 ULONG DefaultLength;
2686 } RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
2688 typedef struct _KEY_MULTIPLE_VALUE_INFORMATION
2690 PUNICODE_STRING ValueName;
2691 ULONG DataLength;
2692 ULONG DataOffset;
2693 ULONG Type;
2694 } KEY_MULTIPLE_VALUE_INFORMATION, *PKEY_MULTIPLE_VALUE_INFORMATION;
2696 typedef VOID (CALLBACK *PRTL_OVERLAPPED_COMPLETION_ROUTINE)(DWORD,DWORD,LPVOID);
2698 typedef VOID (CALLBACK *PTIMER_APC_ROUTINE) ( PVOID, ULONG, LONG );
2700 typedef enum _EVENT_INFORMATION_CLASS {
2701 EventBasicInformation
2702 } EVENT_INFORMATION_CLASS, *PEVENT_INFORMATION_CLASS;
2704 typedef struct _EVENT_BASIC_INFORMATION {
2705 EVENT_TYPE EventType;
2706 LONG EventState;
2707 } EVENT_BASIC_INFORMATION, *PEVENT_BASIC_INFORMATION;
2709 typedef enum _SEMAPHORE_INFORMATION_CLASS {
2710 SemaphoreBasicInformation
2711 } SEMAPHORE_INFORMATION_CLASS, *PSEMAPHORE_INFORMATION_CLASS;
2713 typedef struct _SEMAPHORE_BASIC_INFORMATION {
2714 ULONG CurrentCount;
2715 ULONG MaximumCount;
2716 } SEMAPHORE_BASIC_INFORMATION, *PSEMAPHORE_BASIC_INFORMATION;
2718 typedef enum _SECTION_INFORMATION_CLASS
2720 SectionBasicInformation,
2721 SectionImageInformation,
2722 SectionRelocationInformation,
2723 SectionOriginalBaseInformation,
2724 SectionInternalImageInformation
2725 } SECTION_INFORMATION_CLASS;
2727 typedef struct _SECTION_BASIC_INFORMATION {
2728 PVOID BaseAddress;
2729 ULONG Attributes;
2730 LARGE_INTEGER Size;
2731 } SECTION_BASIC_INFORMATION, *PSECTION_BASIC_INFORMATION;
2733 typedef struct _SECTION_IMAGE_INFORMATION {
2734 PVOID TransferAddress;
2735 ULONG ZeroBits;
2736 SIZE_T MaximumStackSize;
2737 SIZE_T CommittedStackSize;
2738 ULONG SubSystemType;
2739 USHORT MinorSubsystemVersion;
2740 USHORT MajorSubsystemVersion;
2741 USHORT MajorOperatingSystemVersion;
2742 USHORT MinorOperatingSystemVersion;
2743 USHORT ImageCharacteristics;
2744 USHORT DllCharacteristics;
2745 USHORT Machine;
2746 BOOLEAN ImageContainsCode;
2747 union
2749 UCHAR ImageFlags;
2750 struct
2752 UCHAR ComPlusNativeReady : 1;
2753 UCHAR ComPlusILOnly : 1;
2754 UCHAR ImageDynamicallyRelocated : 1;
2755 UCHAR ImageMappedFlat : 1;
2756 UCHAR BaseBelow4gb : 1;
2757 UCHAR ComPlusPrefer32bit : 1;
2758 #ifdef __WINESRC__ /* Wine extensions */
2759 UCHAR WineBuiltin : 1;
2760 UCHAR WineFakeDll : 1;
2761 #else
2762 UCHAR Reserved : 2;
2763 #endif
2764 } DUMMYSTRUCTNAME;
2765 } DUMMYUNIONNAME;
2766 ULONG LoaderFlags;
2767 ULONG ImageFileSize;
2768 ULONG CheckSum;
2769 } SECTION_IMAGE_INFORMATION, *PSECTION_IMAGE_INFORMATION;
2771 typedef struct _LPC_SECTION_WRITE {
2772 ULONG Length;
2773 HANDLE SectionHandle;
2774 ULONG SectionOffset;
2775 ULONG ViewSize;
2776 PVOID ViewBase;
2777 PVOID TargetViewBase;
2778 } LPC_SECTION_WRITE, *PLPC_SECTION_WRITE;
2780 typedef struct _LPC_SECTION_READ {
2781 ULONG Length;
2782 ULONG ViewSize;
2783 PVOID ViewBase;
2784 } LPC_SECTION_READ, *PLPC_SECTION_READ;
2786 typedef struct _LPC_MESSAGE {
2787 USHORT DataSize;
2788 USHORT MessageSize;
2789 USHORT MessageType;
2790 USHORT VirtualRangesOffset;
2791 CLIENT_ID ClientId;
2792 ULONG_PTR MessageId;
2793 ULONG_PTR SectionSize;
2794 UCHAR Data[ANYSIZE_ARRAY];
2795 } LPC_MESSAGE, *PLPC_MESSAGE;
2797 typedef struct _RTL_USER_PROCESS_INFORMATION
2799 ULONG Length;
2800 HANDLE Process;
2801 HANDLE Thread;
2802 CLIENT_ID ClientId;
2803 SECTION_IMAGE_INFORMATION ImageInformation;
2804 } RTL_USER_PROCESS_INFORMATION, *PRTL_USER_PROCESS_INFORMATION;
2806 typedef enum _SHUTDOWN_ACTION {
2807 ShutdownNoReboot,
2808 ShutdownReboot,
2809 ShutdownPowerOff
2810 } SHUTDOWN_ACTION, *PSHUTDOWN_ACTION;
2812 typedef struct _COUNTED_REASON_CONTEXT
2814 ULONG Version;
2815 ULONG Flags;
2816 union
2818 struct
2820 UNICODE_STRING ResourceFileName;
2821 USHORT ResourceReasonId;
2822 ULONG StringCount;
2823 UNICODE_STRING *ReasonStrings;
2824 } DUMMYSTRUCTNAME;
2825 UNICODE_STRING SimpleString;
2826 } DUMMYUNIONNAME;
2827 } COUNTED_REASON_CONTEXT, *PCOUNTED_REASON_CONTEXT;
2829 typedef enum _KPROFILE_SOURCE {
2830 ProfileTime,
2831 ProfileAlignmentFixup,
2832 ProfileTotalIssues,
2833 ProfilePipelineDry,
2834 ProfileLoadInstructions,
2835 ProfilePipelineFrozen,
2836 ProfileBranchInstructions,
2837 ProfileTotalNonissues,
2838 ProfileDcacheMisses,
2839 ProfileIcacheMisses,
2840 ProfileCacheMisses,
2841 ProfileBranchMispredictions,
2842 ProfileStoreInstructions,
2843 ProfileFpInstructions,
2844 ProfileIntegerInstructions,
2845 Profile2Issue,
2846 Profile3Issue,
2847 Profile4Issue,
2848 ProfileSpecialInstructions,
2849 ProfileTotalCycles,
2850 ProfileIcacheIssues,
2851 ProfileDcacheAccesses,
2852 ProfileMemoryBarrierCycles,
2853 ProfileLoadLinkedIssues,
2854 ProfileMaximum
2855 } KPROFILE_SOURCE, *PKPROFILE_SOURCE;
2857 typedef struct _DIRECTORY_BASIC_INFORMATION {
2858 UNICODE_STRING ObjectName;
2859 UNICODE_STRING ObjectTypeName;
2860 } DIRECTORY_BASIC_INFORMATION, *PDIRECTORY_BASIC_INFORMATION;
2862 typedef struct _INITIAL_TEB {
2863 void *OldStackBase;
2864 void *OldStackLimit;
2865 void *StackBase;
2866 void *StackLimit;
2867 void *DeallocationStack;
2868 } INITIAL_TEB, *PINITIAL_TEB;
2870 typedef enum _PORT_INFORMATION_CLASS {
2871 PortNoInformation
2872 } PORT_INFORMATION_CLASS, *PPORT_INFORMATION_CLASS;
2874 typedef enum _IO_COMPLETION_INFORMATION_CLASS {
2875 IoCompletionBasicInformation
2876 } IO_COMPLETION_INFORMATION_CLASS, *PIO_COMPLETION_INFORMATION_CLASS;
2878 typedef struct _FILE_COMPLETION_INFORMATION {
2879 HANDLE CompletionPort;
2880 ULONG_PTR CompletionKey;
2881 } FILE_COMPLETION_INFORMATION, *PFILE_COMPLETION_INFORMATION;
2883 #define IO_COMPLETION_QUERY_STATE 0x0001
2884 #define IO_COMPLETION_MODIFY_STATE 0x0002
2885 #define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
2887 typedef struct _FILE_IO_COMPLETION_INFORMATION {
2888 ULONG_PTR CompletionKey;
2889 ULONG_PTR CompletionValue;
2890 IO_STATUS_BLOCK IoStatusBlock;
2891 } FILE_IO_COMPLETION_INFORMATION, *PFILE_IO_COMPLETION_INFORMATION;
2893 typedef enum _HARDERROR_RESPONSE_OPTION {
2894 OptionAbortRetryIgnore,
2895 OptionOk,
2896 OptionOkCancel,
2897 OptionRetryCancel,
2898 OptionYesNo,
2899 OptionYesNoCancel,
2900 OptionShutdownSystem
2901 } HARDERROR_RESPONSE_OPTION, *PHARDERROR_RESPONSE_OPTION;
2903 typedef enum _HARDERROR_RESPONSE {
2904 ResponseReturnToCaller,
2905 ResponseNotHandled,
2906 ResponseAbort,
2907 ResponseCancel,
2908 ResponseIgnore,
2909 ResponseNo,
2910 ResponseOk,
2911 ResponseRetry,
2912 ResponseYes
2913 } HARDERROR_RESPONSE, *PHARDERROR_RESPONSE;
2915 typedef enum _SYSDBG_COMMAND {
2916 SysDbgQueryModuleInformation,
2917 SysDbgQueryTraceInformation,
2918 SysDbgSetTracepoint,
2919 SysDbgSetSpecialCall,
2920 SysDbgClearSpecialCalls,
2921 SysDbgQuerySpecialCalls,
2922 SysDbgBreakPoint,
2923 SysDbgQueryVersion,
2924 SysDbgReadVirtual,
2925 SysDbgWriteVirtual,
2926 SysDbgReadPhysical,
2927 SysDbgWritePhysical,
2928 SysDbgReadControlSpace,
2929 SysDbgWriteControlSpace,
2930 SysDbgReadIoSpace,
2931 SysDbgWriteIoSpace,
2932 SysDbgReadMsr,
2933 SysDbgWriteMsr,
2934 SysDbgReadBusData,
2935 SysDbgWriteBusData
2936 } SYSDBG_COMMAND, *PSYSDBG_COMMAND;
2938 typedef struct _CPTABLEINFO
2940 USHORT CodePage;
2941 USHORT MaximumCharacterSize;
2942 USHORT DefaultChar;
2943 USHORT UniDefaultChar;
2944 USHORT TransDefaultChar;
2945 USHORT TransUniDefaultChar;
2946 USHORT DBCSCodePage;
2947 UCHAR LeadByte[12];
2948 USHORT *MultiByteTable;
2949 void *WideCharTable;
2950 USHORT *DBCSRanges;
2951 USHORT *DBCSOffsets;
2952 } CPTABLEINFO, *PCPTABLEINFO;
2954 typedef struct _NLSTABLEINFO
2956 CPTABLEINFO OemTableInfo;
2957 CPTABLEINFO AnsiTableInfo;
2958 USHORT *UpperCaseTable;
2959 USHORT *LowerCaseTable;
2960 } NLSTABLEINFO, *PNLSTABLEINFO;
2962 /*************************************************************************
2963 * Loader structures
2965 * Those are not part of standard Winternl.h
2968 typedef struct _LDR_SERVICE_TAG_RECORD
2970 struct _LDR_SERVICE_TAG_RECORD *Next;
2971 ULONG ServiceTag;
2972 } LDR_SERVICE_TAG_RECORD, *PLDR_SERVICE_TAG_RECORD;
2974 typedef struct _LDRP_CSLIST
2976 SINGLE_LIST_ENTRY *Tail;
2977 } LDRP_CSLIST, *PLDRP_CSLIST;
2979 typedef enum _LDR_DDAG_STATE
2981 LdrModulesMerged = -5,
2982 LdrModulesInitError = -4,
2983 LdrModulesSnapError = -3,
2984 LdrModulesUnloaded = -2,
2985 LdrModulesUnloading = -1,
2986 LdrModulesPlaceHolder = 0,
2987 LdrModulesMapping = 1,
2988 LdrModulesMapped = 2,
2989 LdrModulesWaitingForDependencies = 3,
2990 LdrModulesSnapping = 4,
2991 LdrModulesSnapped = 5,
2992 LdrModulesCondensed = 6,
2993 LdrModulesReadyToInit = 7,
2994 LdrModulesInitializing = 8,
2995 LdrModulesReadyToRun = 9,
2996 } LDR_DDAG_STATE;
2998 typedef struct _LDR_DDAG_NODE
3000 LIST_ENTRY Modules;
3001 LDR_SERVICE_TAG_RECORD *ServiceTagList;
3002 ULONG LoadCount;
3003 ULONG ReferenceCount;
3004 ULONG DependencyCount;
3005 union
3007 LDRP_CSLIST Dependencies;
3008 SINGLE_LIST_ENTRY RemovalLink;
3010 LDRP_CSLIST IncomingDependencies;
3011 LDR_DDAG_STATE State;
3012 SINGLE_LIST_ENTRY CondenseLink;
3013 ULONG PreorderNumber;
3014 ULONG LowestLink;
3015 } LDR_DDAG_NODE, *PLDR_DDAG_NODE;
3017 typedef enum _LDR_DLL_LOAD_REASON
3019 LoadReasonStaticDependency,
3020 LoadReasonStaticForwarderDependency,
3021 LoadReasonDynamicForwarderDependency,
3022 LoadReasonDelayloadDependency,
3023 LoadReasonDynamicLoad,
3024 LoadReasonAsImageLoad,
3025 LoadReasonAsDataLoad,
3026 LoadReasonUnknown = -1
3027 } LDR_DLL_LOAD_REASON, *PLDR_DLL_LOAD_REASON;
3029 typedef struct _LDR_DATA_TABLE_ENTRY
3031 LIST_ENTRY InLoadOrderLinks;
3032 LIST_ENTRY InMemoryOrderLinks;
3033 LIST_ENTRY InInitializationOrderLinks;
3034 void* DllBase;
3035 void* EntryPoint;
3036 ULONG SizeOfImage;
3037 UNICODE_STRING FullDllName;
3038 UNICODE_STRING BaseDllName;
3039 ULONG Flags;
3040 SHORT LoadCount;
3041 SHORT TlsIndex;
3042 HANDLE SectionHandle;
3043 ULONG CheckSum;
3044 ULONG TimeDateStamp;
3045 HANDLE ActivationContext;
3046 void* Lock;
3047 LDR_DDAG_NODE* DdagNode;
3048 LIST_ENTRY NodeModuleLink;
3049 struct _LDRP_LOAD_CONTEXT *LoadContext;
3050 void* ParentDllBase;
3051 void* SwitchBackContext;
3052 RTL_BALANCED_NODE BaseAddressIndexNode;
3053 RTL_BALANCED_NODE MappingInfoIndexNode;
3054 ULONG_PTR OriginalBase;
3055 LARGE_INTEGER LoadTime;
3056 ULONG BaseNameHashValue;
3057 LDR_DLL_LOAD_REASON LoadReason;
3058 ULONG ImplicitPathOptions;
3059 ULONG ReferenceCount;
3060 } LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY;
3062 typedef struct _LDR_DLL_LOADED_NOTIFICATION_DATA
3064 ULONG Flags;
3065 const UNICODE_STRING *FullDllName;
3066 const UNICODE_STRING *BaseDllName;
3067 void *DllBase;
3068 ULONG SizeOfImage;
3069 } LDR_DLL_LOADED_NOTIFICATION_DATA, *PLDR_DLL_LOADED_NOTIFICATION_DATA;
3071 typedef struct _LDR_DLL_UNLOADED_NOTIFICATION_DATA
3073 ULONG Flags;
3074 const UNICODE_STRING *FullDllName;
3075 const UNICODE_STRING *BaseDllName;
3076 void *DllBase;
3077 ULONG SizeOfImage;
3078 } LDR_DLL_UNLOADED_NOTIFICATION_DATA, *PLDR_DLL_UNLOADED_NOTIFICATION_DATA;
3080 typedef union _LDR_DLL_NOTIFICATION_DATA
3082 LDR_DLL_LOADED_NOTIFICATION_DATA Loaded;
3083 LDR_DLL_UNLOADED_NOTIFICATION_DATA Unloaded;
3084 } LDR_DLL_NOTIFICATION_DATA, *PLDR_DLL_NOTIFICATION_DATA;
3086 typedef void (CALLBACK *PLDR_DLL_NOTIFICATION_FUNCTION)(ULONG, LDR_DLL_NOTIFICATION_DATA*, void*);
3088 /* those defines are (some of the) regular LDR_DATA_TABLE_ENTRY.Flags values */
3089 #define LDR_IMAGE_IS_DLL 0x00000004
3090 #define LDR_LOAD_IN_PROGRESS 0x00001000
3091 #define LDR_UNLOAD_IN_PROGRESS 0x00002000
3092 #define LDR_NO_DLL_CALLS 0x00040000
3093 #define LDR_PROCESS_ATTACHED 0x00080000
3094 #define LDR_COR_IMAGE 0x00400000
3095 #define LDR_COR_ILONLY 0x01000000
3097 /* these ones is Wine specific */
3098 #define LDR_DONT_RESOLVE_REFS 0x40000000
3099 #define LDR_WINE_INTERNAL 0x80000000
3101 /* flag for LdrAddRefDll */
3102 #define LDR_ADDREF_DLL_PIN 0x00000001
3104 #define LDR_DLL_NOTIFICATION_REASON_LOADED 1
3105 #define LDR_DLL_NOTIFICATION_REASON_UNLOADED 2
3107 /* FIXME: to be checked */
3108 #define MAXIMUM_FILENAME_LENGTH 256
3110 typedef struct _SYSTEM_MODULE
3112 PVOID Section; /* 00/00 */
3113 PVOID MappedBaseAddress; /* 04/08 */
3114 PVOID ImageBaseAddress; /* 08/10 */
3115 ULONG ImageSize; /* 0c/18 */
3116 ULONG Flags; /* 10/1c */
3117 WORD LoadOrderIndex; /* 14/20 */
3118 WORD InitOrderIndex; /* 16/22 */
3119 WORD LoadCount; /* 18/24 */
3120 WORD NameOffset; /* 1a/26 */
3121 BYTE Name[MAXIMUM_FILENAME_LENGTH]; /* 1c/28 */
3122 } SYSTEM_MODULE, *PSYSTEM_MODULE;
3124 typedef struct _SYSTEM_MODULE_INFORMATION
3126 ULONG ModulesCount;
3127 SYSTEM_MODULE Modules[1]; /* FIXME: should be Modules[0] */
3128 } SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;
3130 #define PROCESS_CREATE_FLAGS_BREAKAWAY 0x00000001
3131 #define PROCESS_CREATE_FLAGS_NO_DEBUG_INHERIT 0x00000002
3132 #define PROCESS_CREATE_FLAGS_INHERIT_HANDLES 0x00000004
3133 #define PROCESS_CREATE_FLAGS_OVERRIDE_ADDRESS_SPACE 0x00000008
3134 #define PROCESS_CREATE_FLAGS_LARGE_PAGES 0x00000010
3135 #define PROCESS_CREATE_FLAGS_LARGE_PAGE_SYSTEM_DLL 0x00000020
3136 #define PROCESS_CREATE_FLAGS_PROTECTED_PROCESS 0x00000040
3137 #define PROCESS_CREATE_FLAGS_CREATE_SESSION 0x00000080
3138 #define PROCESS_CREATE_FLAGS_INHERIT_FROM_PARENT 0x00000100
3139 #define PROCESS_CREATE_FLAGS_SUSPENDED 0x00000200
3140 #define PROCESS_CREATE_FLAGS_EXTENDED_UNKNOWN 0x00000400
3142 typedef struct _RTL_PROCESS_MODULE_INFORMATION_EX
3144 USHORT NextOffset;
3145 SYSTEM_MODULE BaseInfo;
3146 ULONG ImageCheckSum;
3147 ULONG TimeDateStamp;
3148 void *DefaultBase;
3149 } RTL_PROCESS_MODULE_INFORMATION_EX;
3151 #define THREAD_CREATE_FLAGS_CREATE_SUSPENDED 0x00000001
3152 #define THREAD_CREATE_FLAGS_SKIP_THREAD_ATTACH 0x00000002
3153 #define THREAD_CREATE_FLAGS_HIDE_FROM_DEBUGGER 0x00000004
3154 #define THREAD_CREATE_FLAGS_HAS_SECURITY_DESCRIPTOR 0x00000010
3155 #define THREAD_CREATE_FLAGS_ACCESS_CHECK_IN_TARGET 0x00000020
3156 #define THREAD_CREATE_FLAGS_INITIAL_THREAD 0x00000080
3158 typedef LONG (CALLBACK *PRTL_EXCEPTION_FILTER)(PEXCEPTION_POINTERS);
3160 typedef void (CALLBACK *PTP_IO_CALLBACK)(PTP_CALLBACK_INSTANCE,void*,void*,IO_STATUS_BLOCK*,PTP_IO);
3162 #define PS_ATTRIBUTE_THREAD 0x00010000
3163 #define PS_ATTRIBUTE_INPUT 0x00020000
3164 #define PS_ATTRIBUTE_ADDITIVE 0x00040000
3166 typedef enum _PS_ATTRIBUTE_NUM
3168 PsAttributeParentProcess,
3169 PsAttributeDebugPort,
3170 PsAttributeToken,
3171 PsAttributeClientId,
3172 PsAttributeTebAddress,
3173 PsAttributeImageName,
3174 PsAttributeImageInfo,
3175 PsAttributeMemoryReserve,
3176 PsAttributePriorityClass,
3177 PsAttributeErrorMode,
3178 PsAttributeStdHandleInfo,
3179 PsAttributeHandleList,
3180 PsAttributeGroupAffinity,
3181 PsAttributePreferredNode,
3182 PsAttributeIdealProcessor,
3183 PsAttributeUmsThread,
3184 PsAttributeMitigationOptions,
3185 PsAttributeProtectionLevel,
3186 PsAttributeSecureProcess,
3187 PsAttributeJobList,
3188 PsAttributeChildProcessPolicy,
3189 PsAttributeAllApplicationPackagesPolicy,
3190 PsAttributeWin32kFilter,
3191 PsAttributeSafeOpenPromptOriginClaim,
3192 PsAttributeBnoIsolation,
3193 PsAttributeDesktopAppPolicy,
3194 PsAttributeChpe,
3195 PsAttributeMax
3196 } PS_ATTRIBUTE_NUM;
3198 #define PS_ATTRIBUTE_PARENT_PROCESS (PsAttributeParentProcess | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE)
3199 #define PS_ATTRIBUTE_DEBUG_PORT (PsAttributeDebugPort | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE)
3200 #define PS_ATTRIBUTE_TOKEN (PsAttributeToken | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE)
3201 #define PS_ATTRIBUTE_CLIENT_ID (PsAttributeClientId | PS_ATTRIBUTE_THREAD)
3202 #define PS_ATTRIBUTE_TEB_ADDRESS (PsAttributeTebAddress | PS_ATTRIBUTE_THREAD)
3203 #define PS_ATTRIBUTE_IMAGE_NAME (PsAttributeImageName | PS_ATTRIBUTE_INPUT)
3204 #define PS_ATTRIBUTE_IMAGE_INFO (PsAttributeImageInfo)
3205 #define PS_ATTRIBUTE_MEMORY_RESERVE (PsAttributeMemoryReserve | PS_ATTRIBUTE_INPUT)
3206 #define PS_ATTRIBUTE_PRIORITY_CLASS (PsAttributePriorityClass | PS_ATTRIBUTE_INPUT)
3207 #define PS_ATTRIBUTE_ERROR_MODE (PsAttributeErrorMode | PS_ATTRIBUTE_INPUT)
3208 #define PS_ATTRIBUTE_STD_HANDLE_INFO (PsAttributeStdHandleInfo | PS_ATTRIBUTE_INPUT)
3209 #define PS_ATTRIBUTE_HANDLE_LIST (PsAttributeHandleList | PS_ATTRIBUTE_INPUT)
3210 #define PS_ATTRIBUTE_GROUP_AFFINITY (PsAttributeGroupAffinity | PS_ATTRIBUTE_THREAD | PS_ATTRIBUTE_INPUT)
3211 #define PS_ATTRIBUTE_PREFERRED_NODE (PsAttributePreferredNode | PS_ATTRIBUTE_INPUT)
3212 #define PS_ATTRIBUTE_IDEAL_PROCESSOR (PsAttributeIdealProcessor | PS_ATTRIBUTE_THREAD | PS_ATTRIBUTE_INPUT)
3213 #define PS_ATTRIBUTE_MITIGATION_OPTIONS (PsAttributeMitigationOptions | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_UNKNOWN)
3214 #define PS_ATTRIBUTE_PROTECTION_LEVEL (PsAttributeProtectionLevel | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_UNKNOWN)
3215 #define PS_ATTRIBUTE_SECURE_PROCESS (PsAttributeSecureProcess | PS_ATTRIBUTE_INPUT)
3216 #define PS_ATTRIBUTE_JOB_LIST (PsAttributeJobList | PS_ATTRIBUTE_INPUT)
3217 #define PS_ATTRIBUTE_CHILD_PROCESS_POLICY (PsAttributeChildProcessPolicy | PS_ATTRIBUTE_INPUT)
3218 #define PS_ATTRIBUTE_ALL_APPLICATION_PACKAGES_POLICY (PsAttributeAllApplicationPackagesPolicy | PS_ATTRIBUTE_INPUT)
3219 #define PS_ATTRIBUTE_WIN32K_FILTER (PsAttributeWin32kFilter | PS_ATTRIBUTE_INPUT)
3220 #define PS_ATTRIBUTE_SAFE_OPEN_PROMPT_ORIGIN_CLAIM (PsAttributeSafeOpenPromptOriginClaim | PS_ATTRIBUTE_INPUT)
3221 #define PS_ATTRIBUTE_BNO_ISOLATION (PsAttributeBnoIsolation | PS_ATTRIBUTE_INPUT)
3222 #define PS_ATTRIBUTE_DESKTOP_APP_POLICY (PsAttributeDesktopAppPolicy | PS_ATTRIBUTE_INPUT)
3224 typedef struct _PS_ATTRIBUTE
3226 ULONG_PTR Attribute;
3227 SIZE_T Size;
3228 union
3230 ULONG_PTR Value;
3231 void *ValuePtr;
3233 SIZE_T *ReturnLength;
3234 } PS_ATTRIBUTE;
3236 typedef struct _PS_ATTRIBUTE_LIST
3238 SIZE_T TotalLength;
3239 PS_ATTRIBUTE Attributes[1];
3240 } PS_ATTRIBUTE_LIST, *PPS_ATTRIBUTE_LIST;
3242 typedef enum _PS_CREATE_STATE
3244 PsCreateInitialState,
3245 PsCreateFailOnFileOpen,
3246 PsCreateFailOnSectionCreate,
3247 PsCreateFailExeFormat,
3248 PsCreateFailMachineMismatch,
3249 PsCreateFailExeName,
3250 PsCreateSuccess,
3251 PsCreateMaximumStates
3252 } PS_CREATE_STATE;
3254 typedef struct _PS_CREATE_INFO
3256 SIZE_T Size;
3257 PS_CREATE_STATE State;
3258 union
3260 struct
3262 union
3264 ULONG InitFlags;
3265 struct
3267 UCHAR WriteOutputOnExit : 1;
3268 UCHAR DetectManifest : 1;
3269 UCHAR IFEOSkipDebugger : 1;
3270 UCHAR IFEODoNotPropagateKeyState : 1;
3271 UCHAR SpareBits1 : 4;
3272 UCHAR SpareBits2 : 8;
3273 USHORT ProhibitedImageCharacteristics : 16;
3276 ACCESS_MASK AdditionalFileAccess;
3277 } InitState;
3278 struct
3280 HANDLE FileHandle;
3281 } FailSection;
3282 struct
3284 USHORT DllCharacteristics;
3285 } ExeFormat;
3286 struct
3288 HANDLE IFEOKey;
3289 } ExeName;
3290 struct
3292 union
3294 ULONG OutputFlags;
3295 struct
3297 UCHAR ProtectedProcess : 1;
3298 UCHAR AddressSpaceOverride : 1;
3299 UCHAR DevOverrideEnabled : 1;
3300 UCHAR ManifestDetected : 1;
3301 UCHAR ProtectedProcessLight : 1;
3302 UCHAR SpareBits1 : 3;
3303 UCHAR SpareBits2 : 8;
3304 USHORT SpareBits3 : 16;
3307 HANDLE FileHandle;
3308 HANDLE SectionHandle;
3309 ULONGLONG UserProcessParametersNative;
3310 ULONG UserProcessParametersWow64;
3311 ULONG CurrentParameterFlags;
3312 ULONGLONG PebAddressNative;
3313 ULONG PebAddressWow64;
3314 ULONGLONG ManifestAddress;
3315 ULONG ManifestSize;
3316 } SuccessState;
3318 } PS_CREATE_INFO, *PPS_CREATE_INFO;
3320 typedef struct _DBGKM_EXCEPTION
3322 EXCEPTION_RECORD ExceptionRecord;
3323 ULONG FirstChance;
3324 } DBGKM_EXCEPTION, *PDBGKM_EXCEPTION;
3326 typedef struct _DBGKM_CREATE_THREAD
3328 ULONG SubSystemKey;
3329 PVOID StartAddress;
3330 } DBGKM_CREATE_THREAD, *PDBGKM_CREATE_THREAD;
3332 typedef struct _DBGKM_CREATE_PROCESS
3334 ULONG SubSystemKey;
3335 HANDLE FileHandle;
3336 PVOID BaseOfImage;
3337 ULONG DebugInfoFileOffset;
3338 ULONG DebugInfoSize;
3339 DBGKM_CREATE_THREAD InitialThread;
3340 } DBGKM_CREATE_PROCESS, *PDBGKM_CREATE_PROCESS;
3342 typedef struct _DBGKM_EXIT_THREAD
3344 NTSTATUS ExitStatus;
3345 } DBGKM_EXIT_THREAD, *PDBGKM_EXIT_THREAD;
3347 typedef struct _DBGKM_EXIT_PROCESS
3349 NTSTATUS ExitStatus;
3350 } DBGKM_EXIT_PROCESS, *PDBGKM_EXIT_PROCESS;
3352 typedef struct _DBGKM_LOAD_DLL
3354 HANDLE FileHandle;
3355 PVOID BaseOfDll;
3356 ULONG DebugInfoFileOffset;
3357 ULONG DebugInfoSize;
3358 PVOID NamePointer;
3359 } DBGKM_LOAD_DLL, *PDBGKM_LOAD_DLL;
3361 typedef struct _DBGKM_UNLOAD_DLL
3363 PVOID BaseAddress;
3364 } DBGKM_UNLOAD_DLL, *PDBGKM_UNLOAD_DLL;
3366 typedef enum _DBG_STATE
3368 DbgIdle,
3369 DbgReplyPending,
3370 DbgCreateThreadStateChange,
3371 DbgCreateProcessStateChange,
3372 DbgExitThreadStateChange,
3373 DbgExitProcessStateChange,
3374 DbgExceptionStateChange,
3375 DbgBreakpointStateChange,
3376 DbgSingleStepStateChange,
3377 DbgLoadDllStateChange,
3378 DbgUnloadDllStateChange
3379 } DBG_STATE, *PDBG_STATE;
3381 typedef struct _DBGUI_CREATE_THREAD
3383 HANDLE HandleToThread;
3384 DBGKM_CREATE_THREAD NewThread;
3385 } DBGUI_CREATE_THREAD, *PDBGUI_CREATE_THREAD;
3387 typedef struct _DBGUI_CREATE_PROCESS
3389 HANDLE HandleToProcess;
3390 HANDLE HandleToThread;
3391 DBGKM_CREATE_PROCESS NewProcess;
3392 } DBGUI_CREATE_PROCESS, *PDBGUI_CREATE_PROCESS;
3394 typedef struct _DBGUI_WAIT_STATE_CHANGE
3396 DBG_STATE NewState;
3397 CLIENT_ID AppClientId;
3398 union
3400 DBGKM_EXCEPTION Exception;
3401 DBGUI_CREATE_THREAD CreateThread;
3402 DBGUI_CREATE_PROCESS CreateProcessInfo;
3403 DBGKM_EXIT_THREAD ExitThread;
3404 DBGKM_EXIT_PROCESS ExitProcess;
3405 DBGKM_LOAD_DLL LoadDll;
3406 DBGKM_UNLOAD_DLL UnloadDll;
3407 } StateInfo;
3408 } DBGUI_WAIT_STATE_CHANGE, *PDBGUI_WAIT_STATE_CHANGE;
3410 struct _DEBUG_EVENT;
3412 #define DEBUG_READ_EVENT 0x0001
3413 #define DEBUG_PROCESS_ASSIGN 0x0002
3414 #define DEBUG_SET_INFORMATION 0x0004
3415 #define DEBUG_QUERY_INFORMATION 0x0008
3416 #define DEBUG_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x0f)
3418 #define DEBUG_KILL_ON_CLOSE 0x1
3420 typedef enum _DEBUGOBJECTINFOCLASS
3422 DebugObjectKillProcessOnExitInformation = 1,
3423 MaxDebugObjectInfoClass
3424 } DEBUGOBJECTINFOCLASS, *PDEBUGOBJECTINFOCLASS;
3426 /***********************************************************************
3427 * Function declarations
3430 NTSYSAPI void WINAPI DbgBreakPoint(void);
3431 NTSYSAPI NTSTATUS WINAPIV DbgPrint(LPCSTR fmt, ...);
3432 NTSYSAPI NTSTATUS WINAPIV DbgPrintEx(ULONG iComponentId, ULONG Level, LPCSTR fmt, ...);
3433 NTSYSAPI NTSTATUS WINAPI DbgUiConnectToDbg(void);
3434 NTSYSAPI NTSTATUS WINAPI DbgUiContinue(CLIENT_ID*,NTSTATUS);
3435 NTSYSAPI NTSTATUS WINAPI DbgUiConvertStateChangeStructure(DBGUI_WAIT_STATE_CHANGE*,struct _DEBUG_EVENT*);
3436 NTSYSAPI NTSTATUS WINAPI DbgUiDebugActiveProcess(HANDLE);
3437 NTSYSAPI HANDLE WINAPI DbgUiGetThreadDebugObject(void);
3438 NTSYSAPI NTSTATUS WINAPI DbgUiIssueRemoteBreakin(HANDLE);
3439 NTSYSAPI void WINAPI DbgUiRemoteBreakin(void*);
3440 NTSYSAPI void WINAPI DbgUiSetThreadDebugObject(HANDLE);
3441 NTSYSAPI NTSTATUS WINAPI DbgUiStopDebugging(HANDLE);
3442 NTSYSAPI NTSTATUS WINAPI DbgUiWaitStateChange(DBGUI_WAIT_STATE_CHANGE*,LARGE_INTEGER*);
3443 NTSYSAPI void WINAPI DbgUserBreakPoint(void);
3444 NTSYSAPI NTSTATUS WINAPI LdrAccessResource(HMODULE,const IMAGE_RESOURCE_DATA_ENTRY*,void**,PULONG);
3445 NTSYSAPI NTSTATUS WINAPI LdrAddDllDirectory(const UNICODE_STRING*,void**);
3446 NTSYSAPI NTSTATUS WINAPI LdrAddRefDll(ULONG,HMODULE);
3447 NTSYSAPI NTSTATUS WINAPI LdrDisableThreadCalloutsForDll(HMODULE);
3448 NTSYSAPI NTSTATUS WINAPI LdrFindEntryForAddress(const void*, PLDR_DATA_TABLE_ENTRY*);
3449 NTSYSAPI NTSTATUS WINAPI LdrFindResourceDirectory_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DIRECTORY**);
3450 NTSYSAPI NTSTATUS WINAPI LdrFindResource_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DATA_ENTRY**);
3451 NTSYSAPI NTSTATUS WINAPI LdrGetDllDirectory(UNICODE_STRING*);
3452 NTSYSAPI NTSTATUS WINAPI LdrGetDllHandle(LPCWSTR, ULONG, const UNICODE_STRING*, HMODULE*);
3453 NTSYSAPI NTSTATUS WINAPI LdrGetDllPath(PCWSTR,ULONG,PWSTR*,PWSTR*);
3454 NTSYSAPI NTSTATUS WINAPI LdrGetProcedureAddress(HMODULE, const ANSI_STRING*, ULONG, void**);
3455 NTSYSAPI NTSTATUS WINAPI LdrLoadDll(LPCWSTR, DWORD, const UNICODE_STRING*, HMODULE*);
3456 NTSYSAPI NTSTATUS WINAPI LdrLockLoaderLock(ULONG,ULONG*,ULONG_PTR*);
3457 IMAGE_BASE_RELOCATION * WINAPI LdrProcessRelocationBlock(void*,UINT,USHORT*,INT_PTR);
3458 NTSYSAPI NTSTATUS WINAPI LdrQueryImageFileExecutionOptions(const UNICODE_STRING*,LPCWSTR,ULONG,void*,ULONG,ULONG*);
3459 NTSYSAPI NTSTATUS WINAPI LdrQueryProcessModuleInformation(SYSTEM_MODULE_INFORMATION*, ULONG, ULONG*);
3460 NTSYSAPI NTSTATUS WINAPI LdrRegisterDllNotification(ULONG,PLDR_DLL_NOTIFICATION_FUNCTION,void*,void**);
3461 NTSYSAPI NTSTATUS WINAPI LdrRemoveDllDirectory(void*);
3462 NTSYSAPI NTSTATUS WINAPI LdrSetDefaultDllDirectories(ULONG);
3463 NTSYSAPI NTSTATUS WINAPI LdrSetDllDirectory(const UNICODE_STRING*);
3464 NTSYSAPI void WINAPI LdrShutdownProcess(void);
3465 NTSYSAPI void WINAPI LdrShutdownThread(void);
3466 NTSYSAPI NTSTATUS WINAPI LdrUnloadDll(HMODULE);
3467 NTSYSAPI NTSTATUS WINAPI LdrUnlockLoaderLock(ULONG,ULONG_PTR);
3468 NTSYSAPI NTSTATUS WINAPI LdrUnregisterDllNotification(void*);
3469 NTSYSAPI NTSTATUS WINAPI NtAcceptConnectPort(PHANDLE,ULONG,PLPC_MESSAGE,BOOLEAN,PLPC_SECTION_WRITE,PLPC_SECTION_READ);
3470 NTSYSAPI NTSTATUS WINAPI NtAccessCheck(PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,PGENERIC_MAPPING,PPRIVILEGE_SET,PULONG,PULONG,NTSTATUS*);
3471 NTSYSAPI NTSTATUS WINAPI NtAccessCheckAndAuditAlarm(PUNICODE_STRING,HANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,ACCESS_MASK,PGENERIC_MAPPING,BOOLEAN,PACCESS_MASK,PBOOLEAN,PBOOLEAN);
3472 NTSYSAPI NTSTATUS WINAPI NtAddAtom(const WCHAR*,ULONG,RTL_ATOM*);
3473 NTSYSAPI NTSTATUS WINAPI NtAdjustGroupsToken(HANDLE,BOOLEAN,PTOKEN_GROUPS,ULONG,PTOKEN_GROUPS,PULONG);
3474 NTSYSAPI NTSTATUS WINAPI NtAdjustPrivilegesToken(HANDLE,BOOLEAN,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD);
3475 NTSYSAPI NTSTATUS WINAPI NtAlertResumeThread(HANDLE,PULONG);
3476 NTSYSAPI NTSTATUS WINAPI NtAlertThread(HANDLE ThreadHandle);
3477 NTSYSAPI NTSTATUS WINAPI NtAllocateLocallyUniqueId(PLUID lpLuid);
3478 NTSYSAPI NTSTATUS WINAPI NtAllocateUuids(PULARGE_INTEGER,PULONG,PULONG,PUCHAR);
3479 NTSYSAPI NTSTATUS WINAPI NtAllocateVirtualMemory(HANDLE,PVOID*,ULONG_PTR,SIZE_T*,ULONG,ULONG);
3480 NTSYSAPI NTSTATUS WINAPI NtAllocateVirtualMemoryEx(HANDLE,PVOID*,SIZE_T*,ULONG,ULONG,MEM_EXTENDED_PARAMETER*,ULONG);
3481 NTSYSAPI NTSTATUS WINAPI NtAreMappedFilesTheSame(PVOID,PVOID);
3482 NTSYSAPI NTSTATUS WINAPI NtAssignProcessToJobObject(HANDLE,HANDLE);
3483 NTSYSAPI NTSTATUS WINAPI NtCallbackReturn(PVOID,ULONG,NTSTATUS);
3484 NTSYSAPI NTSTATUS WINAPI NtCancelIoFile(HANDLE,PIO_STATUS_BLOCK);
3485 NTSYSAPI NTSTATUS WINAPI NtCancelIoFileEx(HANDLE,PIO_STATUS_BLOCK,PIO_STATUS_BLOCK);
3486 NTSYSAPI NTSTATUS WINAPI NtCancelTimer(HANDLE, BOOLEAN*);
3487 NTSYSAPI NTSTATUS WINAPI NtClearEvent(HANDLE);
3488 NTSYSAPI NTSTATUS WINAPI NtClearPowerRequest(HANDLE,POWER_REQUEST_TYPE);
3489 NTSYSAPI NTSTATUS WINAPI NtClose(HANDLE);
3490 NTSYSAPI NTSTATUS WINAPI NtCloseObjectAuditAlarm(PUNICODE_STRING,HANDLE,BOOLEAN);
3491 NTSYSAPI NTSTATUS WINAPI NtCompleteConnectPort(HANDLE);
3492 NTSYSAPI NTSTATUS WINAPI NtConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
3493 NTSYSAPI NTSTATUS WINAPI NtContinue(PCONTEXT,BOOLEAN);
3494 NTSYSAPI NTSTATUS WINAPI NtCreateDebugObject(HANDLE*,ACCESS_MASK,OBJECT_ATTRIBUTES*,ULONG);
3495 NTSYSAPI NTSTATUS WINAPI NtCreateDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
3496 NTSYSAPI NTSTATUS WINAPI NtCreateEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *,EVENT_TYPE,BOOLEAN);
3497 NTSYSAPI NTSTATUS WINAPI NtCreateEventPair(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
3498 NTSYSAPI NTSTATUS WINAPI NtCreateFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,PLARGE_INTEGER,ULONG,ULONG,ULONG,ULONG,PVOID,ULONG);
3499 NTSYSAPI NTSTATUS WINAPI NtCreateIoCompletion(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,ULONG);
3500 NTSYSAPI NTSTATUS WINAPI NtCreateJobObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3501 NTSYSAPI NTSTATUS WINAPI NtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
3502 NTSYSAPI NTSTATUS WINAPI NtCreateKeyTransacted(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,HANDLE,ULONG*);
3503 NTSYSAPI NTSTATUS WINAPI NtCreateKeyedEvent(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG);
3504 NTSYSAPI NTSTATUS WINAPI NtCreateMailslotFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,PLARGE_INTEGER);
3505 NTSYSAPI NTSTATUS WINAPI NtCreateMutant(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,BOOLEAN);
3506 NTSYSAPI NTSTATUS WINAPI NtCreateNamedPipeFile(PHANDLE,ULONG,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,PLARGE_INTEGER);
3507 NTSYSAPI NTSTATUS WINAPI NtCreatePagingFile(PUNICODE_STRING,PLARGE_INTEGER,PLARGE_INTEGER,PLARGE_INTEGER);
3508 NTSYSAPI NTSTATUS WINAPI NtCreatePort(PHANDLE,POBJECT_ATTRIBUTES,ULONG,ULONG,PULONG);
3509 NTSYSAPI NTSTATUS WINAPI NtCreatePowerRequest(HANDLE*,COUNTED_REASON_CONTEXT*);
3510 NTSYSAPI NTSTATUS WINAPI NtCreateProcess(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,HANDLE,BOOLEAN,HANDLE,HANDLE,HANDLE);
3511 NTSYSAPI NTSTATUS WINAPI NtCreateProfile(PHANDLE,HANDLE,PVOID,ULONG,ULONG,PVOID,ULONG,KPROFILE_SOURCE,KAFFINITY);
3512 NTSYSAPI NTSTATUS WINAPI NtCreateSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const LARGE_INTEGER*,ULONG,ULONG,HANDLE);
3513 NTSYSAPI NTSTATUS WINAPI NtCreateSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,LONG,LONG);
3514 NTSYSAPI NTSTATUS WINAPI NtCreateSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PUNICODE_STRING);
3515 NTSYSAPI NTSTATUS WINAPI NtCreateThread(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,HANDLE,PCLIENT_ID,PCONTEXT,PINITIAL_TEB,BOOLEAN);
3516 NTSYSAPI NTSTATUS WINAPI NtCreateThreadEx(HANDLE*,ACCESS_MASK,OBJECT_ATTRIBUTES*,HANDLE,PRTL_THREAD_START_ROUTINE,void*,ULONG,SIZE_T,SIZE_T,SIZE_T,PS_ATTRIBUTE_LIST*);
3517 NTSYSAPI NTSTATUS WINAPI NtCreateTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*, TIMER_TYPE);
3518 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);
3519 NTSYSAPI NTSTATUS WINAPI NtCreateUserProcess(HANDLE*,HANDLE*,ACCESS_MASK,ACCESS_MASK,OBJECT_ATTRIBUTES*,OBJECT_ATTRIBUTES*,ULONG,ULONG,RTL_USER_PROCESS_PARAMETERS*,PS_CREATE_INFO*,PS_ATTRIBUTE_LIST*);
3520 NTSYSAPI NTSTATUS WINAPI NtDebugActiveProcess(HANDLE,HANDLE);
3521 NTSYSAPI NTSTATUS WINAPI NtDebugContinue(HANDLE,CLIENT_ID*,NTSTATUS);
3522 NTSYSAPI NTSTATUS WINAPI NtDelayExecution(BOOLEAN,const LARGE_INTEGER*);
3523 NTSYSAPI NTSTATUS WINAPI NtDeleteAtom(RTL_ATOM);
3524 NTSYSAPI NTSTATUS WINAPI NtDeleteFile(POBJECT_ATTRIBUTES);
3525 NTSYSAPI NTSTATUS WINAPI NtDeleteKey(HANDLE);
3526 NTSYSAPI NTSTATUS WINAPI NtDeleteValueKey(HANDLE,const UNICODE_STRING *);
3527 NTSYSAPI NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
3528 NTSYSAPI NTSTATUS WINAPI NtDisplayString(PUNICODE_STRING);
3529 NTSYSAPI NTSTATUS WINAPI NtDuplicateObject(HANDLE,HANDLE,HANDLE,PHANDLE,ACCESS_MASK,ULONG,ULONG);
3530 NTSYSAPI NTSTATUS WINAPI NtDuplicateToken(HANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,PHANDLE);
3531 NTSYSAPI NTSTATUS WINAPI NtEnumerateKey(HANDLE,ULONG,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
3532 NTSYSAPI NTSTATUS WINAPI NtEnumerateValueKey(HANDLE,ULONG,KEY_VALUE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
3533 NTSYSAPI NTSTATUS WINAPI NtExtendSection(HANDLE,PLARGE_INTEGER);
3534 NTSYSAPI NTSTATUS WINAPI NtFilterToken(HANDLE,ULONG,TOKEN_GROUPS*,TOKEN_PRIVILEGES*,TOKEN_GROUPS*,HANDLE*);
3535 NTSYSAPI NTSTATUS WINAPI NtFindAtom(const WCHAR*,ULONG,RTL_ATOM*);
3536 NTSYSAPI NTSTATUS WINAPI NtFlushBuffersFile(HANDLE,IO_STATUS_BLOCK*);
3537 NTSYSAPI NTSTATUS WINAPI NtFlushInstructionCache(HANDLE,LPCVOID,SIZE_T);
3538 NTSYSAPI NTSTATUS WINAPI NtFlushKey(HANDLE);
3539 NTSYSAPI void WINAPI NtFlushProcessWriteBuffers(void);
3540 NTSYSAPI NTSTATUS WINAPI NtFlushVirtualMemory(HANDLE,LPCVOID*,SIZE_T*,ULONG);
3541 NTSYSAPI NTSTATUS WINAPI NtFlushWriteBuffer(VOID);
3542 NTSYSAPI NTSTATUS WINAPI NtFreeVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
3543 NTSYSAPI NTSTATUS WINAPI NtFsControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
3544 NTSYSAPI NTSTATUS WINAPI NtGetContextThread(HANDLE,CONTEXT*);
3545 NTSYSAPI ULONG WINAPI NtGetCurrentProcessorNumber(void);
3546 NTSYSAPI NTSTATUS WINAPI NtGetNlsSectionPtr(ULONG,ULONG,void*,void**,SIZE_T*);
3547 NTSYSAPI NTSTATUS WINAPI NtGetPlugPlayEvent(ULONG,ULONG,PVOID,ULONG);
3548 NTSYSAPI ULONG WINAPI NtGetTickCount(VOID);
3549 NTSYSAPI NTSTATUS WINAPI NtGetWriteWatch(HANDLE,ULONG,PVOID,SIZE_T,PVOID*,ULONG_PTR*,ULONG*);
3550 NTSYSAPI NTSTATUS WINAPI NtImpersonateAnonymousToken(HANDLE);
3551 NTSYSAPI NTSTATUS WINAPI NtImpersonateClientOfPort(HANDLE,PPORT_MESSAGE);
3552 NTSYSAPI NTSTATUS WINAPI NtImpersonateThread(HANDLE,HANDLE,PSECURITY_QUALITY_OF_SERVICE);
3553 NTSYSAPI NTSTATUS WINAPI NtInitializeRegistry(BOOLEAN);
3554 NTSYSAPI NTSTATUS WINAPI NtInitiatePowerAction(POWER_ACTION,SYSTEM_POWER_STATE,ULONG,BOOLEAN);
3555 NTSYSAPI NTSTATUS WINAPI NtIsProcessInJob(HANDLE,HANDLE);
3556 NTSYSAPI NTSTATUS WINAPI NtListenPort(HANDLE,PLPC_MESSAGE);
3557 NTSYSAPI NTSTATUS WINAPI NtLoadDriver(const UNICODE_STRING *);
3558 NTSYSAPI NTSTATUS WINAPI NtLoadKey(const OBJECT_ATTRIBUTES *,OBJECT_ATTRIBUTES *);
3559 NTSYSAPI NTSTATUS WINAPI NtLockFile(HANDLE,HANDLE,PIO_APC_ROUTINE,void*,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,ULONG*,BOOLEAN,BOOLEAN);
3560 NTSYSAPI NTSTATUS WINAPI NtLockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
3561 NTSYSAPI NTSTATUS WINAPI NtMakeTemporaryObject(HANDLE);
3562 NTSYSAPI NTSTATUS WINAPI NtMapViewOfSection(HANDLE,HANDLE,PVOID*,ULONG_PTR,SIZE_T,const LARGE_INTEGER*,SIZE_T*,SECTION_INHERIT,ULONG,ULONG);
3563 NTSYSAPI NTSTATUS WINAPI NtNotifyChangeDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,ULONG,BOOLEAN);
3564 NTSYSAPI NTSTATUS WINAPI NtNotifyChangeKey(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN);
3565 NTSYSAPI NTSTATUS WINAPI NtNotifyChangeMultipleKeys(HANDLE,ULONG,OBJECT_ATTRIBUTES*,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN);
3566 NTSYSAPI NTSTATUS WINAPI NtOpenDirectoryObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3567 NTSYSAPI NTSTATUS WINAPI NtOpenEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
3568 NTSYSAPI NTSTATUS WINAPI NtOpenEventPair(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3569 NTSYSAPI NTSTATUS WINAPI NtOpenFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG);
3570 NTSYSAPI NTSTATUS WINAPI NtOpenIoCompletion(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3571 NTSYSAPI NTSTATUS WINAPI NtOpenJobObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3572 NTSYSAPI NTSTATUS WINAPI NtOpenKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
3573 NTSYSAPI NTSTATUS WINAPI NtOpenKeyEx(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG);
3574 NTSYSAPI NTSTATUS WINAPI NtOpenKeyTransacted(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,HANDLE);
3575 NTSYSAPI NTSTATUS WINAPI NtOpenKeyTransactedEx(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,HANDLE);
3576 NTSYSAPI NTSTATUS WINAPI NtOpenKeyedEvent(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3577 NTSYSAPI NTSTATUS WINAPI NtOpenMutant(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3578 NTSYSAPI NTSTATUS WINAPI NtOpenObjectAuditAlarm(PUNICODE_STRING,PHANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,ACCESS_MASK,PPRIVILEGE_SET,BOOLEAN,BOOLEAN,PBOOLEAN);
3579 NTSYSAPI NTSTATUS WINAPI NtOpenProcess(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
3580 NTSYSAPI NTSTATUS WINAPI NtOpenProcessToken(HANDLE,DWORD,HANDLE *);
3581 NTSYSAPI NTSTATUS WINAPI NtOpenProcessTokenEx(HANDLE,DWORD,DWORD,HANDLE *);
3582 NTSYSAPI NTSTATUS WINAPI NtOpenSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3583 NTSYSAPI NTSTATUS WINAPI NtOpenSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3584 NTSYSAPI NTSTATUS WINAPI NtOpenSymbolicLinkObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3585 NTSYSAPI NTSTATUS WINAPI NtOpenThread(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
3586 NTSYSAPI NTSTATUS WINAPI NtOpenThreadToken(HANDLE,DWORD,BOOLEAN,HANDLE *);
3587 NTSYSAPI NTSTATUS WINAPI NtOpenThreadTokenEx(HANDLE,DWORD,BOOLEAN,DWORD,HANDLE *);
3588 NTSYSAPI NTSTATUS WINAPI NtOpenTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*);
3589 NTSYSAPI NTSTATUS WINAPI NtPowerInformation(POWER_INFORMATION_LEVEL,PVOID,ULONG,PVOID,ULONG);
3590 NTSYSAPI NTSTATUS WINAPI NtPrivilegeCheck(HANDLE,PPRIVILEGE_SET,PBOOLEAN);
3591 NTSYSAPI NTSTATUS WINAPI NtPrivilegeObjectAuditAlarm(PUNICODE_STRING,HANDLE,HANDLE,ULONG,PPRIVILEGE_SET,BOOLEAN);
3592 NTSYSAPI NTSTATUS WINAPI NtPrivilegedServiceAuditAlarm(PUNICODE_STRING,PUNICODE_STRING,HANDLE,PPRIVILEGE_SET,BOOLEAN);
3593 NTSYSAPI NTSTATUS WINAPI NtProtectVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG,ULONG*);
3594 NTSYSAPI NTSTATUS WINAPI NtPulseEvent(HANDLE,LONG*);
3595 NTSYSAPI NTSTATUS WINAPI NtQueueApcThread(HANDLE,PNTAPCFUNC,ULONG_PTR,ULONG_PTR,ULONG_PTR);
3596 NTSYSAPI NTSTATUS WINAPI NtQueryAttributesFile(const OBJECT_ATTRIBUTES*,FILE_BASIC_INFORMATION*);
3597 NTSYSAPI NTSTATUS WINAPI NtQueryDefaultLocale(BOOLEAN,LCID*);
3598 NTSYSAPI NTSTATUS WINAPI NtQueryDefaultUILanguage(LANGID*);
3599 NTSYSAPI NTSTATUS WINAPI NtQueryDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS,BOOLEAN,PUNICODE_STRING,BOOLEAN);
3600 NTSYSAPI NTSTATUS WINAPI NtQueryDirectoryObject(HANDLE,PDIRECTORY_BASIC_INFORMATION,ULONG,BOOLEAN,BOOLEAN,PULONG,PULONG);
3601 NTSYSAPI NTSTATUS WINAPI NtQueryEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,BOOLEAN,PVOID,ULONG,PULONG,BOOLEAN);
3602 NTSYSAPI NTSTATUS WINAPI NtQueryEvent(HANDLE,EVENT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
3603 NTSYSAPI NTSTATUS WINAPI NtQueryFullAttributesFile(const OBJECT_ATTRIBUTES*,FILE_NETWORK_OPEN_INFORMATION*);
3604 NTSYSAPI NTSTATUS WINAPI NtQueryInformationAtom(RTL_ATOM,ATOM_INFORMATION_CLASS,PVOID,ULONG,ULONG*);
3605 NTSYSAPI NTSTATUS WINAPI NtQueryInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,LONG,FILE_INFORMATION_CLASS);
3606 NTSYSAPI NTSTATUS WINAPI NtQueryInformationJobObject(HANDLE,JOBOBJECTINFOCLASS,PVOID,ULONG,PULONG);
3607 NTSYSAPI NTSTATUS WINAPI NtQueryInformationPort(HANDLE,PORT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
3608 NTSYSAPI NTSTATUS WINAPI NtQueryInformationProcess(HANDLE,PROCESSINFOCLASS,PVOID,ULONG,PULONG);
3609 NTSYSAPI NTSTATUS WINAPI NtQueryInformationThread(HANDLE,THREADINFOCLASS,PVOID,ULONG,PULONG);
3610 NTSYSAPI NTSTATUS WINAPI NtQueryInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG,PULONG);
3611 NTSYSAPI NTSTATUS WINAPI NtQueryInstallUILanguage(LANGID*);
3612 NTSYSAPI NTSTATUS WINAPI NtQueryIntervalProfile(KPROFILE_SOURCE,PULONG);
3613 NTSYSAPI NTSTATUS WINAPI NtQueryIoCompletion(HANDLE,IO_COMPLETION_INFORMATION_CLASS,PVOID,ULONG,PULONG);
3614 NTSYSAPI NTSTATUS WINAPI NtQueryKey(HANDLE,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
3615 NTSYSAPI NTSTATUS WINAPI NtQueryMultipleValueKey(HANDLE,PKEY_MULTIPLE_VALUE_INFORMATION,ULONG,PVOID,ULONG,PULONG);
3616 NTSYSAPI NTSTATUS WINAPI NtQueryMutant(HANDLE,MUTANT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
3617 NTSYSAPI NTSTATUS WINAPI NtQueryObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG, PULONG);
3618 NTSYSAPI NTSTATUS WINAPI NtQueryOpenSubKeys(POBJECT_ATTRIBUTES,PULONG);
3619 NTSYSAPI NTSTATUS WINAPI NtQueryPerformanceCounter(PLARGE_INTEGER, PLARGE_INTEGER);
3620 NTSYSAPI NTSTATUS WINAPI NtQuerySecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,ULONG,PULONG);
3621 NTSYSAPI NTSTATUS WINAPI NtQuerySection(HANDLE,SECTION_INFORMATION_CLASS,PVOID,SIZE_T,SIZE_T*);
3622 NTSYSAPI NTSTATUS WINAPI NtQuerySemaphore(HANDLE,SEMAPHORE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
3623 NTSYSAPI NTSTATUS WINAPI NtQuerySymbolicLinkObject(HANDLE,PUNICODE_STRING,PULONG);
3624 NTSYSAPI NTSTATUS WINAPI NtQuerySystemEnvironmentValue(PUNICODE_STRING,PWCHAR,ULONG,PULONG);
3625 NTSYSAPI NTSTATUS WINAPI NtQuerySystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG,PULONG);
3626 NTSYSAPI NTSTATUS WINAPI NtQuerySystemInformationEx(SYSTEM_INFORMATION_CLASS,void*,ULONG,void*,ULONG,ULONG*);
3627 NTSYSAPI NTSTATUS WINAPI NtQuerySystemTime(PLARGE_INTEGER);
3628 NTSYSAPI NTSTATUS WINAPI NtQueryTimer(HANDLE,TIMER_INFORMATION_CLASS,PVOID,ULONG,PULONG);
3629 NTSYSAPI NTSTATUS WINAPI NtQueryTimerResolution(PULONG,PULONG,PULONG);
3630 NTSYSAPI NTSTATUS WINAPI NtQueryValueKey(HANDLE,const UNICODE_STRING *,KEY_VALUE_INFORMATION_CLASS,void *,DWORD,DWORD *);
3631 NTSYSAPI NTSTATUS WINAPI NtQueryLicenseValue(const UNICODE_STRING *,ULONG *,PVOID,ULONG,ULONG *);
3632 NTSYSAPI NTSTATUS WINAPI NtQueryVirtualMemory(HANDLE,LPCVOID,MEMORY_INFORMATION_CLASS,PVOID,SIZE_T,SIZE_T*);
3633 NTSYSAPI NTSTATUS WINAPI NtQueryVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
3634 NTSYSAPI NTSTATUS WINAPI NtRaiseException(PEXCEPTION_RECORD,PCONTEXT,BOOL);
3635 NTSYSAPI NTSTATUS WINAPI NtRaiseHardError(NTSTATUS,ULONG,PUNICODE_STRING,PVOID*,HARDERROR_RESPONSE_OPTION,PHARDERROR_RESPONSE);
3636 NTSYSAPI NTSTATUS WINAPI NtReadFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,PLARGE_INTEGER,PULONG);
3637 NTSYSAPI NTSTATUS WINAPI NtReadFileScatter(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,FILE_SEGMENT_ELEMENT*,ULONG,PLARGE_INTEGER,PULONG);
3638 NTSYSAPI NTSTATUS WINAPI NtReadRequestData(HANDLE,PLPC_MESSAGE,ULONG,PVOID,ULONG,PULONG);
3639 NTSYSAPI NTSTATUS WINAPI NtReadVirtualMemory(HANDLE,const void*,void*,SIZE_T,SIZE_T*);
3640 NTSYSAPI NTSTATUS WINAPI NtRegisterThreadTerminatePort(HANDLE);
3641 NTSYSAPI NTSTATUS WINAPI NtReleaseKeyedEvent(HANDLE,const void*,BOOLEAN,const LARGE_INTEGER*);
3642 NTSYSAPI NTSTATUS WINAPI NtReleaseMutant(HANDLE,PLONG);
3643 NTSYSAPI NTSTATUS WINAPI NtReleaseSemaphore(HANDLE,ULONG,PULONG);
3644 NTSYSAPI NTSTATUS WINAPI NtRemoveIoCompletion(HANDLE,PULONG_PTR,PULONG_PTR,PIO_STATUS_BLOCK,PLARGE_INTEGER);
3645 NTSYSAPI NTSTATUS WINAPI NtRemoveIoCompletionEx(HANDLE,FILE_IO_COMPLETION_INFORMATION*,ULONG,ULONG*,LARGE_INTEGER*,BOOLEAN);
3646 NTSYSAPI NTSTATUS WINAPI NtRemoveProcessDebug(HANDLE,HANDLE);
3647 NTSYSAPI NTSTATUS WINAPI NtRenameKey(HANDLE,UNICODE_STRING*);
3648 NTSYSAPI NTSTATUS WINAPI NtReplaceKey(POBJECT_ATTRIBUTES,HANDLE,POBJECT_ATTRIBUTES);
3649 NTSYSAPI NTSTATUS WINAPI NtReplyPort(HANDLE,PLPC_MESSAGE);
3650 NTSYSAPI NTSTATUS WINAPI NtReplyWaitReceivePort(HANDLE,PULONG,PLPC_MESSAGE,PLPC_MESSAGE);
3651 NTSYSAPI NTSTATUS WINAPI NtReplyWaitReceivePortEx(HANDLE,PVOID*,PPORT_MESSAGE,PPORT_MESSAGE,PLARGE_INTEGER);
3652 NTSYSAPI NTSTATUS WINAPI NtReplyWaitReplyPort(HANDLE,PLPC_MESSAGE);
3653 NTSYSAPI NTSTATUS WINAPI NtRequestPort(HANDLE,PLPC_MESSAGE);
3654 NTSYSAPI NTSTATUS WINAPI NtRequestWaitReplyPort(HANDLE,PLPC_MESSAGE,PLPC_MESSAGE);
3655 NTSYSAPI NTSTATUS WINAPI NtResetEvent(HANDLE,LONG*);
3656 NTSYSAPI NTSTATUS WINAPI NtResetWriteWatch(HANDLE,PVOID,SIZE_T);
3657 NTSYSAPI NTSTATUS WINAPI NtRestoreKey(HANDLE,HANDLE,ULONG);
3658 NTSYSAPI NTSTATUS WINAPI NtResumeProcess(HANDLE);
3659 NTSYSAPI NTSTATUS WINAPI NtResumeThread(HANDLE,PULONG);
3660 NTSYSAPI NTSTATUS WINAPI NtSaveKey(HANDLE,HANDLE);
3661 NTSYSAPI NTSTATUS WINAPI NtSecureConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PSID,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
3662 NTSYSAPI NTSTATUS WINAPI NtSetContextThread(HANDLE,const CONTEXT*);
3663 NTSYSAPI NTSTATUS WINAPI NtSetDefaultHardErrorPort(HANDLE);
3664 NTSYSAPI NTSTATUS WINAPI NtSetDefaultLocale(BOOLEAN,LCID);
3665 NTSYSAPI NTSTATUS WINAPI NtSetDefaultUILanguage(LANGID);
3666 NTSYSAPI NTSTATUS WINAPI NtSetEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG);
3667 NTSYSAPI NTSTATUS WINAPI NtSetEvent(HANDLE,LONG*);
3668 NTSYSAPI NTSTATUS WINAPI NtSetHighEventPair(HANDLE);
3669 NTSYSAPI NTSTATUS WINAPI NtSetHighWaitLowEventPair(HANDLE);
3670 NTSYSAPI NTSTATUS WINAPI NtSetHighWaitLowThread(VOID);
3671 NTSYSAPI NTSTATUS WINAPI NtSetInformationDebugObject(HANDLE,DEBUGOBJECTINFOCLASS,PVOID,ULONG,ULONG*);
3672 NTSYSAPI NTSTATUS WINAPI NtSetInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS);
3673 NTSYSAPI NTSTATUS WINAPI NtSetInformationJobObject(HANDLE,JOBOBJECTINFOCLASS,PVOID,ULONG);
3674 NTSYSAPI NTSTATUS WINAPI NtSetInformationKey(HANDLE,const int,PVOID,ULONG);
3675 NTSYSAPI NTSTATUS WINAPI NtSetInformationObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG);
3676 NTSYSAPI NTSTATUS WINAPI NtSetInformationProcess(HANDLE,PROCESS_INFORMATION_CLASS,PVOID,ULONG);
3677 NTSYSAPI NTSTATUS WINAPI NtSetInformationThread(HANDLE,THREADINFOCLASS,LPCVOID,ULONG);
3678 NTSYSAPI NTSTATUS WINAPI NtSetInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG);
3679 NTSYSAPI NTSTATUS WINAPI NtSetIntervalProfile(ULONG,KPROFILE_SOURCE);
3680 NTSYSAPI NTSTATUS WINAPI NtSetIoCompletion(HANDLE,ULONG_PTR,ULONG_PTR,NTSTATUS,SIZE_T);
3681 NTSYSAPI NTSTATUS WINAPI NtSetLdtEntries(ULONG,LDT_ENTRY,ULONG,LDT_ENTRY);
3682 NTSYSAPI NTSTATUS WINAPI NtSetLowEventPair(HANDLE);
3683 NTSYSAPI NTSTATUS WINAPI NtSetLowWaitHighEventPair(HANDLE);
3684 NTSYSAPI NTSTATUS WINAPI NtSetLowWaitHighThread(VOID);
3685 NTSYSAPI NTSTATUS WINAPI NtSetPowerRequest(HANDLE,POWER_REQUEST_TYPE);
3686 NTSYSAPI NTSTATUS WINAPI NtSetSecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
3687 NTSYSAPI NTSTATUS WINAPI NtSetSystemEnvironmentValue(PUNICODE_STRING,PUNICODE_STRING);
3688 NTSYSAPI NTSTATUS WINAPI NtSetSystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG);
3689 NTSYSAPI NTSTATUS WINAPI NtSetSystemPowerState(POWER_ACTION,SYSTEM_POWER_STATE,ULONG);
3690 NTSYSAPI NTSTATUS WINAPI NtSetSystemTime(const LARGE_INTEGER*,LARGE_INTEGER*);
3691 NTSYSAPI NTSTATUS WINAPI NtSetThreadExecutionState(EXECUTION_STATE,EXECUTION_STATE*);
3692 NTSYSAPI NTSTATUS WINAPI NtSetTimer(HANDLE, const LARGE_INTEGER*, PTIMER_APC_ROUTINE, PVOID, BOOLEAN, ULONG, BOOLEAN*);
3693 NTSYSAPI NTSTATUS WINAPI NtSetTimerResolution(ULONG,BOOLEAN,PULONG);
3694 NTSYSAPI NTSTATUS WINAPI NtSetValueKey(HANDLE,const UNICODE_STRING *,ULONG,ULONG,const void *,ULONG);
3695 NTSYSAPI NTSTATUS WINAPI NtSetVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
3696 NTSYSAPI NTSTATUS WINAPI NtSignalAndWaitForSingleObject(HANDLE,HANDLE,BOOLEAN,const LARGE_INTEGER*);
3697 NTSYSAPI NTSTATUS WINAPI NtShutdownSystem(SHUTDOWN_ACTION);
3698 NTSYSAPI NTSTATUS WINAPI NtStartProfile(HANDLE);
3699 NTSYSAPI NTSTATUS WINAPI NtStopProfile(HANDLE);
3700 NTSYSAPI NTSTATUS WINAPI NtSuspendProcess(HANDLE);
3701 NTSYSAPI NTSTATUS WINAPI NtSuspendThread(HANDLE,PULONG);
3702 NTSYSAPI NTSTATUS WINAPI NtSystemDebugControl(SYSDBG_COMMAND,PVOID,ULONG,PVOID,ULONG,PULONG);
3703 NTSYSAPI NTSTATUS WINAPI NtTerminateJobObject(HANDLE,NTSTATUS);
3704 NTSYSAPI NTSTATUS WINAPI NtTerminateProcess(HANDLE,LONG);
3705 NTSYSAPI NTSTATUS WINAPI NtTerminateThread(HANDLE,LONG);
3706 NTSYSAPI NTSTATUS WINAPI NtTestAlert(VOID);
3707 NTSYSAPI NTSTATUS WINAPI NtUnloadDriver(const UNICODE_STRING *);
3708 NTSYSAPI NTSTATUS WINAPI NtUnloadKey(POBJECT_ATTRIBUTES);
3709 NTSYSAPI NTSTATUS WINAPI NtUnloadKeyEx(POBJECT_ATTRIBUTES,HANDLE);
3710 NTSYSAPI NTSTATUS WINAPI NtUnlockFile(HANDLE,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,PULONG);
3711 NTSYSAPI NTSTATUS WINAPI NtUnlockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
3712 NTSYSAPI NTSTATUS WINAPI NtUnmapViewOfSection(HANDLE,PVOID);
3713 NTSYSAPI NTSTATUS WINAPI NtVdmControl(ULONG,PVOID);
3714 NTSYSAPI NTSTATUS WINAPI NtWaitForDebugEvent(HANDLE,BOOLEAN,LARGE_INTEGER*,DBGUI_WAIT_STATE_CHANGE*);
3715 NTSYSAPI NTSTATUS WINAPI NtWaitForKeyedEvent(HANDLE,const void*,BOOLEAN,const LARGE_INTEGER*);
3716 NTSYSAPI NTSTATUS WINAPI NtWaitForSingleObject(HANDLE,BOOLEAN,const LARGE_INTEGER*);
3717 NTSYSAPI NTSTATUS WINAPI NtWaitForMultipleObjects(ULONG,const HANDLE*,BOOLEAN,BOOLEAN,const LARGE_INTEGER*);
3718 NTSYSAPI NTSTATUS WINAPI NtWaitHighEventPair(HANDLE);
3719 NTSYSAPI NTSTATUS WINAPI NtWaitLowEventPair(HANDLE);
3720 NTSYSAPI NTSTATUS WINAPI NtWriteFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,const void*,ULONG,PLARGE_INTEGER,PULONG);
3721 NTSYSAPI NTSTATUS WINAPI NtWriteFileGather(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,FILE_SEGMENT_ELEMENT*,ULONG,PLARGE_INTEGER,PULONG);
3722 NTSYSAPI NTSTATUS WINAPI NtWriteRequestData(HANDLE,PLPC_MESSAGE,ULONG,PVOID,ULONG,PULONG);
3723 NTSYSAPI NTSTATUS WINAPI NtWriteVirtualMemory(HANDLE,void*,const void*,SIZE_T,SIZE_T*);
3724 NTSYSAPI NTSTATUS WINAPI NtYieldExecution(void);
3726 NTSYSAPI NTSTATUS WINAPI RtlAbsoluteToSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PULONG);
3727 NTSYSAPI void WINAPI RtlAcquirePebLock(void);
3728 NTSYSAPI BYTE WINAPI RtlAcquireResourceExclusive(LPRTL_RWLOCK,BYTE);
3729 NTSYSAPI BYTE WINAPI RtlAcquireResourceShared(LPRTL_RWLOCK,BYTE);
3730 NTSYSAPI void WINAPI RtlAcquireSRWLockExclusive(RTL_SRWLOCK*);
3731 NTSYSAPI void WINAPI RtlAcquireSRWLockShared(RTL_SRWLOCK*);
3732 NTSYSAPI NTSTATUS WINAPI RtlActivateActivationContext(DWORD,HANDLE,ULONG_PTR*);
3733 NTSYSAPI NTSTATUS WINAPI RtlActivateActivationContextEx(ULONG,TEB*,HANDLE,ULONG_PTR*);
3734 NTSYSAPI NTSTATUS WINAPI RtlAddAce(PACL,DWORD,DWORD,PACE_HEADER,DWORD);
3735 NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAce(PACL,DWORD,DWORD,PSID);
3736 NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
3737 NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedObjectAce(PACL,DWORD,DWORD,DWORD,GUID*,GUID*,PSID);
3738 NTSYSAPI NTSTATUS WINAPI RtlAddAccessDeniedAce(PACL,DWORD,DWORD,PSID);
3739 NTSYSAPI NTSTATUS WINAPI RtlAddAccessDeniedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
3740 NTSYSAPI NTSTATUS WINAPI RtlAddAccessDeniedObjectAce(PACL,DWORD,DWORD,DWORD,GUID*,GUID*,PSID);
3741 NTSYSAPI NTSTATUS WINAPI RtlAddAtomToAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*);
3742 NTSYSAPI NTSTATUS WINAPI RtlAddAuditAccessAce(PACL,DWORD,DWORD,PSID,BOOL,BOOL);
3743 NTSYSAPI NTSTATUS WINAPI RtlAddAuditAccessAceEx(PACL,DWORD,DWORD,DWORD,PSID,BOOL,BOOL);
3744 NTSYSAPI NTSTATUS WINAPI RtlAddAuditAccessObjectAce(PACL,DWORD,DWORD,DWORD,GUID*,GUID*,PSID,BOOL,BOOL);
3745 NTSYSAPI NTSTATUS WINAPI RtlAddMandatoryAce(PACL,DWORD,DWORD,DWORD,DWORD,PSID);
3746 NTSYSAPI void WINAPI RtlAddRefActivationContext(HANDLE);
3747 NTSYSAPI PVOID WINAPI RtlAddVectoredExceptionHandler(ULONG,PVECTORED_EXCEPTION_HANDLER);
3748 NTSYSAPI NTSTATUS WINAPI RtlAdjustPrivilege(ULONG,BOOLEAN,BOOLEAN,PBOOLEAN);
3749 NTSYSAPI NTSTATUS WINAPI RtlAllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PSID *);
3750 NTSYSAPI RTL_HANDLE * WINAPI RtlAllocateHandle(RTL_HANDLE_TABLE *,ULONG *);
3751 NTSYSAPI PVOID WINAPI RtlAllocateHeap(HANDLE,ULONG,SIZE_T) __WINE_ALLOC_SIZE(3);
3752 NTSYSAPI WCHAR WINAPI RtlAnsiCharToUnicodeChar(LPSTR *);
3753 NTSYSAPI DWORD WINAPI RtlAnsiStringToUnicodeSize(const STRING *);
3754 NTSYSAPI NTSTATUS WINAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING,PCANSI_STRING,BOOLEAN);
3755 NTSYSAPI NTSTATUS WINAPI RtlAppendAsciizToString(STRING *,LPCSTR);
3756 NTSYSAPI NTSTATUS WINAPI RtlAppendStringToString(STRING *,const STRING *);
3757 NTSYSAPI NTSTATUS WINAPI RtlAppendUnicodeStringToString(UNICODE_STRING *,const UNICODE_STRING *);
3758 NTSYSAPI NTSTATUS WINAPI RtlAppendUnicodeToString(UNICODE_STRING *,LPCWSTR);
3759 NTSYSAPI BOOLEAN WINAPI RtlAreAllAccessesGranted(ACCESS_MASK,ACCESS_MASK);
3760 NTSYSAPI BOOLEAN WINAPI RtlAreAnyAccessesGranted(ACCESS_MASK,ACCESS_MASK);
3761 NTSYSAPI BOOLEAN WINAPI RtlAreBitsSet(PCRTL_BITMAP,ULONG,ULONG);
3762 NTSYSAPI BOOLEAN WINAPI RtlAreBitsClear(PCRTL_BITMAP,ULONG,ULONG);
3763 NTSYSAPI NTSTATUS WINAPI RtlCharToInteger(PCSZ,ULONG,PULONG);
3764 NTSYSAPI NTSTATUS WINAPI RtlCheckRegistryKey(ULONG, PWSTR);
3765 NTSYSAPI void WINAPI RtlClearAllBits(PRTL_BITMAP);
3766 NTSYSAPI void WINAPI RtlClearBits(PRTL_BITMAP,ULONG,ULONG);
3767 NTSYSAPI NTSTATUS WINAPI RtlCreateActivationContext(HANDLE*,const void*);
3768 NTSYSAPI PDEBUG_BUFFER WINAPI RtlCreateQueryDebugBuffer(ULONG,BOOLEAN);
3769 NTSYSAPI NTSTATUS WINAPI RtlCreateRegistryKey(ULONG,PWSTR);
3770 NTSYSAPI ULONG WINAPI RtlCompactHeap(HANDLE,ULONG);
3771 NTSYSAPI LONG WINAPI RtlCompareString(const STRING*,const STRING*,BOOLEAN);
3772 NTSYSAPI LONG WINAPI RtlCompareUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
3773 NTSYSAPI LONG WINAPI RtlCompareUnicodeStrings(const WCHAR*,SIZE_T,const WCHAR*,SIZE_T,BOOLEAN);
3774 NTSYSAPI NTSTATUS WINAPI RtlCompressBuffer(USHORT,PUCHAR,ULONG,PUCHAR,ULONG,ULONG,PULONG,PVOID);
3775 NTSYSAPI DWORD WINAPI RtlComputeCrc32(DWORD,const BYTE*,INT);
3776 NTSYSAPI NTSTATUS WINAPI RtlConvertSidToUnicodeString(PUNICODE_STRING,PSID,BOOLEAN);
3777 NTSYSAPI NTSTATUS WINAPI RtlConvertToAutoInheritSecurityObject(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,GUID*,BOOL,PGENERIC_MAPPING);
3778 NTSYSAPI void WINAPI RtlCopyLuid(PLUID,const LUID*);
3779 NTSYSAPI void WINAPI RtlCopyLuidAndAttributesArray(ULONG,const LUID_AND_ATTRIBUTES*,PLUID_AND_ATTRIBUTES);
3780 NTSYSAPI BOOLEAN WINAPI RtlCopySid(DWORD,PSID,PSID);
3781 NTSYSAPI NTSTATUS WINAPI RtlCopySecurityDescriptor(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR);
3782 NTSYSAPI void WINAPI RtlCopyString(STRING*,const STRING*);
3783 NTSYSAPI void WINAPI RtlCopyUnicodeString(UNICODE_STRING*,const UNICODE_STRING*);
3784 NTSYSAPI NTSTATUS WINAPI RtlCreateAcl(PACL,DWORD,DWORD);
3785 NTSYSAPI NTSTATUS WINAPI RtlCreateAtomTable(ULONG,RTL_ATOM_TABLE*);
3786 NTSYSAPI NTSTATUS WINAPI RtlCreateEnvironment(BOOLEAN, PWSTR*);
3787 NTSYSAPI HANDLE WINAPI RtlCreateHeap(ULONG,PVOID,SIZE_T,SIZE_T,PVOID,PRTL_HEAP_DEFINITION);
3788 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*);
3789 NTSYSAPI NTSTATUS WINAPI RtlCreateProcessParametersEx(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*,ULONG);
3790 NTSYSAPI NTSTATUS WINAPI RtlCreateSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD);
3791 NTSYSAPI NTSTATUS WINAPI RtlCreateTimerQueue(PHANDLE);
3792 NTSYSAPI NTSTATUS WINAPI RtlCreateTimer(PHANDLE, HANDLE, RTL_WAITORTIMERCALLBACKFUNC, PVOID, DWORD, DWORD, ULONG);
3793 NTSYSAPI BOOLEAN WINAPI RtlCreateUnicodeString(PUNICODE_STRING,LPCWSTR);
3794 NTSYSAPI BOOLEAN WINAPI RtlCreateUnicodeStringFromAsciiz(PUNICODE_STRING,LPCSTR);
3795 NTSYSAPI NTSTATUS WINAPI RtlCreateUserProcess(UNICODE_STRING*,ULONG,RTL_USER_PROCESS_PARAMETERS*,SECURITY_DESCRIPTOR*,SECURITY_DESCRIPTOR*,HANDLE,BOOLEAN,HANDLE,HANDLE,RTL_USER_PROCESS_INFORMATION*);
3796 NTSYSAPI NTSTATUS WINAPI RtlCreateUserThread(HANDLE,SECURITY_DESCRIPTOR*,BOOLEAN,PVOID,SIZE_T,SIZE_T,PRTL_THREAD_START_ROUTINE,void*,HANDLE*,CLIENT_ID*);
3797 NTSYSAPI NTSTATUS WINAPI RtlCreateUserStack(SIZE_T,SIZE_T,ULONG,SIZE_T,SIZE_T,INITIAL_TEB*);
3798 NTSYSAPI NTSTATUS WINAPI RtlCustomCPToUnicodeN(CPTABLEINFO*,WCHAR*,DWORD,DWORD*,const char*,DWORD);
3799 NTSYSAPI void WINAPI RtlDeactivateActivationContext(DWORD,ULONG_PTR);
3800 NTSYSAPI PVOID WINAPI RtlDecodePointer(PVOID);
3801 NTSYSAPI NTSTATUS WINAPI RtlDecompressBuffer(USHORT,PUCHAR,ULONG,PUCHAR,ULONG,PULONG);
3802 NTSYSAPI NTSTATUS WINAPI RtlDecompressFragment(USHORT,PUCHAR,ULONG,PUCHAR,ULONG,ULONG,PULONG,PVOID);
3803 NTSYSAPI NTSTATUS WINAPI RtlDeleteAce(PACL,DWORD);
3804 NTSYSAPI NTSTATUS WINAPI RtlDeleteAtomFromAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
3805 NTSYSAPI NTSTATUS WINAPI RtlDeleteCriticalSection(RTL_CRITICAL_SECTION *);
3806 NTSYSAPI NTSTATUS WINAPI RtlDeleteRegistryValue(ULONG, PCWSTR, PCWSTR);
3807 NTSYSAPI void WINAPI RtlDeleteResource(LPRTL_RWLOCK);
3808 NTSYSAPI NTSTATUS WINAPI RtlDeleteSecurityObject(PSECURITY_DESCRIPTOR*);
3809 NTSYSAPI NTSTATUS WINAPI RtlDeleteTimer(HANDLE, HANDLE, HANDLE);
3810 NTSYSAPI NTSTATUS WINAPI RtlDeleteTimerQueueEx(HANDLE, HANDLE);
3811 NTSYSAPI PRTL_USER_PROCESS_PARAMETERS WINAPI RtlDeNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
3812 NTSYSAPI NTSTATUS WINAPI RtlDeregisterWait(HANDLE);
3813 NTSYSAPI NTSTATUS WINAPI RtlDeregisterWaitEx(HANDLE,HANDLE);
3814 NTSYSAPI NTSTATUS WINAPI RtlDestroyAtomTable(RTL_ATOM_TABLE);
3815 NTSYSAPI NTSTATUS WINAPI RtlDestroyEnvironment(PWSTR);
3816 NTSYSAPI NTSTATUS WINAPI RtlDestroyHandleTable(RTL_HANDLE_TABLE *);
3817 NTSYSAPI HANDLE WINAPI RtlDestroyHeap(HANDLE);
3818 NTSYSAPI void WINAPI RtlDestroyProcessParameters(RTL_USER_PROCESS_PARAMETERS*);
3819 NTSYSAPI NTSTATUS WINAPI RtlDestroyQueryDebugBuffer(PDEBUG_BUFFER);
3820 NTSYSAPI DOS_PATHNAME_TYPE WINAPI RtlDetermineDosPathNameType_U(PCWSTR);
3821 NTSYSAPI BOOLEAN WINAPI RtlDllShutdownInProgress(void);
3822 NTSYSAPI BOOLEAN WINAPI RtlDoesFileExists_U(LPCWSTR);
3823 NTSYSAPI BOOLEAN WINAPI RtlDosPathNameToNtPathName_U(PCWSTR,PUNICODE_STRING,PWSTR*,CURDIR*);
3824 NTSYSAPI NTSTATUS WINAPI RtlDosPathNameToNtPathName_U_WithStatus(PCWSTR,PUNICODE_STRING,PWSTR*,CURDIR*);
3825 NTSYSAPI ULONG WINAPI RtlDosSearchPath_U(LPCWSTR, LPCWSTR, LPCWSTR, ULONG, LPWSTR, LPWSTR*);
3826 NTSYSAPI WCHAR WINAPI RtlDowncaseUnicodeChar(WCHAR);
3827 NTSYSAPI NTSTATUS WINAPI RtlDowncaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
3828 NTSYSAPI void WINAPI RtlDumpResource(LPRTL_RWLOCK);
3829 NTSYSAPI NTSTATUS WINAPI RtlDuplicateUnicodeString(int,const UNICODE_STRING*,UNICODE_STRING*);
3830 NTSYSAPI NTSTATUS WINAPI RtlEmptyAtomTable(RTL_ATOM_TABLE,BOOLEAN);
3831 NTSYSAPI PVOID WINAPI RtlEncodePointer(PVOID);
3832 NTSYSAPI NTSTATUS WINAPI RtlEnterCriticalSection(RTL_CRITICAL_SECTION *);
3833 NTSYSAPI void WINAPI RtlEraseUnicodeString(UNICODE_STRING*);
3834 NTSYSAPI NTSTATUS WINAPI RtlEqualComputerName(const UNICODE_STRING*,const UNICODE_STRING*);
3835 NTSYSAPI NTSTATUS WINAPI RtlEqualDomainName(const UNICODE_STRING*,const UNICODE_STRING*);
3836 NTSYSAPI BOOLEAN WINAPI RtlEqualLuid(const LUID*,const LUID*);
3837 NTSYSAPI BOOL WINAPI RtlEqualPrefixSid(PSID,PSID);
3838 NTSYSAPI BOOL WINAPI RtlEqualSid(PSID,PSID);
3839 NTSYSAPI BOOLEAN WINAPI RtlEqualString(const STRING*,const STRING*,BOOLEAN);
3840 NTSYSAPI BOOLEAN WINAPI RtlEqualUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
3841 NTSYSAPI void DECLSPEC_NORETURN WINAPI RtlExitUserProcess(ULONG);
3842 NTSYSAPI void DECLSPEC_NORETURN WINAPI RtlExitUserThread(ULONG);
3843 NTSYSAPI NTSTATUS WINAPI RtlExpandEnvironmentStrings(const WCHAR*,WCHAR*,SIZE_T,WCHAR*,SIZE_T,SIZE_T*);
3844 NTSYSAPI NTSTATUS WINAPI RtlExpandEnvironmentStrings_U(PCWSTR, const UNICODE_STRING*, UNICODE_STRING*, ULONG*);
3845 NTSYSAPI NTSTATUS WINAPI RtlFindActivationContextSectionString(ULONG,const GUID*,ULONG,const UNICODE_STRING*,PVOID);
3846 NTSYSAPI NTSTATUS WINAPI RtlFindActivationContextSectionGuid(ULONG,const GUID*,ULONG,const GUID*,PVOID);
3847 NTSYSAPI NTSTATUS WINAPI RtlFindCharInUnicodeString(int,const UNICODE_STRING*,const UNICODE_STRING*,USHORT*);
3848 NTSYSAPI ULONG WINAPI RtlFindClearBits(PCRTL_BITMAP,ULONG,ULONG);
3849 NTSYSAPI ULONG WINAPI RtlFindClearBitsAndSet(PRTL_BITMAP,ULONG,ULONG);
3850 NTSYSAPI ULONG WINAPI RtlFindClearRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
3851 NTSYSAPI ULONG WINAPI RtlFindLastBackwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
3852 NTSYSAPI ULONG WINAPI RtlFindLastBackwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
3853 NTSYSAPI CCHAR WINAPI RtlFindLeastSignificantBit(ULONGLONG);
3854 NTSYSAPI ULONG WINAPI RtlFindLongestRunSet(PCRTL_BITMAP,PULONG);
3855 NTSYSAPI ULONG WINAPI RtlFindLongestRunClear(PCRTL_BITMAP,PULONG);
3856 NTSYSAPI NTSTATUS WINAPI RtlFindMessage(HMODULE,ULONG,ULONG,ULONG,const MESSAGE_RESOURCE_ENTRY**);
3857 NTSYSAPI CCHAR WINAPI RtlFindMostSignificantBit(ULONGLONG);
3858 NTSYSAPI ULONG WINAPI RtlFindNextForwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
3859 NTSYSAPI ULONG WINAPI RtlFindNextForwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
3860 NTSYSAPI ULONG WINAPI RtlFindSetBits(PCRTL_BITMAP,ULONG,ULONG);
3861 NTSYSAPI ULONG WINAPI RtlFindSetBitsAndClear(PRTL_BITMAP,ULONG,ULONG);
3862 NTSYSAPI ULONG WINAPI RtlFindSetRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
3863 NTSYSAPI BOOLEAN WINAPI RtlFirstFreeAce(PACL,PACE_HEADER *);
3864 NTSYSAPI NTSTATUS WINAPI RtlFlsAlloc(PFLS_CALLBACK_FUNCTION,ULONG *);
3865 NTSYSAPI NTSTATUS WINAPI RtlFlsFree(ULONG);
3866 NTSYSAPI NTSTATUS WINAPI RtlFlsGetValue(ULONG,void **);
3867 NTSYSAPI NTSTATUS WINAPI RtlFlsSetValue(ULONG,void *);
3868 NTSYSAPI NTSTATUS WINAPI RtlFormatCurrentUserKeyPath(PUNICODE_STRING);
3869 NTSYSAPI NTSTATUS WINAPI RtlFormatMessage(LPCWSTR,ULONG,BOOLEAN,BOOLEAN,BOOLEAN,__ms_va_list *,LPWSTR,ULONG,ULONG*);
3870 NTSYSAPI NTSTATUS WINAPI RtlFormatMessageEx(LPCWSTR,ULONG,BOOLEAN,BOOLEAN,BOOLEAN,__ms_va_list *,LPWSTR,ULONG,ULONG*,ULONG);
3871 NTSYSAPI void WINAPI RtlFreeAnsiString(PANSI_STRING);
3872 NTSYSAPI BOOLEAN WINAPI RtlFreeHandle(RTL_HANDLE_TABLE *,RTL_HANDLE *);
3873 NTSYSAPI BOOLEAN WINAPI RtlFreeHeap(HANDLE,ULONG,PVOID);
3874 NTSYSAPI void WINAPI RtlFreeOemString(POEM_STRING);
3875 NTSYSAPI DWORD WINAPI RtlFreeSid(PSID);
3876 NTSYSAPI void WINAPI RtlFreeThreadActivationContextStack(void);
3877 NTSYSAPI void WINAPI RtlFreeUnicodeString(PUNICODE_STRING);
3878 NTSYSAPI void WINAPI RtlFreeUserStack(void*);
3879 NTSYSAPI NTSTATUS WINAPI RtlGetAce(PACL,DWORD,LPVOID *);
3880 NTSYSAPI NTSTATUS WINAPI RtlGetActiveActivationContext(HANDLE*);
3881 NTSYSAPI NTSTATUS WINAPI RtlGetCompressionWorkSpaceSize(USHORT,PULONG,PULONG);
3882 NTSYSAPI NTSTATUS WINAPI RtlGetControlSecurityDescriptor(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL,LPDWORD);
3883 NTSYSAPI ULONG WINAPI RtlGetCurrentDirectory_U(ULONG, LPWSTR);
3884 NTSYSAPI PEB * WINAPI RtlGetCurrentPeb(void);
3885 NTSYSAPI NTSTATUS WINAPI RtlGetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
3886 NTSYSAPI NTSTATUS WINAPI RtlGetExePath(PCWSTR,PWSTR*);
3887 NTSYSAPI TEB_ACTIVE_FRAME * WINAPI RtlGetFrame(void);
3888 NTSYSAPI ULONG WINAPI RtlGetFullPathName_U(PCWSTR,ULONG,PWSTR,PWSTR*);
3889 NTSYSAPI NTSTATUS WINAPI RtlGetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
3890 NTSYSAPI NTSTATUS WINAPI RtlGetLastNtStatus(void);
3891 NTSYSAPI DWORD WINAPI RtlGetLastWin32Error(void);
3892 NTSYSAPI DWORD WINAPI RtlGetLongestNtPathLength(void);
3893 NTSYSAPI ULONG WINAPI RtlGetNtGlobalFlags(void);
3894 NTSYSAPI BOOLEAN WINAPI RtlGetNtProductType(LPDWORD);
3895 NTSYSAPI NTSTATUS WINAPI RtlGetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
3896 NTSYSAPI ULONG WINAPI RtlGetProcessHeaps(ULONG,HANDLE*);
3897 NTSYSAPI NTSTATUS WINAPI RtlGetProcessPreferredUILanguages(DWORD,ULONG*,WCHAR*,ULONG*);
3898 NTSYSAPI NTSTATUS WINAPI RtlGetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
3899 NTSYSAPI NTSTATUS WINAPI RtlGetSearchPath(PWSTR*);
3900 NTSYSAPI NTSTATUS WINAPI RtlGetSystemPreferredUILanguages(DWORD,ULONG,ULONG*,WCHAR*,ULONG*);
3901 NTSYSAPI LONGLONG WINAPI RtlGetSystemTimePrecise(void);
3902 NTSYSAPI DWORD WINAPI RtlGetThreadErrorMode(void);
3903 NTSYSAPI NTSTATUS WINAPI RtlGetThreadPreferredUILanguages(DWORD,ULONG*,WCHAR*,ULONG*);
3904 NTSYSAPI NTSTATUS WINAPI RtlGetUserPreferredUILanguages(DWORD,ULONG,ULONG*,WCHAR*,ULONG*);
3905 NTSYSAPI NTSTATUS WINAPI RtlGetVersion(RTL_OSVERSIONINFOEXW*);
3906 NTSYSAPI NTSTATUS WINAPI RtlGUIDFromString(PUNICODE_STRING,GUID*);
3907 NTSYSAPI PSID_IDENTIFIER_AUTHORITY WINAPI RtlIdentifierAuthoritySid(PSID);
3908 NTSYSAPI NTSTATUS WINAPI RtlIdnToAscii(DWORD,const WCHAR*,INT,WCHAR*,INT*);
3909 NTSYSAPI NTSTATUS WINAPI RtlIdnToNameprepUnicode(DWORD,const WCHAR*,INT,WCHAR*,INT*);
3910 NTSYSAPI NTSTATUS WINAPI RtlIdnToUnicode(DWORD,const WCHAR*,INT,WCHAR*,INT*);
3911 NTSYSAPI PVOID WINAPI RtlImageDirectoryEntryToData(HMODULE,BOOL,WORD,ULONG *);
3912 NTSYSAPI PIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE);
3913 NTSYSAPI PIMAGE_SECTION_HEADER WINAPI RtlImageRvaToSection(const IMAGE_NT_HEADERS *,HMODULE,DWORD);
3914 NTSYSAPI PVOID WINAPI RtlImageRvaToVa(const IMAGE_NT_HEADERS *,HMODULE,DWORD,IMAGE_SECTION_HEADER **);
3915 NTSYSAPI NTSTATUS WINAPI RtlImpersonateSelf(SECURITY_IMPERSONATION_LEVEL);
3916 NTSYSAPI void WINAPI RtlInitString(PSTRING,PCSZ);
3917 NTSYSAPI void WINAPI RtlInitAnsiString(PANSI_STRING,PCSZ);
3918 NTSYSAPI NTSTATUS WINAPI RtlInitAnsiStringEx(PANSI_STRING,PCSZ);
3919 NTSYSAPI void WINAPI RtlInitCodePageTable(USHORT*,CPTABLEINFO*);
3920 NTSYSAPI void WINAPI RtlInitNlsTables(USHORT*,USHORT*,USHORT*,NLSTABLEINFO*);
3921 NTSYSAPI void WINAPI RtlInitUnicodeString(PUNICODE_STRING,PCWSTR);
3922 NTSYSAPI NTSTATUS WINAPI RtlInitUnicodeStringEx(PUNICODE_STRING,PCWSTR);
3923 NTSYSAPI void WINAPI RtlInitializeBitMap(PRTL_BITMAP,PULONG,ULONG);
3924 NTSYSAPI void WINAPI RtlInitializeConditionVariable(RTL_CONDITION_VARIABLE *);
3925 NTSYSAPI NTSTATUS WINAPI RtlInitializeCriticalSection(RTL_CRITICAL_SECTION *);
3926 NTSYSAPI NTSTATUS WINAPI RtlInitializeCriticalSectionAndSpinCount(RTL_CRITICAL_SECTION *,ULONG);
3927 NTSYSAPI NTSTATUS WINAPI RtlInitializeCriticalSectionEx(RTL_CRITICAL_SECTION *,ULONG,ULONG);
3928 NTSYSAPI void WINAPI RtlInitializeHandleTable(ULONG,ULONG,RTL_HANDLE_TABLE *);
3929 NTSYSAPI void WINAPI RtlInitializeResource(LPRTL_RWLOCK);
3930 NTSYSAPI void WINAPI RtlInitializeSRWLock(RTL_SRWLOCK*);
3931 NTSYSAPI BOOL WINAPI RtlInitializeSid(PSID,PSID_IDENTIFIER_AUTHORITY,BYTE);
3932 NTSYSAPI NTSTATUS WINAPI RtlInt64ToUnicodeString(ULONGLONG,ULONG,UNICODE_STRING *);
3933 NTSYSAPI NTSTATUS WINAPI RtlIntegerToChar(ULONG,ULONG,ULONG,PCHAR);
3934 NTSYSAPI NTSTATUS WINAPI RtlIntegerToUnicodeString(ULONG,ULONG,UNICODE_STRING *);
3935 NTSYSAPI BOOLEAN WINAPI RtlIsActivationContextActive(HANDLE);
3936 NTSYSAPI BOOL WINAPI RtlIsCriticalSectionLocked(RTL_CRITICAL_SECTION *);
3937 NTSYSAPI BOOL WINAPI RtlIsCriticalSectionLockedByThread(RTL_CRITICAL_SECTION *);
3938 NTSYSAPI ULONG WINAPI RtlIsDosDeviceName_U(PCWSTR);
3939 NTSYSAPI BOOLEAN WINAPI RtlIsNameLegalDOS8Dot3(const UNICODE_STRING*,POEM_STRING,PBOOLEAN);
3940 NTSYSAPI NTSTATUS WINAPI RtlIsNormalizedString(ULONG,const WCHAR*,INT,BOOLEAN*);
3941 NTSYSAPI BOOLEAN WINAPI RtlIsProcessorFeaturePresent(UINT);
3942 NTSYSAPI BOOLEAN WINAPI RtlIsTextUnicode(LPCVOID,INT,INT *);
3943 NTSYSAPI BOOLEAN WINAPI RtlIsValidHandle(const RTL_HANDLE_TABLE *, const RTL_HANDLE *);
3944 NTSYSAPI BOOLEAN WINAPI RtlIsValidIndexHandle(const RTL_HANDLE_TABLE *, ULONG Index, RTL_HANDLE **);
3945 NTSYSAPI NTSTATUS WINAPI RtlLeaveCriticalSection(RTL_CRITICAL_SECTION *);
3946 NTSYSAPI DWORD WINAPI RtlLengthRequiredSid(DWORD);
3947 NTSYSAPI ULONG WINAPI RtlLengthSecurityDescriptor(PSECURITY_DESCRIPTOR);
3948 NTSYSAPI DWORD WINAPI RtlLengthSid(PSID);
3949 NTSYSAPI NTSTATUS WINAPI RtlLocalTimeToSystemTime(const LARGE_INTEGER*,PLARGE_INTEGER);
3950 NTSYSAPI NTSTATUS WINAPI RtlLocaleNameToLcid(const WCHAR*,LCID*,ULONG);
3951 NTSYSAPI BOOLEAN WINAPI RtlLockHeap(HANDLE);
3952 NTSYSAPI NTSTATUS WINAPI RtlLookupAtomInAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*);
3953 NTSYSAPI NTSTATUS WINAPI RtlMakeSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,LPDWORD);
3954 NTSYSAPI void WINAPI RtlMapGenericMask(PACCESS_MASK,const GENERIC_MAPPING*);
3955 NTSYSAPI NTSTATUS WINAPI RtlMultiByteToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
3956 NTSYSAPI NTSTATUS WINAPI RtlMultiByteToUnicodeSize(DWORD*,LPCSTR,UINT);
3957 NTSYSAPI NTSTATUS WINAPI RtlNewSecurityObject(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,BOOLEAN,HANDLE,PGENERIC_MAPPING);
3958 NTSYSAPI PRTL_USER_PROCESS_PARAMETERS WINAPI RtlNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
3959 NTSYSAPI NTSTATUS WINAPI RtlNormalizeString(ULONG,const WCHAR*,INT,WCHAR*,INT*);
3960 NTSYSAPI ULONG WINAPI RtlNtStatusToDosError(NTSTATUS);
3961 NTSYSAPI ULONG WINAPI RtlNtStatusToDosErrorNoTeb(NTSTATUS);
3962 NTSYSAPI ULONG WINAPI RtlNumberOfSetBits(PCRTL_BITMAP);
3963 NTSYSAPI ULONG WINAPI RtlNumberOfClearBits(PCRTL_BITMAP);
3964 NTSYSAPI UINT WINAPI RtlOemStringToUnicodeSize(const STRING*);
3965 NTSYSAPI NTSTATUS WINAPI RtlOemStringToUnicodeString(UNICODE_STRING*,const STRING*,BOOLEAN);
3966 NTSYSAPI NTSTATUS WINAPI RtlOemToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
3967 NTSYSAPI NTSTATUS WINAPI RtlOpenCurrentUser(ACCESS_MASK,PHANDLE);
3968 NTSYSAPI PVOID WINAPI RtlPcToFileHeader(PVOID,PVOID*);
3969 NTSYSAPI NTSTATUS WINAPI RtlPinAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
3970 NTSYSAPI void WINAPI RtlPopFrame(TEB_ACTIVE_FRAME*);
3971 NTSYSAPI BOOLEAN WINAPI RtlPrefixString(const STRING*,const STRING*,BOOLEAN);
3972 NTSYSAPI BOOLEAN WINAPI RtlPrefixUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
3973 NTSYSAPI void WINAPI RtlProcessFlsData(void*,ULONG);
3974 NTSYSAPI void WINAPI RtlPushFrame(TEB_ACTIVE_FRAME*);
3975 NTSYSAPI NTSTATUS WINAPI RtlQueryActivationContextApplicationSettings(DWORD,HANDLE,const WCHAR*,const WCHAR*,WCHAR*,SIZE_T,SIZE_T*);
3976 NTSYSAPI NTSTATUS WINAPI RtlQueryAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM,ULONG*,ULONG*,WCHAR*,ULONG*);
3977 NTSYSAPI NTSTATUS WINAPI RtlQueryDynamicTimeZoneInformation(RTL_DYNAMIC_TIME_ZONE_INFORMATION*);
3978 NTSYSAPI NTSTATUS WINAPI RtlQueryEnvironmentVariable(WCHAR*,const WCHAR*,SIZE_T,WCHAR*,SIZE_T,SIZE_T*);
3979 NTSYSAPI NTSTATUS WINAPI RtlQueryEnvironmentVariable_U(PWSTR,PUNICODE_STRING,PUNICODE_STRING);
3980 NTSYSAPI NTSTATUS WINAPI RtlQueryHeapInformation(HANDLE,HEAP_INFORMATION_CLASS,PVOID,SIZE_T,PSIZE_T);
3981 NTSYSAPI NTSTATUS WINAPI RtlQueryInformationAcl(PACL,LPVOID,DWORD,ACL_INFORMATION_CLASS);
3982 NTSYSAPI NTSTATUS WINAPI RtlQueryInformationActivationContext(ULONG,HANDLE,PVOID,ULONG,PVOID,SIZE_T,SIZE_T*);
3983 NTSYSAPI BOOL WINAPI RtlQueryPerformanceCounter(LARGE_INTEGER*);
3984 NTSYSAPI BOOL WINAPI RtlQueryPerformanceFrequency(LARGE_INTEGER*);
3985 NTSYSAPI NTSTATUS WINAPI RtlQueryProcessDebugInformation(ULONG,ULONG,PDEBUG_BUFFER);
3986 NTSYSAPI NTSTATUS WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID);
3987 NTSYSAPI NTSTATUS WINAPI RtlQueryTimeZoneInformation(RTL_TIME_ZONE_INFORMATION*);
3988 NTSYSAPI BOOL WINAPI RtlQueryUnbiasedInterruptTime(ULONGLONG*);
3989 NTSYSAPI NTSTATUS WINAPI RtlQueueWorkItem(PRTL_WORK_ITEM_ROUTINE,PVOID,ULONG);
3990 NTSYSAPI void WINAPI RtlRaiseException(PEXCEPTION_RECORD);
3991 NTSYSAPI void WINAPI RtlRaiseStatus(NTSTATUS);
3992 NTSYSAPI ULONG WINAPI RtlRandom(PULONG);
3993 NTSYSAPI PVOID WINAPI RtlReAllocateHeap(HANDLE,ULONG,PVOID,SIZE_T);
3994 NTSYSAPI NTSTATUS WINAPI RtlRegisterWait(PHANDLE,HANDLE,RTL_WAITORTIMERCALLBACKFUNC,PVOID,ULONG,ULONG);
3995 NTSYSAPI void WINAPI RtlReleaseActivationContext(HANDLE);
3996 NTSYSAPI void WINAPI RtlReleasePath(PWSTR);
3997 NTSYSAPI void WINAPI RtlReleasePebLock(void);
3998 NTSYSAPI void WINAPI RtlReleaseResource(LPRTL_RWLOCK);
3999 NTSYSAPI void WINAPI RtlReleaseSRWLockExclusive(RTL_SRWLOCK*);
4000 NTSYSAPI void WINAPI RtlReleaseSRWLockShared(RTL_SRWLOCK*);
4001 NTSYSAPI ULONG WINAPI RtlRemoveVectoredExceptionHandler(PVOID);
4002 NTSYSAPI void WINAPI RtlResetRtlTranslations(const NLSTABLEINFO*);
4003 NTSYSAPI void WINAPI RtlRestoreLastWin32Error(DWORD);
4004 NTSYSAPI void WINAPI RtlSecondsSince1970ToTime(DWORD,LARGE_INTEGER *);
4005 NTSYSAPI void WINAPI RtlSecondsSince1980ToTime(DWORD,LARGE_INTEGER *);
4006 NTSYSAPI NTSTATUS WINAPI RtlSelfRelativeToAbsoluteSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PDWORD,PACL,PDWORD,PACL,PDWORD,PSID,PDWORD,PSID,PDWORD);
4007 NTSYSAPI void WINAPI RtlSetAllBits(PRTL_BITMAP);
4008 NTSYSAPI void WINAPI RtlSetBits(PRTL_BITMAP,ULONG,ULONG);
4009 NTSYSAPI ULONG WINAPI RtlSetCriticalSectionSpinCount(RTL_CRITICAL_SECTION*,ULONG);
4010 NTSYSAPI NTSTATUS WINAPI RtlSetControlSecurityDescriptor(PSECURITY_DESCRIPTOR,SECURITY_DESCRIPTOR_CONTROL,SECURITY_DESCRIPTOR_CONTROL);
4011 NTSYSAPI NTSTATUS WINAPI RtlSetCurrentDirectory_U(const UNICODE_STRING*);
4012 NTSYSAPI void WINAPI RtlSetCurrentEnvironment(PWSTR, PWSTR*);
4013 NTSYSAPI NTSTATUS WINAPI RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
4014 NTSYSAPI NTSTATUS WINAPI RtlSetEnvironmentVariable(PWSTR*,PUNICODE_STRING,PUNICODE_STRING);
4015 NTSYSAPI NTSTATUS WINAPI RtlSetHeapInformation(HANDLE,HEAP_INFORMATION_CLASS,PVOID,SIZE_T);
4016 NTSYSAPI NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
4017 NTSYSAPI NTSTATUS WINAPI RtlSetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
4018 NTSYSAPI NTSTATUS WINAPI RtlSetIoCompletionCallback(HANDLE,PRTL_OVERLAPPED_COMPLETION_ROUTINE,ULONG);
4019 NTSYSAPI void WINAPI RtlSetLastWin32Error(DWORD);
4020 NTSYSAPI void WINAPI RtlSetLastWin32ErrorAndNtStatusFromNtStatus(NTSTATUS);
4021 NTSYSAPI NTSTATUS WINAPI RtlSetProcessPreferredUILanguages(DWORD,PCZZWSTR,ULONG*);
4022 NTSYSAPI NTSTATUS WINAPI RtlSetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
4023 NTSYSAPI NTSTATUS WINAPI RtlSetSearchPathMode(ULONG);
4024 NTSYSAPI NTSTATUS WINAPI RtlSetThreadErrorMode(DWORD,LPDWORD);
4025 NTSYSAPI NTSTATUS WINAPI RtlSetThreadPreferredUILanguages(DWORD,PCZZWSTR,ULONG*);
4026 NTSYSAPI NTSTATUS WINAPI RtlSetTimeZoneInformation(const RTL_TIME_ZONE_INFORMATION*);
4027 NTSYSAPI void WINAPI RtlSetUnhandledExceptionFilter(PRTL_EXCEPTION_FILTER);
4028 NTSYSAPI SIZE_T WINAPI RtlSizeHeap(HANDLE,ULONG,const void*);
4029 NTSYSAPI NTSTATUS WINAPI RtlSleepConditionVariableCS(RTL_CONDITION_VARIABLE*,RTL_CRITICAL_SECTION*,const LARGE_INTEGER*);
4030 NTSYSAPI NTSTATUS WINAPI RtlSleepConditionVariableSRW(RTL_CONDITION_VARIABLE*,RTL_SRWLOCK*,const LARGE_INTEGER*,ULONG);
4031 NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID,PUNICODE_STRING);
4032 NTSYSAPI LPDWORD WINAPI RtlSubAuthoritySid(PSID,DWORD);
4033 NTSYSAPI LPBYTE WINAPI RtlSubAuthorityCountSid(PSID);
4034 NTSYSAPI NTSTATUS WINAPI RtlSystemTimeToLocalTime(const LARGE_INTEGER*,PLARGE_INTEGER);
4035 NTSYSAPI void WINAPI RtlTimeToTimeFields(const LARGE_INTEGER*,PTIME_FIELDS);
4036 NTSYSAPI BOOLEAN WINAPI RtlTimeFieldsToTime(PTIME_FIELDS,PLARGE_INTEGER);
4037 NTSYSAPI void WINAPI RtlTimeToElapsedTimeFields(const LARGE_INTEGER *,PTIME_FIELDS);
4038 NTSYSAPI BOOLEAN WINAPI RtlTimeToSecondsSince1970(const LARGE_INTEGER *,LPDWORD);
4039 NTSYSAPI BOOLEAN WINAPI RtlTimeToSecondsSince1980(const LARGE_INTEGER *,LPDWORD);
4040 NTSYSAPI BOOLEAN WINAPI RtlTryAcquireSRWLockExclusive(RTL_SRWLOCK *);
4041 NTSYSAPI BOOLEAN WINAPI RtlTryAcquireSRWLockShared(RTL_SRWLOCK *);
4042 NTSYSAPI BOOL WINAPI RtlTryEnterCriticalSection(RTL_CRITICAL_SECTION *);
4043 NTSYSAPI NTSTATUS WINAPI RtlUTF8ToUnicodeN(WCHAR*,DWORD,DWORD*,const char*,DWORD);
4044 NTSYSAPI ULONGLONG __cdecl RtlUlonglongByteSwap(ULONGLONG);
4045 NTSYSAPI DWORD WINAPI RtlUnicodeStringToAnsiSize(const UNICODE_STRING*);
4046 NTSYSAPI NTSTATUS WINAPI RtlUnicodeStringToAnsiString(PANSI_STRING,PCUNICODE_STRING,BOOLEAN);
4047 NTSYSAPI NTSTATUS WINAPI RtlUnicodeStringToInteger(const UNICODE_STRING *,ULONG,ULONG *);
4048 NTSYSAPI DWORD WINAPI RtlUnicodeStringToOemSize(const UNICODE_STRING*);
4049 NTSYSAPI NTSTATUS WINAPI RtlUnicodeStringToOemString(POEM_STRING,PCUNICODE_STRING,BOOLEAN);
4050 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToCustomCPN(CPTABLEINFO*,char*,DWORD,DWORD*,const WCHAR*,DWORD);
4051 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
4052 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToMultiByteSize(PULONG,PCWSTR,ULONG);
4053 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
4054 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToUTF8N(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
4055 NTSYSAPI ULONG WINAPI RtlUniform(PULONG);
4056 NTSYSAPI BOOLEAN WINAPI RtlUnlockHeap(HANDLE);
4057 NTSYSAPI void WINAPI RtlUnwind(PVOID,PVOID,PEXCEPTION_RECORD,PVOID);
4058 #ifdef __x86_64__
4059 NTSYSAPI void WINAPI RtlUnwindEx(PVOID,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT,PUNWIND_HISTORY_TABLE);
4060 #elif defined(__ia64__)
4061 NTSYSAPI void WINAPI RtlUnwind2(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT);
4062 NTSYSAPI void WINAPI RtlUnwindEx(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT,PUNWIND_HISTORY_TABLE);
4063 #endif
4064 NTSYSAPI WCHAR WINAPI RtlUpcaseUnicodeChar(WCHAR);
4065 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING *,BOOLEAN);
4066 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToAnsiString(STRING*,const UNICODE_STRING*,BOOLEAN);
4067 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToCountedOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
4068 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
4069 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeToCustomCPN(CPTABLEINFO*,char*,DWORD,DWORD*,const WCHAR*,DWORD);
4070 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
4071 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
4072 NTSYSAPI NTSTATUS WINAPI RtlUpdateTimer(HANDLE, HANDLE, DWORD, DWORD);
4073 NTSYSAPI CHAR WINAPI RtlUpperChar(CHAR);
4074 NTSYSAPI void WINAPI RtlUpperString(STRING *,const STRING *);
4075 NTSYSAPI void WINAPI RtlUserThreadStart(PRTL_THREAD_START_ROUTINE,void*);
4076 NTSYSAPI NTSTATUS WINAPI RtlValidSecurityDescriptor(PSECURITY_DESCRIPTOR);
4077 NTSYSAPI BOOLEAN WINAPI RtlValidRelativeSecurityDescriptor(PSECURITY_DESCRIPTOR,ULONG,SECURITY_INFORMATION);
4078 NTSYSAPI BOOLEAN WINAPI RtlValidAcl(PACL);
4079 NTSYSAPI BOOLEAN WINAPI RtlValidSid(PSID);
4080 NTSYSAPI BOOLEAN WINAPI RtlValidateHeap(HANDLE,ULONG,LPCVOID);
4081 NTSYSAPI NTSTATUS WINAPI RtlVerifyVersionInfo(const RTL_OSVERSIONINFOEXW*,DWORD,DWORDLONG);
4082 NTSYSAPI NTSTATUS WINAPI RtlWaitOnAddress(const void *,const void *,SIZE_T,const LARGE_INTEGER *);
4083 NTSYSAPI void WINAPI RtlWakeAddressAll(const void *);
4084 NTSYSAPI void WINAPI RtlWakeAddressSingle(const void *);
4085 NTSYSAPI void WINAPI RtlWakeAllConditionVariable(RTL_CONDITION_VARIABLE *);
4086 NTSYSAPI void WINAPI RtlWakeConditionVariable(RTL_CONDITION_VARIABLE *);
4087 NTSYSAPI NTSTATUS WINAPI RtlWalkHeap(HANDLE,PVOID);
4088 NTSYSAPI NTSTATUS WINAPI RtlWow64EnableFsRedirection(BOOLEAN);
4089 NTSYSAPI NTSTATUS WINAPI RtlWow64EnableFsRedirectionEx(ULONG,ULONG*);
4090 #ifdef __x86_64__
4091 NTSYSAPI NTSTATUS WINAPI RtlWow64GetThreadContext(HANDLE, WOW64_CONTEXT *);
4092 NTSYSAPI NTSTATUS WINAPI RtlWow64SetThreadContext(HANDLE, const WOW64_CONTEXT *);
4093 #endif
4094 NTSYSAPI NTSTATUS WINAPI RtlWriteRegistryValue(ULONG,PCWSTR,PCWSTR,ULONG,PVOID,ULONG);
4095 NTSYSAPI NTSTATUS WINAPI RtlZombifyActivationContext(HANDLE);
4096 NTSYSAPI NTSTATUS WINAPI RtlpNtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
4097 NTSYSAPI NTSTATUS WINAPI RtlpNtEnumerateSubKey(HANDLE,UNICODE_STRING *, ULONG);
4098 NTSYSAPI NTSTATUS WINAPI RtlpWaitForCriticalSection(RTL_CRITICAL_SECTION *);
4099 NTSYSAPI NTSTATUS WINAPI RtlpUnWaitCriticalSection(RTL_CRITICAL_SECTION *);
4100 NTSYSAPI NTSTATUS WINAPI vDbgPrintEx(ULONG,ULONG,LPCSTR,__ms_va_list);
4101 NTSYSAPI NTSTATUS WINAPI vDbgPrintExWithPrefix(LPCSTR,ULONG,ULONG,LPCSTR,__ms_va_list);
4103 #if defined(__x86_64__) || defined(__i386__)
4104 NTSYSAPI NTSTATUS WINAPI RtlCopyExtendedContext(CONTEXT_EX*,ULONG,CONTEXT_EX*);
4105 NTSYSAPI NTSTATUS WINAPI RtlInitializeExtendedContext(void*,ULONG,CONTEXT_EX**);
4106 NTSYSAPI NTSTATUS WINAPI RtlInitializeExtendedContext2(void*,ULONG,CONTEXT_EX**,ULONG64);
4107 NTSYSAPI ULONG64 WINAPI RtlGetEnabledExtendedFeatures(ULONG64);
4108 NTSYSAPI NTSTATUS WINAPI RtlGetExtendedContextLength(ULONG,ULONG*);
4109 NTSYSAPI NTSTATUS WINAPI RtlGetExtendedContextLength2(ULONG,ULONG*,ULONG64);
4110 NTSYSAPI void * WINAPI RtlLocateLegacyContext(CONTEXT_EX*,ULONG*);
4111 NTSYSAPI void * WINAPI RtlLocateExtendedFeature(CONTEXT_EX*,ULONG,ULONG*);
4112 NTSYSAPI void * WINAPI RtlLocateExtendedFeature2(CONTEXT_EX*,ULONG,XSTATE_CONFIGURATION*,ULONG*);
4113 NTSYSAPI ULONG64 WINAPI RtlGetExtendedFeaturesMask(CONTEXT_EX*);
4114 NTSYSAPI void WINAPI RtlSetExtendedFeaturesMask(CONTEXT_EX*,ULONG64);
4115 #endif
4117 #ifndef __WINE_USE_MSVCRT
4118 NTSYSAPI int __cdecl _strnicmp(LPCSTR,LPCSTR,size_t);
4119 #endif
4121 /* 32-bit only functions */
4123 #ifndef _WIN64
4124 NTSYSAPI LONGLONG WINAPI RtlConvertLongToLargeInteger(LONG);
4125 NTSYSAPI ULONGLONG WINAPI RtlConvertUlongToLargeInteger(ULONG);
4126 NTSYSAPI LONGLONG WINAPI RtlEnlargedIntegerMultiply(INT,INT);
4127 NTSYSAPI ULONGLONG WINAPI RtlEnlargedUnsignedMultiply(UINT,UINT);
4128 NTSYSAPI UINT WINAPI RtlEnlargedUnsignedDivide(ULONGLONG,UINT,UINT *);
4129 NTSYSAPI LONGLONG WINAPI RtlExtendedMagicDivide(LONGLONG,LONGLONG,INT);
4130 NTSYSAPI LONGLONG WINAPI RtlExtendedIntegerMultiply(LONGLONG,INT);
4131 NTSYSAPI LONGLONG WINAPI RtlExtendedLargeIntegerDivide(LONGLONG,INT,INT *);
4132 NTSYSAPI LONGLONG WINAPI RtlInterlockedCompareExchange64(LONGLONG*,LONGLONG,LONGLONG);
4133 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerAdd(LONGLONG,LONGLONG);
4134 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerArithmeticShift(LONGLONG,INT);
4135 NTSYSAPI ULONGLONG WINAPI RtlLargeIntegerDivide( ULONGLONG,ULONGLONG,ULONGLONG *);
4136 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerNegate(LONGLONG);
4137 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerShiftLeft(LONGLONG,INT);
4138 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerShiftRight(LONGLONG,INT);
4139 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerSubtract(LONGLONG,LONGLONG);
4140 NTSYSAPI NTSTATUS WINAPI RtlLargeIntegerToChar(const ULONGLONG *,ULONG,ULONG,PCHAR);
4141 #endif
4143 /* Threadpool functions */
4145 NTSYSAPI NTSTATUS WINAPI TpAllocCleanupGroup(TP_CLEANUP_GROUP **);
4146 NTSYSAPI NTSTATUS WINAPI TpAllocIoCompletion(TP_IO **,HANDLE,PTP_IO_CALLBACK,void *,TP_CALLBACK_ENVIRON *);
4147 NTSYSAPI NTSTATUS WINAPI TpAllocPool(TP_POOL **,PVOID);
4148 NTSYSAPI NTSTATUS WINAPI TpAllocTimer(TP_TIMER **,PTP_TIMER_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *);
4149 NTSYSAPI NTSTATUS WINAPI TpAllocWait(TP_WAIT **,PTP_WAIT_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *);
4150 NTSYSAPI NTSTATUS WINAPI TpAllocWork(TP_WORK **,PTP_WORK_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *);
4151 NTSYSAPI void WINAPI TpCallbackLeaveCriticalSectionOnCompletion(TP_CALLBACK_INSTANCE *,RTL_CRITICAL_SECTION *);
4152 NTSYSAPI NTSTATUS WINAPI TpCallbackMayRunLong(TP_CALLBACK_INSTANCE *);
4153 NTSYSAPI void WINAPI TpCallbackReleaseMutexOnCompletion(TP_CALLBACK_INSTANCE *,HANDLE);
4154 NTSYSAPI void WINAPI TpCallbackReleaseSemaphoreOnCompletion(TP_CALLBACK_INSTANCE *,HANDLE,DWORD);
4155 NTSYSAPI void WINAPI TpCallbackSetEventOnCompletion(TP_CALLBACK_INSTANCE *,HANDLE);
4156 NTSYSAPI void WINAPI TpCallbackUnloadDllOnCompletion(TP_CALLBACK_INSTANCE *,HMODULE);
4157 NTSYSAPI void WINAPI TpCancelAsyncIoOperation(TP_IO *);
4158 NTSYSAPI void WINAPI TpDisassociateCallback(TP_CALLBACK_INSTANCE *);
4159 NTSYSAPI BOOL WINAPI TpIsTimerSet(TP_TIMER *);
4160 NTSYSAPI void WINAPI TpPostWork(TP_WORK *);
4161 NTSYSAPI NTSTATUS WINAPI TpQueryPoolStackInformation(TP_POOL *, TP_POOL_STACK_INFORMATION *stack_info);
4162 NTSYSAPI void WINAPI TpReleaseCleanupGroup(TP_CLEANUP_GROUP *);
4163 NTSYSAPI void WINAPI TpReleaseCleanupGroupMembers(TP_CLEANUP_GROUP *,BOOL,PVOID);
4164 NTSYSAPI void WINAPI TpReleaseIoCompletion(TP_IO *);
4165 NTSYSAPI void WINAPI TpReleasePool(TP_POOL *);
4166 NTSYSAPI void WINAPI TpReleaseTimer(TP_TIMER *);
4167 NTSYSAPI void WINAPI TpReleaseWait(TP_WAIT *);
4168 NTSYSAPI void WINAPI TpReleaseWork(TP_WORK *);
4169 NTSYSAPI void WINAPI TpSetPoolMaxThreads(TP_POOL *,DWORD);
4170 NTSYSAPI BOOL WINAPI TpSetPoolMinThreads(TP_POOL *,DWORD);
4171 NTSYSAPI NTSTATUS WINAPI TpSetPoolStackInformation(TP_POOL *, TP_POOL_STACK_INFORMATION *stack_info);
4172 NTSYSAPI void WINAPI TpSetTimer(TP_TIMER *, LARGE_INTEGER *,LONG,LONG);
4173 NTSYSAPI void WINAPI TpSetWait(TP_WAIT *,HANDLE,LARGE_INTEGER *);
4174 NTSYSAPI NTSTATUS WINAPI TpSimpleTryPost(PTP_SIMPLE_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *);
4175 NTSYSAPI void WINAPI TpStartAsyncIoOperation(TP_IO *);
4176 NTSYSAPI void WINAPI TpWaitForIoCompletion(TP_IO *,BOOL);
4177 NTSYSAPI void WINAPI TpWaitForTimer(TP_TIMER *,BOOL);
4178 NTSYSAPI void WINAPI TpWaitForWait(TP_WAIT *,BOOL);
4179 NTSYSAPI void WINAPI TpWaitForWork(TP_WORK *,BOOL);
4181 /* Wine internal functions */
4183 NTSYSAPI NTSTATUS CDECL wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, char *nameA, SIZE_T *size,
4184 UINT disposition );
4185 NTSYSAPI NTSTATUS CDECL wine_unix_to_nt_file_name( const char *name, WCHAR *buffer, SIZE_T *size );
4188 /***********************************************************************
4189 * Inline functions
4192 #define InitializeObjectAttributes(p,n,a,r,s) \
4193 do { \
4194 (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
4195 (p)->RootDirectory = r; \
4196 (p)->Attributes = a; \
4197 (p)->ObjectName = n; \
4198 (p)->SecurityDescriptor = s; \
4199 (p)->SecurityQualityOfService = NULL; \
4200 } while (0)
4202 #define NtCurrentProcess() ((HANDLE)-1)
4204 #define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length))
4205 #define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length))
4206 #define RtlStoreUlong(p,v) do { ULONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
4207 #define RtlStoreUlonglong(p,v) do { ULONGLONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
4208 #define RtlRetrieveUlong(p,s) memcpy((p), (s), sizeof(ULONG))
4209 #define RtlRetrieveUlonglong(p,s) memcpy((p), (s), sizeof(ULONGLONG))
4210 #define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))
4212 static inline BOOLEAN RtlCheckBit(PCRTL_BITMAP lpBits, ULONG ulBit)
4214 if (lpBits && ulBit < lpBits->SizeOfBitMap &&
4215 lpBits->Buffer[ulBit >> 5] & (1 << (ulBit & 31)))
4216 return TRUE;
4217 return FALSE;
4220 /* These are implemented as __fastcall, so we can't let Winelib apps link with them */
4221 static inline USHORT RtlUshortByteSwap(USHORT s)
4223 return (s >> 8) | (s << 8);
4225 static inline ULONG RtlUlongByteSwap(ULONG i)
4227 #if defined(__i386__) && defined(__GNUC__)
4228 ULONG ret;
4229 __asm__("bswap %0" : "=r" (ret) : "0" (i) );
4230 return ret;
4231 #else
4232 return ((ULONG)RtlUshortByteSwap((USHORT)i) << 16) | RtlUshortByteSwap((USHORT)(i >> 16));
4233 #endif
4236 /* list manipulation macros */
4237 #define InitializeListHead(le) (void)((le)->Flink = (le)->Blink = (le))
4238 #define InsertHeadList(le,e) do { PLIST_ENTRY f = (le)->Flink; (e)->Flink = f; (e)->Blink = (le); f->Blink = (e); (le)->Flink = (e); } while (0)
4239 #define InsertTailList(le,e) do { PLIST_ENTRY b = (le)->Blink; (e)->Flink = (le); (e)->Blink = b; b->Flink = (e); (le)->Blink = (e); } while (0)
4240 #define IsListEmpty(le) ((le)->Flink == (le))
4241 #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)
4242 static inline PLIST_ENTRY RemoveHeadList(PLIST_ENTRY le)
4244 PLIST_ENTRY f, b, e;
4246 e = le->Flink;
4247 f = le->Flink->Flink;
4248 b = le->Flink->Blink;
4249 f->Blink = b;
4250 b->Flink = f;
4252 if (e != le) e->Flink = e->Blink = NULL;
4253 return e;
4255 static inline PLIST_ENTRY RemoveTailList(PLIST_ENTRY le)
4257 PLIST_ENTRY f, b, e;
4259 e = le->Blink;
4260 f = le->Blink->Flink;
4261 b = le->Blink->Blink;
4262 f->Blink = b;
4263 b->Flink = f;
4265 if (e != le) e->Flink = e->Blink = NULL;
4266 return e;
4270 #ifdef __WINESRC__
4272 /* Wine internal functions */
4273 extern NTSTATUS CDECL __wine_init_unix_lib( HMODULE module, DWORD reason, const void *ptr_in, void *ptr_out );
4275 /* The thread information for 16-bit threads */
4276 /* NtCurrentTeb()->SubSystemTib points to this */
4277 typedef struct
4279 void *unknown; /* 00 unknown */
4280 UNICODE_STRING *exe_name; /* 04 exe module name */
4282 /* the following fields do not exist under Windows */
4283 UNICODE_STRING exe_str; /* exe name string pointed to by exe_name */
4284 CURDIR curdir; /* current directory */
4285 WCHAR curdir_buffer[MAX_PATH];
4286 } WIN16_SUBSYSTEM_TIB;
4288 #endif /* __WINESRC__ */
4290 #ifdef __cplusplus
4291 } /* extern "C" */
4292 #endif /* defined(__cplusplus) */
4294 #endif /* __WINE_WINTERNL_H */