d3d10/effect: Add a helper to read raw variable values.
[wine.git] / include / winternl.h
blob7a34629edb00de24f2acf569fa48a495320fddc3
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_PTR EnvironmentSize;
203 ULONG_PTR 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 _CURDIR32
589 UNICODE_STRING32 DosPath;
590 ULONG Handle;
591 } CURDIR32;
593 typedef struct _CURDIR64
595 UNICODE_STRING64 DosPath;
596 ULONG64 Handle;
597 } CURDIR64;
599 typedef struct RTL_DRIVE_LETTER_CURDIR32
601 USHORT Flags;
602 USHORT Length;
603 ULONG TimeStamp;
604 UNICODE_STRING32 DosPath;
605 } RTL_DRIVE_LETTER_CURDIR32;
607 typedef struct RTL_DRIVE_LETTER_CURDIR64
609 USHORT Flags;
610 USHORT Length;
611 ULONG TimeStamp;
612 UNICODE_STRING64 DosPath;
613 } RTL_DRIVE_LETTER_CURDIR64;
615 typedef struct _RTL_USER_PROCESS_PARAMETERS32
617 ULONG AllocationSize;
618 ULONG Size;
619 ULONG Flags;
620 ULONG DebugFlags;
621 ULONG ConsoleHandle;
622 ULONG ConsoleFlags;
623 ULONG hStdInput;
624 ULONG hStdOutput;
625 ULONG hStdError;
626 CURDIR32 CurrentDirectory;
627 UNICODE_STRING32 DllPath;
628 UNICODE_STRING32 ImagePathName;
629 UNICODE_STRING32 CommandLine;
630 ULONG Environment;
631 ULONG dwX;
632 ULONG dwY;
633 ULONG dwXSize;
634 ULONG dwYSize;
635 ULONG dwXCountChars;
636 ULONG dwYCountChars;
637 ULONG dwFillAttribute;
638 ULONG dwFlags;
639 ULONG wShowWindow;
640 UNICODE_STRING32 WindowTitle;
641 UNICODE_STRING32 Desktop;
642 UNICODE_STRING32 ShellInfo;
643 UNICODE_STRING32 RuntimeInfo;
644 RTL_DRIVE_LETTER_CURDIR32 DLCurrentDirectory[0x20];
645 ULONG EnvironmentSize;
646 ULONG EnvironmentVersion;
647 ULONG PackageDependencyData;
648 ULONG ProcessGroupId;
649 ULONG LoaderThreads;
650 } RTL_USER_PROCESS_PARAMETERS32;
652 typedef struct _RTL_USER_PROCESS_PARAMETERS64
654 ULONG AllocationSize;
655 ULONG Size;
656 ULONG Flags;
657 ULONG DebugFlags;
658 ULONG64 ConsoleHandle;
659 ULONG ConsoleFlags;
660 ULONG64 hStdInput;
661 ULONG64 hStdOutput;
662 ULONG64 hStdError;
663 CURDIR64 CurrentDirectory;
664 UNICODE_STRING64 DllPath;
665 UNICODE_STRING64 ImagePathName;
666 UNICODE_STRING64 CommandLine;
667 ULONG64 Environment;
668 ULONG dwX;
669 ULONG dwY;
670 ULONG dwXSize;
671 ULONG dwYSize;
672 ULONG dwXCountChars;
673 ULONG dwYCountChars;
674 ULONG dwFillAttribute;
675 ULONG dwFlags;
676 ULONG wShowWindow;
677 UNICODE_STRING64 WindowTitle;
678 UNICODE_STRING64 Desktop;
679 UNICODE_STRING64 ShellInfo;
680 UNICODE_STRING64 RuntimeInfo;
681 RTL_DRIVE_LETTER_CURDIR64 DLCurrentDirectory[0x20];
682 ULONG64 EnvironmentSize;
683 ULONG64 EnvironmentVersion;
684 ULONG64 PackageDependencyData;
685 ULONG ProcessGroupId;
686 ULONG LoaderThreads;
687 } RTL_USER_PROCESS_PARAMETERS64;
689 typedef struct _PEB_LDR_DATA32
691 ULONG Length;
692 BOOLEAN Initialized;
693 ULONG SsHandle;
694 LIST_ENTRY32 InLoadOrderModuleList;
695 LIST_ENTRY32 InMemoryOrderModuleList;
696 LIST_ENTRY32 InInitializationOrderModuleList;
697 ULONG EntryInProgress;
698 BOOLEAN ShutdownInProgress;
699 ULONG ShutdownThreadId;
700 } PEB_LDR_DATA32, *PPEB_LDR_DATA32;
702 typedef struct _PEB_LDR_DATA64
704 ULONG Length;
705 BOOLEAN Initialized;
706 ULONG64 SsHandle;
707 LIST_ENTRY64 InLoadOrderModuleList;
708 LIST_ENTRY64 InMemoryOrderModuleList;
709 LIST_ENTRY64 InInitializationOrderModuleList;
710 ULONG64 EntryInProgress;
711 BOOLEAN ShutdownInProgress;
712 ULONG64 ShutdownThreadId;
713 } PEB_LDR_DATA64, *PPEB_LDR_DATA64;
715 typedef struct _PEB32
717 BOOLEAN InheritedAddressSpace; /* 0000 */
718 BOOLEAN ReadImageFileExecOptions; /* 0001 */
719 BOOLEAN BeingDebugged; /* 0002 */
720 BOOLEAN SpareBool; /* 0003 */
721 ULONG Mutant; /* 0004 */
722 ULONG ImageBaseAddress; /* 0008 */
723 ULONG LdrData; /* 000c */
724 ULONG ProcessParameters; /* 0010 */
725 ULONG SubSystemData; /* 0014 */
726 ULONG ProcessHeap; /* 0018 */
727 ULONG FastPebLock; /* 001c */
728 ULONG FastPebLockRoutine; /* 0020 */
729 ULONG FastPebUnlockRoutine; /* 0024 */
730 ULONG EnvironmentUpdateCount; /* 0028 */
731 ULONG KernelCallbackTable; /* 002c */
732 ULONG Reserved; /* 0030 */
733 ULONG AtlThunkSListPtr32; /* 0034 */
734 ULONG FreeList; /* 0038 */
735 ULONG TlsExpansionCounter; /* 003c */
736 ULONG TlsBitmap; /* 0040 */
737 ULONG TlsBitmapBits[2]; /* 0044 */
738 ULONG ReadOnlySharedMemoryBase; /* 004c */
739 ULONG ReadOnlySharedMemoryHeap; /* 0050 */
740 ULONG ReadOnlyStaticServerData; /* 0054 */
741 ULONG AnsiCodePageData; /* 0058 */
742 ULONG OemCodePageData; /* 005c */
743 ULONG UnicodeCaseTableData; /* 0060 */
744 ULONG NumberOfProcessors; /* 0064 */
745 ULONG NtGlobalFlag; /* 0068 */
746 LARGE_INTEGER CriticalSectionTimeout; /* 0070 */
747 ULONG HeapSegmentReserve; /* 0078 */
748 ULONG HeapSegmentCommit; /* 007c */
749 ULONG HeapDeCommitTotalFreeThreshold; /* 0080 */
750 ULONG HeapDeCommitFreeBlockThreshold; /* 0084 */
751 ULONG NumberOfHeaps; /* 0088 */
752 ULONG MaximumNumberOfHeaps; /* 008c */
753 ULONG ProcessHeaps; /* 0090 */
754 ULONG GdiSharedHandleTable; /* 0094 */
755 ULONG ProcessStarterHelper; /* 0098 */
756 ULONG GdiDCAttributeList; /* 009c */
757 ULONG LoaderLock; /* 00a0 */
758 ULONG OSMajorVersion; /* 00a4 */
759 ULONG OSMinorVersion; /* 00a8 */
760 ULONG OSBuildNumber; /* 00ac */
761 ULONG OSPlatformId; /* 00b0 */
762 ULONG ImageSubSystem; /* 00b4 */
763 ULONG ImageSubSystemMajorVersion; /* 00b8 */
764 ULONG ImageSubSystemMinorVersion; /* 00bc */
765 ULONG ImageProcessAffinityMask; /* 00c0 */
766 ULONG GdiHandleBuffer[28]; /* 00c4 */
767 ULONG unknown[6]; /* 0134 */
768 ULONG PostProcessInitRoutine; /* 014c */
769 ULONG TlsExpansionBitmap; /* 0150 */
770 ULONG TlsExpansionBitmapBits[32]; /* 0154 */
771 ULONG SessionId; /* 01d4 */
772 ULARGE_INTEGER AppCompatFlags; /* 01d8 */
773 ULARGE_INTEGER AppCompatFlagsUser; /* 01e0 */
774 ULONG ShimData; /* 01e8 */
775 ULONG AppCompatInfo; /* 01ec */
776 UNICODE_STRING CSDVersion; /* 01f0 */
777 ULONG ActivationContextData; /* 01f8 */
778 ULONG ProcessAssemblyStorageMap; /* 01fc */
779 ULONG SystemDefaultActivationData; /* 0200 */
780 ULONG SystemAssemblyStorageMap; /* 0204 */
781 ULONG MinimumStackCommit; /* 0208 */
782 ULONG FlsCallback; /* 020c */
783 LIST_ENTRY FlsListHead; /* 0210 */
784 ULONG FlsBitmap; /* 0218 */
785 ULONG FlsBitmapBits[4]; /* 021c */
786 ULONG FlsHighIndex; /* 022c */
787 ULONG WerRegistrationData; /* 0230 */
788 ULONG WerShipAssertPtr; /* 0234 */
789 ULONG pUnused; /* 0238 */
790 ULONG pImageHeaderHash; /* 023c */
791 ULONG TracingFlags; /* 0240 */
792 ULONGLONG CsrServerReadOnlySharedMemoryBase; /* 0248 */
793 ULONG TppWorkerpListLock; /* 0250 */
794 LIST_ENTRY TppWorkerpList; /* 0254 */
795 ULONG WaitOnAddressHashTable [0x80]; /* 025c */
796 ULONG TelemetryCoverageHeader; /* 045c */
797 ULONG CloudFileFlags; /* 0460 */
798 ULONG CloudFileDiagFlags; /* 0464 */
799 CHAR PlaceholderCompatibilityMode; /* 0468 */
800 CHAR PlaceholderCompatibilityModeReserved[7]; /* 0469 */
801 ULONG LeapSecondData; /* 0470 */
802 ULONG LeapSecondFlags; /* 0474 */
803 ULONG NtGlobalFlag2; /* 0478 */
804 } PEB32;
806 typedef struct _PEB64
808 BOOLEAN InheritedAddressSpace; /* 0000 */
809 BOOLEAN ReadImageFileExecOptions; /* 0001 */
810 BOOLEAN BeingDebugged; /* 0002 */
811 BOOLEAN SpareBool; /* 0003 */
812 ULONG64 Mutant; /* 0008 */
813 ULONG64 ImageBaseAddress; /* 0010 */
814 ULONG64 LdrData; /* 0018 */
815 ULONG64 ProcessParameters; /* 0020 */
816 ULONG64 SubSystemData; /* 0028 */
817 ULONG64 ProcessHeap; /* 0030 */
818 ULONG64 FastPebLock; /* 0038 */
819 ULONG64 FastPebLockRoutine; /* 0040 */
820 ULONG64 FastPebUnlockRoutine; /* 0048 */
821 ULONG EnvironmentUpdateCount; /* 0050 */
822 ULONG64 KernelCallbackTable; /* 0058 */
823 ULONG Reserved; /* 0060 */
824 ULONG AtlThunkSListPtr32; /* 0064 */
825 ULONG64 FreeList; /* 0068 */
826 ULONG TlsExpansionCounter; /* 0070 */
827 ULONG64 TlsBitmap; /* 0078 */
828 ULONG TlsBitmapBits[2]; /* 0080 */
829 ULONG64 ReadOnlySharedMemoryBase; /* 0088 */
830 ULONG64 ReadOnlySharedMemoryHeap; /* 0090 */
831 ULONG64 ReadOnlyStaticServerData; /* 0098 */
832 ULONG64 AnsiCodePageData; /* 00a0 */
833 ULONG64 OemCodePageData; /* 00a8 */
834 ULONG64 UnicodeCaseTableData; /* 00b0 */
835 ULONG NumberOfProcessors; /* 00b8 */
836 ULONG NtGlobalFlag; /* 00bc */
837 LARGE_INTEGER CriticalSectionTimeout; /* 00c0 */
838 ULONG64 HeapSegmentReserve; /* 00c8 */
839 ULONG64 HeapSegmentCommit; /* 00d0 */
840 ULONG64 HeapDeCommitTotalFreeThreshold; /* 00d8 */
841 ULONG64 HeapDeCommitFreeBlockThreshold; /* 00e0 */
842 ULONG NumberOfHeaps; /* 00e8 */
843 ULONG MaximumNumberOfHeaps; /* 00ec */
844 ULONG64 ProcessHeaps; /* 00f0 */
845 ULONG64 GdiSharedHandleTable; /* 00f8 */
846 ULONG64 ProcessStarterHelper; /* 0100 */
847 ULONG64 GdiDCAttributeList; /* 0108 */
848 ULONG64 LoaderLock; /* 0110 */
849 ULONG OSMajorVersion; /* 0118 */
850 ULONG OSMinorVersion; /* 011c */
851 ULONG OSBuildNumber; /* 0120 */
852 ULONG OSPlatformId; /* 0124 */
853 ULONG ImageSubSystem; /* 0128 */
854 ULONG ImageSubSystemMajorVersion; /* 012c */
855 ULONG ImageSubSystemMinorVersion; /* 0130 */
856 ULONG ImageProcessAffinityMask; /* 0134 */
857 ULONG64 GdiHandleBuffer[28]; /* 0138 */
858 ULONG unknown[6]; /* 0218 */
859 ULONG64 PostProcessInitRoutine; /* 0230 */
860 ULONG64 TlsExpansionBitmap; /* 0238 */
861 ULONG TlsExpansionBitmapBits[32]; /* 0240 */
862 ULONG SessionId; /* 02c0 */
863 ULARGE_INTEGER AppCompatFlags; /* 02c8 */
864 ULARGE_INTEGER AppCompatFlagsUser; /* 02d0 */
865 ULONG64 ShimData; /* 02d8 */
866 ULONG64 AppCompatInfo; /* 02e0 */
867 UNICODE_STRING64 CSDVersion; /* 02e8 */
868 ULONG64 ActivationContextData; /* 02f8 */
869 ULONG64 ProcessAssemblyStorageMap; /* 0300 */
870 ULONG64 SystemDefaultActivationData; /* 0308 */
871 ULONG64 SystemAssemblyStorageMap; /* 0310 */
872 ULONG64 MinimumStackCommit; /* 0318 */
873 ULONG64 FlsCallback; /* 0320 */
874 LIST_ENTRY64 FlsListHead; /* 0328 */
875 ULONG64 FlsBitmap; /* 0338 */
876 ULONG FlsBitmapBits[4]; /* 0340 */
877 ULONG FlsHighIndex; /* 0350 */
878 ULONG64 WerRegistrationData; /* 0358 */
879 ULONG64 WerShipAssertPtr; /* 0360 */
880 ULONG64 pUnused; /* 0368 */
881 ULONG64 pImageHeaderHash; /* 0370 */
882 ULONG TracingFlags; /* 0378 */
883 ULONGLONG CsrServerReadOnlySharedMemoryBase; /* 0380 */
884 ULONG TppWorkerpListLock; /* 0388 */
885 LIST_ENTRY64 TppWorkerpList; /* 0390 */
886 ULONG64 WaitOnAddressHashTable [0x80]; /* 03a0 */
887 ULONG64 TelemetryCoverageHeader; /* 07a0 */
888 ULONG CloudFileFlags; /* 07a8 */
889 ULONG CloudFileDiagFlags; /* 07ac */
890 CHAR PlaceholderCompatibilityMode; /* 07b0 */
891 CHAR PlaceholderCompatibilityModeReserved[7]; /* 07b1 */
892 ULONG64 LeapSecondData; /* 07b8 */
893 ULONG LeapSecondFlags; /* 07c0 */
894 ULONG NtGlobalFlag2; /* 07c4 */
895 } PEB64;
897 typedef struct _TEB32
899 NT_TIB32 Tib; /* 0000 */
900 ULONG EnvironmentPointer; /* 001c */
901 CLIENT_ID32 ClientId; /* 0020 */
902 ULONG ActiveRpcHandle; /* 0028 */
903 ULONG ThreadLocalStoragePointer; /* 002c */
904 ULONG Peb; /* 0030 */
905 ULONG LastErrorValue; /* 0034 */
906 ULONG CountOfOwnedCriticalSections; /* 0038 */
907 ULONG CsrClientThread; /* 003c */
908 ULONG Win32ThreadInfo; /* 0040 */
909 ULONG User32Reserved[26]; /* 0044 */
910 ULONG UserReserved[5]; /* 00ac */
911 ULONG WOW32Reserved; /* 00c0 */
912 ULONG CurrentLocale; /* 00c4 */
913 ULONG FpSoftwareStatusRegister; /* 00c8 */
914 ULONG ReservedForDebuggerInstrumentation[16]; /* 00cc */
915 ULONG SystemReserved1[26]; /* 010c */
916 char PlaceholderCompatibilityMode; /* 0174 */
917 char PlaceholderReserved[11]; /* 0175 */
918 DWORD ProxiedProcessId; /* 0180 */
919 ACTIVATION_CONTEXT_STACK32 ActivationContextStack; /* 0184 */
920 UCHAR WorkingOnBehalfOfTicket[8]; /* 019c */
921 LONG ExceptionCode; /* 01a4 */
922 ULONG ActivationContextStackPointer; /* 01a8 */
923 ULONG InstrumentationCallbackSp; /* 01ac */
924 ULONG InstrumentationCallbackPreviousPc; /* 01b0 */
925 ULONG InstrumentationCallbackPreviousSp; /* 01b4 */
926 BOOLEAN InstrumentationCallbackDisabled; /* 01b8 */
927 BYTE SpareBytes1[23]; /* 01b9 */
928 ULONG TxFsContext; /* 01d0 */
929 ULONG GdiTebBatch[0x138]; /* 01d4 */
930 CLIENT_ID32 RealClientId; /* 06b4 */
931 ULONG GdiCachedProcessHandle; /* 06bc */
932 ULONG GdiClientPID; /* 06c0 */
933 ULONG GdiClientTID; /* 06c4 */
934 ULONG GdiThreadLocaleInfo; /* 06c8 */
935 ULONG Win32ClientInfo[62]; /* 06cc */
936 ULONG glDispatchTable[233]; /* 07c4 */
937 ULONG glReserved1[29]; /* 0b68 */
938 ULONG glReserved2; /* 0bdc */
939 ULONG glSectionInfo; /* 0be0 */
940 ULONG glSection; /* 0be4 */
941 ULONG glTable; /* 0be8 */
942 ULONG glCurrentRC; /* 0bec */
943 ULONG glContext; /* 0bf0 */
944 ULONG LastStatusValue; /* 0bf4 */
945 UNICODE_STRING32 StaticUnicodeString; /* 0bf8 */
946 WCHAR StaticUnicodeBuffer[261]; /* 0c00 */
947 ULONG DeallocationStack; /* 0e0c */
948 ULONG TlsSlots[64]; /* 0e10 */
949 LIST_ENTRY32 TlsLinks; /* 0f10 */
950 ULONG Vdm; /* 0f18 */
951 ULONG ReservedForNtRpc; /* 0f1c */
952 ULONG DbgSsReserved[2]; /* 0f20 */
953 ULONG HardErrorDisabled; /* 0f28 */
954 ULONG Instrumentation[16]; /* 0f2c */
955 ULONG WinSockData; /* 0f6c */
956 ULONG GdiBatchCount; /* 0f70 */
957 ULONG Spare2; /* 0f74 */
958 ULONG GuaranteedStackBytes; /* 0f78 */
959 ULONG ReservedForPerf; /* 0f7c */
960 ULONG ReservedForOle; /* 0f80 */
961 ULONG WaitingOnLoaderLock; /* 0f84 */
962 ULONG Reserved5[3]; /* 0f88 */
963 ULONG TlsExpansionSlots; /* 0f94 */
964 ULONG ImpersonationLocale; /* 0f98 */
965 ULONG IsImpersonating; /* 0f9c */
966 ULONG NlsCache; /* 0fa0 */
967 ULONG ShimData; /* 0fa4 */
968 ULONG HeapVirtualAffinity; /* 0fa8 */
969 ULONG CurrentTransactionHandle; /* 0fac */
970 ULONG ActiveFrame; /* 0fb0 */
971 ULONG FlsSlots; /* 0fb4 */
972 ULONG PreferredLanguages; /* 0fb8 */
973 ULONG UserPrefLanguages; /* 0fbc */
974 ULONG MergedPrefLanguages; /* 0fc0 */
975 ULONG MuiImpersonation; /* 0fc4 */
976 USHORT CrossTebFlags; /* 0fc8 */
977 USHORT SameTebFlags; /* 0fca */
978 ULONG TxnScopeEnterCallback; /* 0fcc */
979 ULONG TxnScopeExitCallback; /* 0fd0 */
980 ULONG TxnScopeContext; /* 0fd4 */
981 ULONG LockCount; /* 0fd8 */
982 LONG WowTebOffset; /* 0fdc */
983 ULONG ResourceRetValue; /* 0fe0 */
984 ULONG ReservedForWdf; /* 0fe4 */
985 ULONGLONG ReservedForCrt; /* 0fe8 */
986 GUID EffectiveContainerId; /* 0ff0 */
987 } TEB32;
989 typedef struct _TEB64
991 NT_TIB64 Tib; /* 0000 */
992 ULONG64 EnvironmentPointer; /* 0038 */
993 CLIENT_ID64 ClientId; /* 0040 */
994 ULONG64 ActiveRpcHandle; /* 0050 */
995 ULONG64 ThreadLocalStoragePointer; /* 0058 */
996 ULONG64 Peb; /* 0060 */
997 ULONG LastErrorValue; /* 0068 */
998 ULONG CountOfOwnedCriticalSections; /* 006c */
999 ULONG64 CsrClientThread; /* 0070 */
1000 ULONG64 Win32ThreadInfo; /* 0078 */
1001 ULONG User32Reserved[26]; /* 0080 */
1002 ULONG UserReserved[5]; /* 00e8 */
1003 ULONG64 WOW32Reserved; /* 0100 */
1004 ULONG CurrentLocale; /* 0108 */
1005 ULONG FpSoftwareStatusRegister; /* 010c */
1006 ULONG64 ReservedForDebuggerInstrumentation[16]; /* 0110 */
1007 ULONG64 SystemReserved1[30]; /* 0190 */
1008 char PlaceholderCompatibilityMode; /* 0280 */
1009 char PlaceholderReserved[11]; /* 0281 */
1010 DWORD ProxiedProcessId; /* 028c */
1011 ACTIVATION_CONTEXT_STACK64 ActivationContextStack; /* 0290 */
1012 UCHAR WorkingOnBehalfOfTicket[8]; /* 02b8 */
1013 LONG ExceptionCode; /* 02c0 */
1014 ULONG64 ActivationContextStackPointer; /* 02c8 */
1015 ULONG64 InstrumentationCallbackSp; /* 02d0 */
1016 ULONG64 InstrumentationCallbackPreviousPc; /* 02d8 */
1017 ULONG64 InstrumentationCallbackPreviousSp; /* 02e0 */
1018 ULONG TxFsContext; /* 02e8 */
1019 BOOLEAN InstrumentationCallbackDisabled; /* 02ec */
1020 ULONG64 GdiTebBatch[0x9d]; /* 02f0 */
1021 CLIENT_ID64 RealClientId; /* 07d8 */
1022 ULONG64 GdiCachedProcessHandle; /* 07e8 */
1023 ULONG GdiClientPID; /* 07f0 */
1024 ULONG GdiClientTID; /* 07f4 */
1025 ULONG64 GdiThreadLocaleInfo; /* 07f8 */
1026 ULONG64 Win32ClientInfo[62]; /* 0800 */
1027 ULONG64 glDispatchTable[233]; /* 09f0 */
1028 ULONG64 glReserved1[29]; /* 1138 */
1029 ULONG64 glReserved2; /* 1220 */
1030 ULONG64 glSectionInfo; /* 1228 */
1031 ULONG64 glSection; /* 1230 */
1032 ULONG64 glTable; /* 1238 */
1033 ULONG64 glCurrentRC; /* 1240 */
1034 ULONG64 glContext; /* 1248 */
1035 ULONG LastStatusValue; /* 1250 */
1036 UNICODE_STRING64 StaticUnicodeString; /* 1258 */
1037 WCHAR StaticUnicodeBuffer[261]; /* 1268 */
1038 ULONG64 DeallocationStack; /* 1478 */
1039 ULONG64 TlsSlots[64]; /* 1480 */
1040 LIST_ENTRY64 TlsLinks; /* 1680 */
1041 ULONG64 Vdm; /* 1690 */
1042 ULONG64 ReservedForNtRpc; /* 1698 */
1043 ULONG64 DbgSsReserved[2]; /* 16a0 */
1044 ULONG HardErrorDisabled; /* 16b0 */
1045 ULONG64 Instrumentation[16]; /* 16b8 */
1046 ULONG64 WinSockData; /* 1738 */
1047 ULONG GdiBatchCount; /* 1740 */
1048 ULONG Spare2; /* 1744 */
1049 ULONG GuaranteedStackBytes; /* 1748 */
1050 ULONG64 ReservedForPerf; /* 1750 */
1051 ULONG64 ReservedForOle; /* 1758 */
1052 ULONG WaitingOnLoaderLock; /* 1760 */
1053 ULONG64 Reserved5[3]; /* 1768 */
1054 ULONG64 TlsExpansionSlots; /* 1780 */
1055 ULONG64 DeallocationBStore; /* 1788 */
1056 ULONG64 BStoreLimit; /* 1790 */
1057 ULONG ImpersonationLocale; /* 1798 */
1058 ULONG IsImpersonating; /* 179c */
1059 ULONG64 NlsCache; /* 17a0 */
1060 ULONG64 ShimData; /* 17a8 */
1061 ULONG HeapVirtualAffinity; /* 17b0 */
1062 ULONG64 CurrentTransactionHandle; /* 17b8 */
1063 ULONG64 ActiveFrame; /* 17c0 */
1064 ULONG64 FlsSlots; /* 17c8 */
1065 ULONG64 PreferredLanguages; /* 17d0 */
1066 ULONG64 UserPrefLanguages; /* 17d8 */
1067 ULONG64 MergedPrefLanguages; /* 17e0 */
1068 ULONG MuiImpersonation; /* 17e8 */
1069 USHORT CrossTebFlags; /* 17ec */
1070 USHORT SameTebFlags; /* 17ee */
1071 ULONG64 TxnScopeEnterCallback; /* 17f0 */
1072 ULONG64 TxnScopeExitCallback; /* 17f8 */
1073 ULONG64 TxnScopeContext; /* 1800 */
1074 ULONG LockCount; /* 1808 */
1075 LONG WowTebOffset; /* 180c */
1076 ULONG64 ResourceRetValue; /* 1810 */
1077 ULONG64 ReservedForWdf; /* 1818 */
1078 ULONGLONG ReservedForCrt; /* 1820 */
1079 GUID EffectiveContainerId; /* 1828 */
1080 } TEB64;
1082 /* reserved TEB64 TLS slots for Wow64 */
1083 #define WOW64_TLS_CPURESERVED 1
1084 #define WOW64_TLS_TEMPLIST 3
1085 #define WOW64_TLS_FILESYSREDIR 8
1088 /***********************************************************************
1089 * Enums
1092 typedef enum _FILE_INFORMATION_CLASS {
1093 FileDirectoryInformation = 1,
1094 FileFullDirectoryInformation,
1095 FileBothDirectoryInformation,
1096 FileBasicInformation,
1097 FileStandardInformation,
1098 FileInternalInformation,
1099 FileEaInformation,
1100 FileAccessInformation,
1101 FileNameInformation,
1102 FileRenameInformation,
1103 FileLinkInformation,
1104 FileNamesInformation,
1105 FileDispositionInformation,
1106 FilePositionInformation,
1107 FileFullEaInformation,
1108 FileModeInformation,
1109 FileAlignmentInformation,
1110 FileAllInformation,
1111 FileAllocationInformation,
1112 FileEndOfFileInformation,
1113 FileAlternateNameInformation,
1114 FileStreamInformation,
1115 FilePipeInformation,
1116 FilePipeLocalInformation,
1117 FilePipeRemoteInformation,
1118 FileMailslotQueryInformation,
1119 FileMailslotSetInformation,
1120 FileCompressionInformation,
1121 FileObjectIdInformation,
1122 FileCompletionInformation,
1123 FileMoveClusterInformation,
1124 FileQuotaInformation,
1125 FileReparsePointInformation,
1126 FileNetworkOpenInformation,
1127 FileAttributeTagInformation,
1128 FileTrackingInformation,
1129 FileIdBothDirectoryInformation,
1130 FileIdFullDirectoryInformation,
1131 FileValidDataLengthInformation,
1132 FileShortNameInformation,
1133 FileIoCompletionNotificationInformation,
1134 FileIoStatusBlockRangeInformation,
1135 FileIoPriorityHintInformation,
1136 FileSfioReserveInformation,
1137 FileSfioVolumeInformation,
1138 FileHardLinkInformation,
1139 FileProcessIdsUsingFileInformation,
1140 FileNormalizedNameInformation,
1141 FileNetworkPhysicalNameInformation,
1142 FileIdGlobalTxDirectoryInformation,
1143 FileIsRemoteDeviceInformation,
1144 FileAttributeCacheInformation,
1145 FileNumaNodeInformation,
1146 FileStandardLinkInformation,
1147 FileRemoteProtocolInformation,
1148 FileRenameInformationBypassAccessCheck,
1149 FileLinkInformationBypassAccessCheck,
1150 FileVolumeNameInformation,
1151 FileIdInformation,
1152 FileIdExtdDirectoryInformation,
1153 FileReplaceCompletionInformation,
1154 FileHardLinkFullIdInformation,
1155 FileIdExtdBothDirectoryInformation,
1156 FileMaximumInformation
1157 } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
1159 typedef struct _FILE_DIRECTORY_INFORMATION {
1160 ULONG NextEntryOffset;
1161 ULONG FileIndex;
1162 LARGE_INTEGER CreationTime;
1163 LARGE_INTEGER LastAccessTime;
1164 LARGE_INTEGER LastWriteTime;
1165 LARGE_INTEGER ChangeTime;
1166 LARGE_INTEGER EndOfFile;
1167 LARGE_INTEGER AllocationSize;
1168 ULONG FileAttributes;
1169 ULONG FileNameLength;
1170 WCHAR FileName[ANYSIZE_ARRAY];
1171 } FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION;
1173 typedef struct _FILE_FULL_DIRECTORY_INFORMATION {
1174 ULONG NextEntryOffset;
1175 ULONG FileIndex;
1176 LARGE_INTEGER CreationTime;
1177 LARGE_INTEGER LastAccessTime;
1178 LARGE_INTEGER LastWriteTime;
1179 LARGE_INTEGER ChangeTime;
1180 LARGE_INTEGER EndOfFile;
1181 LARGE_INTEGER AllocationSize;
1182 ULONG FileAttributes;
1183 ULONG FileNameLength;
1184 ULONG EaSize;
1185 WCHAR FileName[ANYSIZE_ARRAY];
1186 } FILE_FULL_DIRECTORY_INFORMATION, *PFILE_FULL_DIRECTORY_INFORMATION,
1187 FILE_FULL_DIR_INFORMATION, *PFILE_FULL_DIR_INFORMATION;
1189 typedef struct _FILE_ID_FULL_DIRECTORY_INFORMATION {
1190 ULONG NextEntryOffset;
1191 ULONG FileIndex;
1192 LARGE_INTEGER CreationTime;
1193 LARGE_INTEGER LastAccessTime;
1194 LARGE_INTEGER LastWriteTime;
1195 LARGE_INTEGER ChangeTime;
1196 LARGE_INTEGER EndOfFile;
1197 LARGE_INTEGER AllocationSize;
1198 ULONG FileAttributes;
1199 ULONG FileNameLength;
1200 ULONG EaSize;
1201 LARGE_INTEGER FileId;
1202 WCHAR FileName[ANYSIZE_ARRAY];
1203 } FILE_ID_FULL_DIRECTORY_INFORMATION, *PFILE_ID_FULL_DIRECTORY_INFORMATION;
1205 typedef struct _FILE_BOTH_DIRECTORY_INFORMATION {
1206 ULONG NextEntryOffset;
1207 ULONG FileIndex;
1208 LARGE_INTEGER CreationTime;
1209 LARGE_INTEGER LastAccessTime;
1210 LARGE_INTEGER LastWriteTime;
1211 LARGE_INTEGER ChangeTime;
1212 LARGE_INTEGER EndOfFile;
1213 LARGE_INTEGER AllocationSize;
1214 ULONG FileAttributes;
1215 ULONG FileNameLength;
1216 ULONG EaSize;
1217 CHAR ShortNameLength;
1218 WCHAR ShortName[12];
1219 WCHAR FileName[ANYSIZE_ARRAY];
1220 } FILE_BOTH_DIRECTORY_INFORMATION, *PFILE_BOTH_DIRECTORY_INFORMATION,
1221 FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;
1223 typedef struct _FILE_ID_BOTH_DIRECTORY_INFORMATION {
1224 ULONG NextEntryOffset;
1225 ULONG FileIndex;
1226 LARGE_INTEGER CreationTime;
1227 LARGE_INTEGER LastAccessTime;
1228 LARGE_INTEGER LastWriteTime;
1229 LARGE_INTEGER ChangeTime;
1230 LARGE_INTEGER EndOfFile;
1231 LARGE_INTEGER AllocationSize;
1232 ULONG FileAttributes;
1233 ULONG FileNameLength;
1234 ULONG EaSize;
1235 CHAR ShortNameLength;
1236 WCHAR ShortName[12];
1237 LARGE_INTEGER FileId;
1238 WCHAR FileName[ANYSIZE_ARRAY];
1239 } FILE_ID_BOTH_DIRECTORY_INFORMATION, *PFILE_ID_BOTH_DIRECTORY_INFORMATION;
1241 typedef struct _FILE_ID_GLOBAL_TX_DIR_INFORMATION {
1242 ULONG NextEntryOffset;
1243 ULONG FileIndex;
1244 LARGE_INTEGER CreationTime;
1245 LARGE_INTEGER LastAccessTime;
1246 LARGE_INTEGER LastWriteTime;
1247 LARGE_INTEGER ChangeTime;
1248 LARGE_INTEGER EndOfFile;
1249 LARGE_INTEGER AllocationSize;
1250 ULONG FileAttributes;
1251 ULONG FileNameLength;
1252 LARGE_INTEGER FileId;
1253 GUID LockingTransactionId;
1254 ULONG TxInfoFlags;
1255 WCHAR FileName[ANYSIZE_ARRAY];
1256 } FILE_ID_GLOBAL_TX_DIR_INFORMATION, *PFILE_ID_GLOBAL_TX_DIR_INFORMATION;
1258 typedef struct _FILE_BASIC_INFORMATION {
1259 LARGE_INTEGER CreationTime;
1260 LARGE_INTEGER LastAccessTime;
1261 LARGE_INTEGER LastWriteTime;
1262 LARGE_INTEGER ChangeTime;
1263 ULONG FileAttributes;
1264 } FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
1266 typedef struct _FILE_STANDARD_INFORMATION {
1267 LARGE_INTEGER AllocationSize;
1268 LARGE_INTEGER EndOfFile;
1269 ULONG NumberOfLinks;
1270 BOOLEAN DeletePending;
1271 BOOLEAN Directory;
1272 } FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;
1274 typedef struct _FILE_INTERNAL_INFORMATION {
1275 LARGE_INTEGER IndexNumber;
1276 } FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;
1278 typedef struct _FILE_ID_128 {
1279 UCHAR Identifier[16];
1280 } FILE_ID_128, *PFILE_ID_128;
1282 typedef struct _FILE_ID_INFORMATION {
1283 ULONGLONG VolumeSerialNumber;
1284 FILE_ID_128 FileId;
1285 } FILE_ID_INFORMATION, *PFILE_ID_INFORMATION;
1287 typedef struct _FILE_EA_INFORMATION {
1288 ULONG EaSize;
1289 } FILE_EA_INFORMATION, *PFILE_EA_INFORMATION;
1291 typedef struct _FILE_ACCESS_INFORMATION {
1292 ACCESS_MASK AccessFlags;
1293 } FILE_ACCESS_INFORMATION, *PFILE_ACCESS_INFORMATION;
1295 typedef struct _FILE_NAME_INFORMATION {
1296 ULONG FileNameLength;
1297 WCHAR FileName[1];
1298 } FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
1300 typedef struct _FILE_RENAME_INFORMATION {
1301 BOOLEAN ReplaceIfExists;
1302 HANDLE RootDirectory;
1303 ULONG FileNameLength;
1304 WCHAR FileName[1];
1305 } FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;
1307 typedef struct _FILE_LINK_INFORMATION {
1308 BOOLEAN ReplaceIfExists;
1309 HANDLE RootDirectory;
1310 ULONG FileNameLength;
1311 WCHAR FileName[1];
1312 } FILE_LINK_INFORMATION, *PFILE_LINK_INFORMATION;
1314 typedef struct _FILE_NAMES_INFORMATION {
1315 ULONG NextEntryOffset;
1316 ULONG FileIndex;
1317 ULONG FileNameLength;
1318 WCHAR FileName[1];
1319 } FILE_NAMES_INFORMATION, *PFILE_NAMES_INFORMATION;
1321 typedef struct _FILE_DISPOSITION_INFORMATION {
1322 BOOLEAN DoDeleteFile;
1323 } FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION;
1325 typedef struct _FILE_POSITION_INFORMATION {
1326 LARGE_INTEGER CurrentByteOffset;
1327 } FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;
1329 typedef struct _FILE_ALIGNMENT_INFORMATION {
1330 ULONG AlignmentRequirement;
1331 } FILE_ALIGNMENT_INFORMATION, *PFILE_ALIGNMENT_INFORMATION;
1333 typedef struct _FILE_ALLOCATION_INFORMATION {
1334 LARGE_INTEGER AllocationSize;
1335 } FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION;
1337 typedef struct _FILE_END_OF_FILE_INFORMATION {
1338 LARGE_INTEGER EndOfFile;
1339 } FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;
1341 typedef struct _FILE_NETWORK_OPEN_INFORMATION {
1342 LARGE_INTEGER CreationTime;
1343 LARGE_INTEGER LastAccessTime;
1344 LARGE_INTEGER LastWriteTime;
1345 LARGE_INTEGER ChangeTime;
1346 LARGE_INTEGER AllocationSize;
1347 LARGE_INTEGER EndOfFile;
1348 ULONG FileAttributes;
1349 } FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;
1351 typedef struct _FILE_FULL_EA_INFORMATION {
1352 ULONG NextEntryOffset;
1353 UCHAR Flags;
1354 UCHAR EaNameLength;
1355 USHORT EaValueLength;
1356 CHAR EaName[1];
1357 } FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
1359 typedef struct _FILE_MODE_INFORMATION {
1360 ULONG Mode;
1361 } FILE_MODE_INFORMATION, *PFILE_MODE_INFORMATION;
1363 typedef struct _FILE_STREAM_INFORMATION
1365 ULONG NextEntryOffset;
1366 ULONG StreamNameLength;
1367 LARGE_INTEGER StreamSize;
1368 LARGE_INTEGER StreamAllocationSize;
1369 WCHAR StreamName[1];
1370 } FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
1372 typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION
1374 ULONG FileAttributes;
1375 ULONG ReparseTag;
1376 } FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION;
1378 typedef struct _FILE_MAILSLOT_QUERY_INFORMATION {
1379 ULONG MaximumMessageSize;
1380 ULONG MailslotQuota;
1381 ULONG NextMessageSize;
1382 ULONG MessagesAvailable;
1383 LARGE_INTEGER ReadTimeout;
1384 } FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION;
1386 typedef struct _FILE_MAILSLOT_SET_INFORMATION {
1387 LARGE_INTEGER ReadTimeout;
1388 } FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION;
1390 typedef struct _FILE_PIPE_INFORMATION {
1391 ULONG ReadMode;
1392 ULONG CompletionMode;
1393 } FILE_PIPE_INFORMATION, *PFILE_PIPE_INFORMATION;
1395 typedef struct _FILE_PIPE_LOCAL_INFORMATION {
1396 ULONG NamedPipeType;
1397 ULONG NamedPipeConfiguration;
1398 ULONG MaximumInstances;
1399 ULONG CurrentInstances;
1400 ULONG InboundQuota;
1401 ULONG ReadDataAvailable;
1402 ULONG OutboundQuota;
1403 ULONG WriteQuotaAvailable;
1404 ULONG NamedPipeState;
1405 ULONG NamedPipeEnd;
1406 } FILE_PIPE_LOCAL_INFORMATION, *PFILE_PIPE_LOCAL_INFORMATION;
1408 #define FILE_PIPE_DISCONNECTED_STATE 0x00000001
1409 #define FILE_PIPE_LISTENING_STATE 0x00000002
1410 #define FILE_PIPE_CONNECTED_STATE 0x00000003
1411 #define FILE_PIPE_CLOSING_STATE 0x00000004
1413 typedef struct _FILE_OBJECTID_BUFFER
1415 BYTE ObjectId[16];
1416 union
1418 struct
1420 BYTE BirthVolumeId[16];
1421 BYTE BirthObjectId[16];
1422 BYTE DomainId[16];
1423 } DUMMYSTRUCTNAME;
1424 BYTE ExtendedInfo[48];
1425 } DUMMYUNIONNAME;
1426 } FILE_OBJECTID_BUFFER, *PFILE_OBJECTID_BUFFER;
1428 typedef struct _FILE_OBJECTID_INFORMATION {
1429 LONGLONG FileReference;
1430 UCHAR ObjectId[16];
1431 union {
1432 struct {
1433 UCHAR BirthVolumeId[16];
1434 UCHAR BirthObjectId[16];
1435 UCHAR DomainId[16];
1436 } DUMMYSTRUCTNAME;
1437 UCHAR ExtendedInfo[48];
1438 } DUMMYUNIONNAME;
1439 } FILE_OBJECTID_INFORMATION, *PFILE_OBJECTID_INFORMATION;
1441 typedef struct _FILE_QUOTA_INFORMATION {
1442 ULONG NextEntryOffset;
1443 ULONG SidLength;
1444 LARGE_INTEGER ChangeTime;
1445 LARGE_INTEGER QuotaUsed;
1446 LARGE_INTEGER QuotaThreshold;
1447 LARGE_INTEGER QuotaLimit;
1448 SID Sid;
1449 } FILE_QUOTA_INFORMATION, *PFILE_QUOTA_INFORMATION;
1451 typedef struct _FILE_REPARSE_POINT_INFORMATION {
1452 LONGLONG FileReference;
1453 ULONG Tag;
1454 } FILE_REPARSE_POINT_INFORMATION, *PFILE_REPARSE_POINT_INFORMATION;
1456 typedef struct _FILE_ALL_INFORMATION {
1457 FILE_BASIC_INFORMATION BasicInformation;
1458 FILE_STANDARD_INFORMATION StandardInformation;
1459 FILE_INTERNAL_INFORMATION InternalInformation;
1460 FILE_EA_INFORMATION EaInformation;
1461 FILE_ACCESS_INFORMATION AccessInformation;
1462 FILE_POSITION_INFORMATION PositionInformation;
1463 FILE_MODE_INFORMATION ModeInformation;
1464 FILE_ALIGNMENT_INFORMATION AlignmentInformation;
1465 FILE_NAME_INFORMATION NameInformation;
1466 } FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION;
1468 typedef struct _FILE_IO_COMPLETION_NOTIFICATION_INFORMATION {
1469 ULONG Flags;
1470 } FILE_IO_COMPLETION_NOTIFICATION_INFORMATION, *PFILE_IO_COMPLETION_NOTIFICATION_INFORMATION;
1472 #define FILE_SKIP_COMPLETION_PORT_ON_SUCCESS 0x1
1473 #define FILE_SKIP_SET_EVENT_ON_HANDLE 0x2
1474 #define FILE_SKIP_SET_USER_EVENT_ON_FAST_IO 0x4
1476 typedef struct _PROCESS_INSTRUMENTATION_CALLBACK_INFORMATION
1478 ULONG Version;
1479 ULONG Reserved;
1480 VOID *Callback;
1481 } PROCESS_INSTRUMENTATION_CALLBACK_INFORMATION, *PPROCESS_INSTRUMENTATION_CALLBACK_INFORMATION;
1483 typedef enum _FSINFOCLASS {
1484 FileFsVolumeInformation = 1,
1485 FileFsLabelInformation,
1486 FileFsSizeInformation,
1487 FileFsDeviceInformation,
1488 FileFsAttributeInformation,
1489 FileFsControlInformation,
1490 FileFsFullSizeInformation,
1491 FileFsObjectIdInformation,
1492 FileFsMaximumInformation
1493 } FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
1495 typedef enum _KEY_INFORMATION_CLASS {
1496 KeyBasicInformation,
1497 KeyNodeInformation,
1498 KeyFullInformation,
1499 KeyNameInformation,
1500 KeyCachedInformation,
1501 KeyFlagsInformation,
1502 KeyVirtualizationInformation,
1503 KeyHandleTagsInformation,
1504 MaxKeyInfoClass
1505 } KEY_INFORMATION_CLASS;
1507 typedef enum _KEY_VALUE_INFORMATION_CLASS {
1508 KeyValueBasicInformation,
1509 KeyValueFullInformation,
1510 KeyValuePartialInformation,
1511 KeyValueFullInformationAlign64,
1512 KeyValuePartialInformationAlign64
1513 } KEY_VALUE_INFORMATION_CLASS;
1515 typedef enum _OBJECT_INFORMATION_CLASS {
1516 ObjectBasicInformation,
1517 ObjectNameInformation,
1518 ObjectTypeInformation,
1519 ObjectTypesInformation,
1520 ObjectDataInformation
1521 } OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS;
1523 typedef enum _PROCESSINFOCLASS {
1524 ProcessBasicInformation = 0,
1525 ProcessQuotaLimits = 1,
1526 ProcessIoCounters = 2,
1527 ProcessVmCounters = 3,
1528 ProcessTimes = 4,
1529 ProcessBasePriority = 5,
1530 ProcessRaisePriority = 6,
1531 ProcessDebugPort = 7,
1532 ProcessExceptionPort = 8,
1533 ProcessAccessToken = 9,
1534 ProcessLdtInformation = 10,
1535 ProcessLdtSize = 11,
1536 ProcessDefaultHardErrorMode = 12,
1537 ProcessIoPortHandlers = 13,
1538 ProcessPooledUsageAndLimits = 14,
1539 ProcessWorkingSetWatch = 15,
1540 ProcessUserModeIOPL = 16,
1541 ProcessEnableAlignmentFaultFixup = 17,
1542 ProcessPriorityClass = 18,
1543 ProcessWx86Information = 19,
1544 ProcessHandleCount = 20,
1545 ProcessAffinityMask = 21,
1546 ProcessPriorityBoost = 22,
1547 ProcessDeviceMap = 23,
1548 ProcessSessionInformation = 24,
1549 ProcessForegroundInformation = 25,
1550 ProcessWow64Information = 26,
1551 ProcessImageFileName = 27,
1552 ProcessLUIDDeviceMapsEnabled = 28,
1553 ProcessBreakOnTermination = 29,
1554 ProcessDebugObjectHandle = 30,
1555 ProcessDebugFlags = 31,
1556 ProcessHandleTracing = 32,
1557 ProcessIoPriority = 33,
1558 ProcessExecuteFlags = 34,
1559 ProcessTlsInformation = 35,
1560 ProcessCookie = 36,
1561 ProcessImageInformation = 37,
1562 ProcessCycleTime = 38,
1563 ProcessPagePriority = 39,
1564 ProcessInstrumentationCallback = 40,
1565 ProcessThreadStackAllocation = 41,
1566 ProcessWorkingSetWatchEx = 42,
1567 ProcessImageFileNameWin32 = 43,
1568 MaxProcessInfoClass,
1569 #ifdef __WINESRC__
1570 ProcessWineMakeProcessSystem = 1000,
1571 #endif
1572 } PROCESSINFOCLASS, PROCESS_INFORMATION_CLASS;
1574 #define MEM_EXECUTE_OPTION_DISABLE 0x01
1575 #define MEM_EXECUTE_OPTION_ENABLE 0x02
1576 #define MEM_EXECUTE_OPTION_DISABLE_THUNK_EMULATION 0x04
1577 #define MEM_EXECUTE_OPTION_PERMANENT 0x08
1579 typedef enum _SECTION_INHERIT {
1580 ViewShare = 1,
1581 ViewUnmap = 2
1582 } SECTION_INHERIT;
1584 typedef enum _SYSTEM_INFORMATION_CLASS {
1585 SystemBasicInformation = 0,
1586 SystemCpuInformation = 1,
1587 SystemPerformanceInformation = 2,
1588 SystemTimeOfDayInformation = 3, /* was SystemTimeInformation */
1589 SystemPathInformation = 4,
1590 SystemProcessInformation = 5,
1591 SystemCallCountInformation = 6,
1592 SystemDeviceInformation = 7,
1593 SystemProcessorPerformanceInformation = 8,
1594 SystemFlagsInformation = 9,
1595 SystemCallTimeInformation = 10,
1596 SystemModuleInformation = 11,
1597 SystemLocksInformation = 12,
1598 SystemStackTraceInformation = 13,
1599 SystemPagedPoolInformation = 14,
1600 SystemNonPagedPoolInformation = 15,
1601 SystemHandleInformation = 16,
1602 SystemObjectInformation = 17,
1603 SystemPageFileInformation = 18,
1604 SystemVdmInstemulInformation = 19,
1605 SystemVdmBopInformation = 20,
1606 SystemFileCacheInformation = 21,
1607 SystemPoolTagInformation = 22,
1608 SystemInterruptInformation = 23,
1609 SystemDpcBehaviorInformation = 24,
1610 SystemFullMemoryInformation = 25,
1611 SystemNotImplemented6 = 25,
1612 SystemLoadGdiDriverInformation = 26,
1613 SystemUnloadGdiDriverInformation = 27,
1614 SystemTimeAdjustmentInformation = 28,
1615 SystemTimeAdjustment = 28,
1616 SystemSummaryMemoryInformation = 29,
1617 SystemMirrorMemoryInformation = 30,
1618 SystemPerformanceTraceInformation = 31,
1619 SystemObsolete0 = 32,
1620 SystemExceptionInformation = 33,
1621 SystemCrashDumpStateInformation = 34,
1622 SystemKernelDebuggerInformation = 35,
1623 SystemContextSwitchInformation = 36,
1624 SystemRegistryQuotaInformation = 37,
1625 SystemExtendServiceTableInformation = 38,
1626 SystemPrioritySeperation = 39,
1627 SystemVerifierAddDriverInformation = 40,
1628 SystemVerifierRemoveDriverInformation = 41,
1629 SystemProcessorIdleInformation = 42,
1630 SystemLegacyDriverInformation = 43,
1631 SystemCurrentTimeZoneInformation = 44,
1632 SystemLookasideInformation = 45,
1633 SystemTimeSlipNotification = 46,
1634 SystemSessionCreate = 47,
1635 SystemSessionDetach = 48,
1636 SystemSessionInformation = 49,
1637 SystemRangeStartInformation = 50,
1638 SystemVerifierInformation = 51,
1639 SystemVerifierThunkExtend = 52,
1640 SystemSessionProcessesInformation = 53,
1641 SystemLoadGdiDriverInSystemSpace = 54,
1642 SystemNumaProcessorMap = 55,
1643 SystemPrefetcherInformation = 56,
1644 SystemExtendedProcessInformation = 57,
1645 SystemRecommendedSharedDataAlignment = 58,
1646 SystemComPlusPackage = 59,
1647 SystemNumaAvailableMemory = 60,
1648 SystemProcessorPowerInformation = 61,
1649 SystemEmulationBasicInformation = 62,
1650 SystemEmulationProcessorInformation = 63,
1651 SystemExtendedHandleInformation = 64,
1652 SystemLostDelayedWriteInformation = 65,
1653 SystemBigPoolInformation = 66,
1654 SystemSessionPoolTagInformation = 67,
1655 SystemSessionMappedViewInformation = 68,
1656 SystemHotpatchInformation = 69,
1657 SystemObjectSecurityMode = 70,
1658 SystemWatchdogTimerHandler = 71,
1659 SystemWatchdogTimerInformation = 72,
1660 SystemLogicalProcessorInformation = 73,
1661 SystemWow64SharedInformationObsolete = 74,
1662 SystemRegisterFirmwareTableInformationHandler = 75,
1663 SystemFirmwareTableInformation = 76,
1664 SystemModuleInformationEx = 77,
1665 SystemVerifierTriageInformation = 78,
1666 SystemSuperfetchInformation = 79,
1667 SystemMemoryListInformation = 80,
1668 SystemFileCacheInformationEx = 81,
1669 SystemThreadPriorityClientIdInformation = 82,
1670 SystemProcessorIdleCycleTimeInformation = 83,
1671 SystemVerifierCancellationInformation = 84,
1672 SystemProcessorPowerInformationEx = 85,
1673 SystemRefTraceInformation = 86,
1674 SystemSpecialPoolInformation = 87,
1675 SystemProcessIdInformation = 88,
1676 SystemErrorPortInformation = 89,
1677 SystemBootEnvironmentInformation = 90,
1678 SystemHypervisorInformation = 91,
1679 SystemVerifierInformationEx = 92,
1680 SystemTimeZoneInformation = 93,
1681 SystemImageFileExecutionOptionsInformation = 94,
1682 SystemCoverageInformation = 95,
1683 SystemPrefetchPatchInformation = 96,
1684 SystemVerifierFaultsInformation = 97,
1685 SystemSystemPartitionInformation = 98,
1686 SystemSystemDiskInformation = 99,
1687 SystemProcessorPerformanceDistribution = 100,
1688 SystemNumaProximityNodeInformation = 101,
1689 SystemDynamicTimeZoneInformation = 102,
1690 SystemCodeIntegrityInformation = 103,
1691 SystemProcessorMicrocodeUpdateInformation = 104,
1692 SystemProcessorBrandString = 105,
1693 SystemVirtualAddressInformation = 106,
1694 SystemLogicalProcessorInformationEx = 107,
1695 SystemProcessorCycleTimeInformation = 108,
1696 SystemStoreInformation = 109,
1697 SystemRegistryAppendString = 110,
1698 SystemAitSamplingValue = 111,
1699 SystemVhdBootInformation = 112,
1700 SystemCpuQuotaInformation = 113,
1701 SystemNativeBasicInformation = 114,
1702 SystemErrorPortTimeouts = 115,
1703 SystemLowPriorityIoInformation = 116,
1704 SystemTpmBootEntropyInformation = 117,
1705 SystemVerifierCountersInformation = 118,
1706 SystemPagedPoolInformationEx = 119,
1707 SystemSystemPtesInformationEx = 120,
1708 SystemNodeDistanceInformation = 121,
1709 SystemAcpiAuditInformation = 122,
1710 SystemBasicPerformanceInformation = 123,
1711 SystemQueryPerformanceCounterInformation = 124,
1712 SystemSessionBigPoolInformation = 125,
1713 SystemBootGraphicsInformation = 126,
1714 SystemScrubPhysicalMemoryInformation = 127,
1715 SystemBadPageInformation = 128,
1716 SystemProcessorProfileControlArea = 129,
1717 SystemCombinePhysicalMemoryInformation = 130,
1718 SystemEntropyInterruptTimingInformation = 131,
1719 SystemConsoleInformation = 132,
1720 SystemPlatformBinaryInformation = 133,
1721 SystemPolicyInformation = 134,
1722 SystemHypervisorProcessorCountInformation = 135,
1723 SystemDeviceDataInformation = 136,
1724 SystemDeviceDataEnumerationInformation = 137,
1725 SystemMemoryTopologyInformation = 138,
1726 SystemMemoryChannelInformation = 139,
1727 SystemBootLogoInformation = 140,
1728 SystemProcessorPerformanceInformationEx = 141,
1729 SystemCriticalProcessErrorLogInformation = 142,
1730 SystemSecureBootPolicyInformation = 143,
1731 SystemPageFileInformationEx = 144,
1732 SystemSecureBootInformation = 145,
1733 SystemEntropyInterruptTimingRawInformation = 146,
1734 SystemPortableWorkspaceEfiLauncherInformation = 147,
1735 SystemFullProcessInformation = 148,
1736 SystemKernelDebuggerInformationEx = 149,
1737 SystemBootMetadataInformation = 150,
1738 SystemSoftRebootInformation = 151,
1739 SystemElamCertificateInformation = 152,
1740 SystemOfflineDumpConfigInformation = 153,
1741 SystemProcessorFeaturesInformation = 154,
1742 SystemRegistryReconciliationInformation = 155,
1743 SystemEdidInformation = 156,
1744 SystemManufacturingInformation = 157,
1745 SystemEnergyEstimationConfigInformation = 158,
1746 SystemHypervisorDetailInformation = 159,
1747 SystemProcessorCycleStatsInformation = 160,
1748 SystemVmGenerationCountInformation = 161,
1749 SystemTrustedPlatformModuleInformation = 162,
1750 SystemKernelDebuggerFlags = 163,
1751 SystemCodeIntegrityPolicyInformation = 164,
1752 SystemIsolatedUserModeInformation = 165,
1753 SystemHardwareSecurityTestInterfaceResultsInformation = 166,
1754 SystemSingleModuleInformation = 167,
1755 SystemAllowedCpuSetsInformation = 168,
1756 SystemVsmProtectionInformation = 169,
1757 SystemInterruptCpuSetsInformation = 170,
1758 SystemSecureBootPolicyFullInformation = 171,
1759 SystemCodeIntegrityPolicyFullInformation = 172,
1760 SystemAffinitizedInterruptProcessorInformation = 173,
1761 SystemRootSiloInformation = 174,
1762 SystemCpuSetInformation = 175,
1763 SystemCpuSetTagInformation = 176,
1764 SystemWin32WerStartCallout = 177,
1765 SystemSecureKernelProfileInformation = 178,
1766 SystemCodeIntegrityPlatformManifestInformation = 179,
1767 SystemInterruptSteeringInformation = 180,
1768 SystemSupportedProcessorArchitectures = 181,
1769 SystemMemoryUsageInformation = 182,
1770 SystemCodeIntegrityCertificateInformation = 183,
1771 SystemPhysicalMemoryInformation = 184,
1772 SystemControlFlowTransition = 185,
1773 SystemKernelDebuggingAllowed = 186,
1774 SystemActivityModerationExeState = 187,
1775 SystemActivityModerationUserSettings = 188,
1776 SystemCodeIntegrityPoliciesFullInformation = 189,
1777 SystemCodeIntegrityUnlockInformation = 190,
1778 SystemIntegrityQuotaInformation = 191,
1779 SystemFlushInformation = 192,
1780 SystemProcessorIdleMaskInformation = 193,
1781 SystemSecureDumpEncryptionInformation = 194,
1782 SystemWriteConstraintInformation = 195,
1783 SystemKernelVaShadowInformation = 196,
1784 SystemHypervisorSharedPageInformation = 197,
1785 SystemFirmwareBootPerformanceInformation = 198,
1786 SystemCodeIntegrityVerificationInformation = 199,
1787 SystemFirmwarePartitionInformation = 200,
1788 SystemSpeculationControlInformation = 201,
1789 SystemDmaGuardPolicyInformation = 202,
1790 SystemEnclaveLaunchControlInformation = 203,
1791 SystemWorkloadAllowedCpuSetsInformation = 204,
1792 SystemCodeIntegrityUnlockModeInformation = 205,
1793 SystemLeapSecondInformation = 206,
1794 SystemFlags2Information = 207,
1795 SystemSecurityModelInformation = 208,
1796 SystemCodeIntegritySyntheticCacheInformation = 209,
1797 SystemFeatureConfigurationInformation = 210,
1798 SystemFeatureConfigurationSectionInformation = 211,
1799 SystemFeatureUsageSubscriptionInformation = 212,
1800 SystemSecureSpeculationControlInformation = 213,
1801 SystemSpacesBootInformation = 214,
1802 SystemFwRamdiskInformation = 215,
1803 SystemWheaIpmiHardwareInformation = 216,
1804 SystemDifSetRuleClassInformation = 217,
1805 SystemDifClearRuleClassInformation = 218,
1806 SystemDifApplyPluginVerificationOnDriver = 219,
1807 SystemDifRemovePluginVerificationOnDriver = 220,
1808 SystemShadowStackInformation = 221,
1809 SystemBuildVersionInformation = 222,
1810 #ifdef __WINESRC__
1811 SystemWineVersionInformation = 1000,
1812 #endif
1813 } SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS;
1815 typedef struct _SYSTEM_CODEINTEGRITY_INFORMATION
1817 ULONG Length;
1818 ULONG CodeIntegrityOptions;
1819 } SYSTEM_CODEINTEGRITY_INFORMATION, *PSYSTEM_CODEINTEGRITY_INFORMATION;
1821 #define CODEINTEGRITY_OPTION_ENABLED 0x0001
1822 #define CODEINTEGRITY_OPTION_TESTSIGN 0x0002
1823 #define CODEINTEGRITY_OPTION_UMCI_ENABLED 0x0004
1824 #define CODEINTEGRITY_OPTION_UMCI_AUDITMODE_ENABLED 0x0008
1825 #define CODEINTEGRITY_OPTION_UMCI_EXCLUSIONPATHS_ENABLED 0x0010
1826 #define CODEINTEGRITY_OPTION_TEST_BUILD 0x0020
1827 #define CODEINTEGRITY_OPTION_PREPRODUCTION_BUILD 0x0040
1828 #define CODEINTEGRITY_OPTION_DEBUGMODE_ENABLED 0x0080
1829 #define CODEINTEGRITY_OPTION_FLIGHT_BUILD 0x0100
1830 #define CODEINTEGRITY_OPTION_FLIGHTING_ENABLED 0x0200
1831 #define CODEINTEGRITY_OPTION_HVCI_KMCI_ENABLED 0x0400
1832 #define CODEINTEGRITY_OPTION_HVCI_KMCI_AUDITMODE_ENABLED 0x0800
1833 #define CODEINTEGRITY_OPTION_HVCI_KMCI_STRICTMODE_ENABLED 0x1000
1834 #define CODEINTEGRITY_OPTION_HVCI_IUM_ENABLED 0x2000
1836 typedef enum _THREADINFOCLASS {
1837 ThreadBasicInformation = 0,
1838 ThreadTimes,
1839 ThreadPriority,
1840 ThreadBasePriority,
1841 ThreadAffinityMask,
1842 ThreadImpersonationToken,
1843 ThreadDescriptorTableEntry,
1844 ThreadEnableAlignmentFaultFixup,
1845 ThreadEventPair_Reusable,
1846 ThreadQuerySetWin32StartAddress,
1847 ThreadZeroTlsCell,
1848 ThreadPerformanceCount,
1849 ThreadAmILastThread,
1850 ThreadIdealProcessor,
1851 ThreadPriorityBoost,
1852 ThreadSetTlsArrayAddress,
1853 ThreadIsIoPending,
1854 ThreadHideFromDebugger,
1855 ThreadBreakOnTermination,
1856 ThreadSwitchLegacyState,
1857 ThreadIsTerminated,
1858 ThreadLastSystemCall,
1859 ThreadIoPriority,
1860 ThreadCycleTime,
1861 ThreadPagePriority,
1862 ThreadActualBasePriority,
1863 ThreadTebInformation,
1864 ThreadCSwitchMon,
1865 ThreadCSwitchPmu,
1866 ThreadWow64Context,
1867 ThreadGroupInformation,
1868 ThreadUmsInformation,
1869 ThreadCounterProfiling,
1870 ThreadIdealProcessorEx,
1871 ThreadSuspendCount = 35,
1872 ThreadDescription = 38,
1873 MaxThreadInfoClass
1874 } THREADINFOCLASS;
1876 typedef struct _THREAD_BASIC_INFORMATION
1878 NTSTATUS ExitStatus;
1879 PVOID TebBaseAddress;
1880 CLIENT_ID ClientId;
1881 ULONG_PTR AffinityMask;
1882 LONG Priority;
1883 LONG BasePriority;
1884 } THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION;
1886 typedef struct _THREAD_DESCRIPTOR_INFORMATION
1888 DWORD Selector;
1889 LDT_ENTRY Entry;
1890 } THREAD_DESCRIPTOR_INFORMATION, *PTHREAD_DESCRIPTOR_INFORMATION;
1892 typedef struct _THREAD_DESCRIPTION_INFORMATION
1894 UNICODE_STRING Description;
1895 } THREAD_DESCRIPTION_INFORMATION, *PTHREAD_DESCRIPTION_INFORMATION;
1897 typedef struct _KERNEL_USER_TIMES {
1898 LARGE_INTEGER CreateTime;
1899 LARGE_INTEGER ExitTime;
1900 LARGE_INTEGER KernelTime;
1901 LARGE_INTEGER UserTime;
1902 } KERNEL_USER_TIMES, *PKERNEL_USER_TIMES;
1904 typedef enum _WINSTATIONINFOCLASS {
1905 WinStationInformation = 8
1906 } WINSTATIONINFOCLASS;
1908 typedef enum _MEMORY_INFORMATION_CLASS {
1909 MemoryBasicInformation,
1910 MemoryWorkingSetInformation,
1911 MemoryMappedFilenameInformation,
1912 MemoryRegionInformation,
1913 MemoryWorkingSetExInformation,
1914 MemorySharedCommitInformation,
1915 MemoryImageInformation,
1916 MemoryRegionInformationEx,
1917 MemoryPrivilegedBasicInformation,
1918 MemoryEnclaveImageInformation,
1919 MemoryBasicInformationCapped,
1920 MemoryPhysicalContiguityInformation,
1921 #ifdef __WINESRC__
1922 MemoryWineUnixFuncs = 1000,
1923 MemoryWineUnixWow64Funcs,
1924 #endif
1925 } MEMORY_INFORMATION_CLASS;
1927 typedef struct _MEMORY_SECTION_NAME
1929 UNICODE_STRING SectionFileName;
1930 } MEMORY_SECTION_NAME, *PMEMORY_SECTION_NAME;
1932 typedef union _MEMORY_WORKING_SET_EX_BLOCK {
1933 ULONG_PTR Flags;
1934 struct {
1935 ULONG_PTR Valid : 1;
1936 ULONG_PTR ShareCount : 3;
1937 ULONG_PTR Win32Protection : 11;
1938 ULONG_PTR Shared : 1;
1939 ULONG_PTR Node : 6;
1940 ULONG_PTR Locked : 1;
1941 ULONG_PTR LargePage : 1;
1942 } DUMMYSTRUCTNAME;
1943 } MEMORY_WORKING_SET_EX_BLOCK, *PMEMORY_WORKING_SET_EX_BLOCK;
1945 typedef struct _MEMORY_WORKING_SET_EX_INFORMATION {
1946 PVOID VirtualAddress;
1947 MEMORY_WORKING_SET_EX_BLOCK VirtualAttributes;
1948 } MEMORY_WORKING_SET_EX_INFORMATION, *PMEMORY_WORKING_SET_EX_INFORMATION;
1950 typedef enum _MUTANT_INFORMATION_CLASS
1952 MutantBasicInformation
1953 } MUTANT_INFORMATION_CLASS, *PMUTANT_INFORMATION_CLASS;
1955 typedef struct _MUTANT_BASIC_INFORMATION {
1956 LONG CurrentCount;
1957 BOOLEAN OwnedByCaller;
1958 BOOLEAN AbandonedState;
1959 } MUTANT_BASIC_INFORMATION, *PMUTANT_BASIC_INFORMATION;
1961 typedef enum _TIMER_INFORMATION_CLASS
1963 TimerBasicInformation = 0
1964 } TIMER_INFORMATION_CLASS;
1966 typedef struct _TIMER_BASIC_INFORMATION
1968 LARGE_INTEGER RemainingTime;
1969 BOOLEAN TimerState;
1970 } TIMER_BASIC_INFORMATION, *PTIMER_BASIC_INFORMATION;
1973 /* return type of RtlDetermineDosPathNameType_U (FIXME: not the correct names) */
1974 typedef enum
1976 INVALID_PATH = 0,
1977 UNC_PATH, /* "//foo" */
1978 ABSOLUTE_DRIVE_PATH, /* "c:/foo" */
1979 RELATIVE_DRIVE_PATH, /* "c:foo" */
1980 ABSOLUTE_PATH, /* "/foo" */
1981 RELATIVE_PATH, /* "foo" */
1982 DEVICE_PATH, /* "//./foo" */
1983 UNC_DOT_PATH /* "//." */
1984 } DOS_PATHNAME_TYPE;
1987 /***********************************************************************
1988 * Types and data structures
1991 /* This is used by NtQuerySystemInformation */
1992 typedef struct _SYSTEM_THREAD_INFORMATION
1993 { /* win32/win64 */
1994 LARGE_INTEGER KernelTime; /* 00/00 */
1995 LARGE_INTEGER UserTime; /* 08/08 */
1996 LARGE_INTEGER CreateTime; /* 10/10 */
1997 DWORD dwTickCount; /* 18/18 */
1998 LPVOID StartAddress; /* 1c/20 */
1999 CLIENT_ID ClientId; /* 20/28 */
2000 DWORD dwCurrentPriority; /* 28/38 */
2001 DWORD dwBasePriority; /* 2c/3c */
2002 DWORD dwContextSwitches; /* 30/40 */
2003 DWORD dwThreadState; /* 34/44 */
2004 DWORD dwWaitReason; /* 38/48 */
2005 DWORD dwUnknown; /* 3c/4c */
2006 } SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION;
2008 typedef struct _SYSTEM_EXTENDED_THREAD_INFORMATION
2010 SYSTEM_THREAD_INFORMATION ThreadInfo; /* 00/00 */
2011 void *StackBase; /* 40/50 */
2012 void *StackLimit; /* 44/58 */
2013 void *Win32StartAddress; /* 48/60 */
2014 void *TebBase; /* 4c/68 */
2015 ULONG_PTR Reserved2; /* 50/70 */
2016 ULONG_PTR Reserved3; /* 54/78 */
2017 ULONG_PTR Reserved4; /* 58/80 */
2018 } SYSTEM_EXTENDED_THREAD_INFORMATION, *PSYSTEM_EXTENDED_THREAD_INFORMATION;
2020 typedef struct _IO_STATUS_BLOCK {
2021 union {
2022 NTSTATUS Status;
2023 PVOID Pointer;
2024 } DUMMYUNIONNAME;
2026 ULONG_PTR Information;
2027 } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
2029 typedef void (WINAPI * PIO_APC_ROUTINE)(PVOID,PIO_STATUS_BLOCK,ULONG);
2031 typedef struct _KEY_BASIC_INFORMATION {
2032 LARGE_INTEGER LastWriteTime;
2033 ULONG TitleIndex;
2034 ULONG NameLength;
2035 WCHAR Name[1];
2036 } KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
2038 typedef struct _KEY_NODE_INFORMATION
2040 LARGE_INTEGER LastWriteTime;
2041 ULONG TitleIndex;
2042 ULONG ClassOffset;
2043 ULONG ClassLength;
2044 ULONG NameLength;
2045 WCHAR Name[1];
2046 /* Class[1]; */
2047 } KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
2049 typedef struct _KEY_FULL_INFORMATION
2051 LARGE_INTEGER LastWriteTime;
2052 ULONG TitleIndex;
2053 ULONG ClassOffset;
2054 ULONG ClassLength;
2055 ULONG SubKeys;
2056 ULONG MaxNameLen;
2057 ULONG MaxClassLen;
2058 ULONG Values;
2059 ULONG MaxValueNameLen;
2060 ULONG MaxValueDataLen;
2061 WCHAR Class[1];
2062 } KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
2064 typedef struct _KEY_NAME_INFORMATION {
2065 ULONG NameLength;
2066 WCHAR Name[1];
2067 } KEY_NAME_INFORMATION, *PKEY_NAME_INFORMATION;
2069 typedef struct _KEY_CACHED_INFORMATION
2071 LARGE_INTEGER LastWriteTime;
2072 ULONG TitleIndex;
2073 ULONG SubKeys;
2074 ULONG MaxNameLen;
2075 ULONG Values;
2076 ULONG MaxValueNameLen;
2077 ULONG MaxValueDataLen;
2078 ULONG NameLength;
2079 } KEY_CACHED_INFORMATION, *PKEY_CACHED_INFORMATION;
2081 typedef struct _KEY_VALUE_ENTRY
2083 PUNICODE_STRING ValueName;
2084 ULONG DataLength;
2085 ULONG DataOffset;
2086 ULONG Type;
2087 } KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
2089 typedef struct _KEY_VALUE_BASIC_INFORMATION {
2090 ULONG TitleIndex;
2091 ULONG Type;
2092 ULONG NameLength;
2093 WCHAR Name[1];
2094 } KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
2096 typedef struct _KEY_VALUE_FULL_INFORMATION {
2097 ULONG TitleIndex;
2098 ULONG Type;
2099 ULONG DataOffset;
2100 ULONG DataLength;
2101 ULONG NameLength;
2102 WCHAR Name[1];
2103 } KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
2105 typedef struct _KEY_VALUE_PARTIAL_INFORMATION {
2106 ULONG TitleIndex;
2107 ULONG Type;
2108 ULONG DataLength;
2109 UCHAR Data[1];
2110 } KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
2112 #ifndef __OBJECT_ATTRIBUTES_DEFINED__
2113 #define __OBJECT_ATTRIBUTES_DEFINED__
2114 typedef struct _OBJECT_ATTRIBUTES {
2115 ULONG Length;
2116 HANDLE RootDirectory;
2117 PUNICODE_STRING ObjectName;
2118 ULONG Attributes;
2119 PVOID SecurityDescriptor; /* type SECURITY_DESCRIPTOR */
2120 PVOID SecurityQualityOfService; /* type SECURITY_QUALITY_OF_SERVICE */
2121 } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
2122 #endif
2124 typedef struct _OBJECT_DATA_INFORMATION {
2125 BOOLEAN InheritHandle;
2126 BOOLEAN ProtectFromClose;
2127 } OBJECT_DATA_INFORMATION, *POBJECT_DATA_INFORMATION;
2129 typedef struct _OBJECT_BASIC_INFORMATION {
2130 ULONG Attributes;
2131 ACCESS_MASK GrantedAccess;
2132 ULONG HandleCount;
2133 ULONG PointerCount;
2134 ULONG PagedPoolUsage;
2135 ULONG NonPagedPoolUsage;
2136 ULONG Reserved[3];
2137 ULONG NameInformationLength;
2138 ULONG TypeInformationLength;
2139 ULONG SecurityDescriptorLength;
2140 LARGE_INTEGER CreateTime;
2141 } OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION;
2143 typedef struct _OBJECT_NAME_INFORMATION {
2144 UNICODE_STRING Name;
2145 } OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
2147 typedef struct __OBJECT_TYPE_INFORMATION {
2148 UNICODE_STRING TypeName;
2149 ULONG TotalNumberOfObjects;
2150 ULONG TotalNumberOfHandles;
2151 ULONG TotalPagedPoolUsage;
2152 ULONG TotalNonPagedPoolUsage;
2153 ULONG TotalNamePoolUsage;
2154 ULONG TotalHandleTableUsage;
2155 ULONG HighWaterNumberOfObjects;
2156 ULONG HighWaterNumberOfHandles;
2157 ULONG HighWaterPagedPoolUsage;
2158 ULONG HighWaterNonPagedPoolUsage;
2159 ULONG HighWaterNamePoolUsage;
2160 ULONG HighWaterHandleTableUsage;
2161 ULONG InvalidAttributes;
2162 GENERIC_MAPPING GenericMapping;
2163 ULONG ValidAccessMask;
2164 BOOLEAN SecurityRequired;
2165 BOOLEAN MaintainHandleCount;
2166 UCHAR TypeIndex;
2167 CHAR ReservedByte;
2168 ULONG PoolType;
2169 ULONG DefaultPagedPoolCharge;
2170 ULONG DefaultNonPagedPoolCharge;
2171 } OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION;
2173 typedef struct _OBJECT_TYPES_INFORMATION
2175 ULONG NumberOfTypes;
2176 } OBJECT_TYPES_INFORMATION, *POBJECT_TYPES_INFORMATION;
2178 typedef struct _PROCESS_BASIC_INFORMATION {
2179 #ifdef __WINESRC__
2180 NTSTATUS ExitStatus;
2181 PEB *PebBaseAddress;
2182 ULONG_PTR AffinityMask;
2183 LONG BasePriority;
2184 ULONG_PTR UniqueProcessId;
2185 ULONG_PTR InheritedFromUniqueProcessId;
2186 #else
2187 PVOID Reserved1;
2188 PPEB PebBaseAddress;
2189 PVOID Reserved2[2];
2190 ULONG_PTR UniqueProcessId;
2191 PVOID Reserved3;
2192 #endif
2193 } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
2195 #define PROCESS_PRIOCLASS_IDLE 1
2196 #define PROCESS_PRIOCLASS_NORMAL 2
2197 #define PROCESS_PRIOCLASS_HIGH 3
2198 #define PROCESS_PRIOCLASS_REALTIME 4
2199 #define PROCESS_PRIOCLASS_BELOW_NORMAL 5
2200 #define PROCESS_PRIOCLASS_ABOVE_NORMAL 6
2202 typedef struct _PROCESS_PRIORITY_CLASS {
2203 BOOLEAN Foreground;
2204 UCHAR PriorityClass;
2205 } PROCESS_PRIORITY_CLASS, *PPROCESS_PRIORITY_CLASS;
2207 typedef struct _PROCESS_STACK_ALLOCATION_INFORMATION
2209 SIZE_T ReserveSize;
2210 SIZE_T ZeroBits;
2211 PVOID StackBase;
2212 } PROCESS_STACK_ALLOCATION_INFORMATION, *PPROCESS_STACK_ALLOCATION_INFORMATION;
2214 typedef struct _PROCESS_STACK_ALLOCATION_INFORMATION_EX
2216 ULONG PreferredNode;
2217 ULONG Reserved0;
2218 ULONG Reserved1;
2219 ULONG Reserved2;
2220 PROCESS_STACK_ALLOCATION_INFORMATION AllocInfo;
2221 } PROCESS_STACK_ALLOCATION_INFORMATION_EX, *PPROCESS_STACK_ALLOCATION_INFORMATION_EX;
2223 typedef struct _RTL_HEAP_DEFINITION {
2224 ULONG Length; /* = sizeof(RTL_HEAP_DEFINITION) */
2226 ULONG Unknown[11];
2227 } RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION;
2229 typedef struct _RTL_RWLOCK {
2230 RTL_CRITICAL_SECTION rtlCS;
2232 HANDLE hSharedReleaseSemaphore;
2233 UINT uSharedWaiters;
2235 HANDLE hExclusiveReleaseSemaphore;
2236 UINT uExclusiveWaiters;
2238 INT iNumberActive;
2239 HANDLE hOwningThreadId;
2240 DWORD dwTimeoutBoost;
2241 PVOID pDebugInfo;
2242 } RTL_RWLOCK, *LPRTL_RWLOCK;
2244 /* System Information Class 0x00 */
2246 typedef struct _SYSTEM_BASIC_INFORMATION {
2247 #ifdef __WINESRC__
2248 DWORD unknown;
2249 ULONG KeMaximumIncrement;
2250 ULONG PageSize;
2251 ULONG MmNumberOfPhysicalPages;
2252 ULONG MmLowestPhysicalPage;
2253 ULONG MmHighestPhysicalPage;
2254 ULONG_PTR AllocationGranularity;
2255 PVOID LowestUserAddress;
2256 PVOID HighestUserAddress;
2257 ULONG_PTR ActiveProcessorsAffinityMask;
2258 BYTE NumberOfProcessors;
2259 #else
2260 BYTE Reserved1[24];
2261 PVOID Reserved2[4];
2262 CCHAR NumberOfProcessors;
2263 #endif
2264 } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
2266 /* System Information Class 0x01 */
2268 typedef struct _SYSTEM_CPU_INFORMATION {
2269 USHORT ProcessorArchitecture;
2270 USHORT ProcessorLevel;
2271 USHORT ProcessorRevision;
2272 USHORT MaximumProcessors;
2273 ULONG ProcessorFeatureBits;
2274 } SYSTEM_CPU_INFORMATION, *PSYSTEM_CPU_INFORMATION;
2276 /* definitions of bits in the Feature set for the x86 processors */
2277 #define CPU_FEATURE_VME 0x00000005 /* Virtual 86 Mode Extensions */
2278 #define CPU_FEATURE_TSC 0x00000002 /* Time Stamp Counter available */
2279 #define CPU_FEATURE_CMOV 0x00000008 /* Conditional Move instruction*/
2280 #define CPU_FEATURE_PGE 0x00000014 /* Page table Entry Global bit */
2281 #define CPU_FEATURE_PSE 0x00000024 /* Page Size Extension */
2282 #define CPU_FEATURE_MTRR 0x00000040 /* Memory Type Range Registers */
2283 #define CPU_FEATURE_CX8 0x00000080 /* Compare and eXchange 8 byte instr. */
2284 #define CPU_FEATURE_MMX 0x00000100 /* Multi Media eXtensions */
2285 #define CPU_FEATURE_X86 0x00000200 /* seems to be always ON, on the '86 */
2286 #define CPU_FEATURE_PAT 0x00000400 /* Page Attribute Table */
2287 #define CPU_FEATURE_FXSR 0x00000800 /* FXSAVE and FXSTORE instructions */
2288 #define CPU_FEATURE_SEP 0x00001000 /* SYSENTER and SYSEXIT instructions */
2289 #define CPU_FEATURE_SSE 0x00002000 /* SSE extensions (ext. MMX) */
2290 #define CPU_FEATURE_3DNOW 0x00004000 /* 3DNOW instructions available */
2291 #define CPU_FEATURE_SSE2 0x00010000 /* SSE2 extensions (XMMI64) */
2292 #define CPU_FEATURE_DS 0x00020000 /* Debug Store */
2293 #define CPU_FEATURE_HTT 0x00040000 /* Hyper Threading Technology */
2294 #define CPU_FEATURE_SSE3 0x00080000 /* SSE3 extensions */
2295 #define CPU_FEATURE_CX128 0x00100000 /* cmpxchg16b instruction */
2296 #define CPU_FEATURE_XSAVE 0x00800000 /* XSAVE instructions */
2297 #define CPU_FEATURE_2NDLEV 0x04000000 /* Second-level address translation */
2298 #define CPU_FEATURE_VIRT 0x08000000 /* Virtualization support */
2299 #define CPU_FEATURE_RDFS 0x10000000 /* RDFSBASE etc. instructions */
2300 #define CPU_FEATURE_NX 0x20000000 /* Data execution prevention */
2302 /* FIXME: following values are made up, actual flags are unknown */
2303 #define CPU_FEATURE_SSSE3 0x00008000 /* SSSE3 instructions */
2304 #define CPU_FEATURE_SSE41 0x01000000 /* SSE41 instructions */
2305 #define CPU_FEATURE_SSE42 0x02000000 /* SSE42 instructions */
2306 #define CPU_FEATURE_AVX 0x40000000 /* AVX instructions */
2307 #define CPU_FEATURE_AVX2 0x80000000 /* AVX2 instructions */
2308 #define CPU_FEATURE_PAE 0x00200000
2309 #define CPU_FEATURE_DAZ 0x00400000
2311 #define CPU_FEATURE_ARM_VFP_32 0x00000001
2312 #define CPU_FEATURE_ARM_NEON 0x00000002
2313 #define CPU_FEATURE_ARM_V8_CRC32 0x00000004
2314 #define CPU_FEATURE_ARM_V8_CRYPTO 0x00000008
2316 /* System Information Class 0x02 */
2318 /* Documented in "Windows NT/2000 Native API Reference" by Gary Nebbett. */
2319 typedef struct _SYSTEM_PERFORMANCE_INFORMATION {
2320 LARGE_INTEGER IdleTime;
2321 LARGE_INTEGER ReadTransferCount;
2322 LARGE_INTEGER WriteTransferCount;
2323 LARGE_INTEGER OtherTransferCount;
2324 ULONG ReadOperationCount;
2325 ULONG WriteOperationCount;
2326 ULONG OtherOperationCount;
2327 ULONG AvailablePages;
2328 ULONG TotalCommittedPages;
2329 ULONG TotalCommitLimit;
2330 ULONG PeakCommitment;
2331 ULONG PageFaults;
2332 ULONG WriteCopyFaults;
2333 ULONG TransitionFaults;
2334 ULONG Reserved1;
2335 ULONG DemandZeroFaults;
2336 ULONG PagesRead;
2337 ULONG PageReadIos;
2338 ULONG Reserved2[2];
2339 ULONG PagefilePagesWritten;
2340 ULONG PagefilePageWriteIos;
2341 ULONG MappedFilePagesWritten;
2342 ULONG MappedFilePageWriteIos;
2343 ULONG PagedPoolUsage;
2344 ULONG NonPagedPoolUsage;
2345 ULONG PagedPoolAllocs;
2346 ULONG PagedPoolFrees;
2347 ULONG NonPagedPoolAllocs;
2348 ULONG NonPagedPoolFrees;
2349 ULONG TotalFreeSystemPtes;
2350 ULONG SystemCodePage;
2351 ULONG TotalSystemDriverPages;
2352 ULONG TotalSystemCodePages;
2353 ULONG SmallNonPagedLookasideListAllocateHits;
2354 ULONG SmallPagedLookasideListAllocateHits;
2355 ULONG Reserved3;
2356 ULONG MmSystemCachePage;
2357 ULONG PagedPoolPage;
2358 ULONG SystemDriverPage;
2359 ULONG FastReadNoWait;
2360 ULONG FastReadWait;
2361 ULONG FastReadResourceMiss;
2362 ULONG FastReadNotPossible;
2363 ULONG FastMdlReadNoWait;
2364 ULONG FastMdlReadWait;
2365 ULONG FastMdlReadResourceMiss;
2366 ULONG FastMdlReadNotPossible;
2367 ULONG MapDataNoWait;
2368 ULONG MapDataWait;
2369 ULONG MapDataNoWaitMiss;
2370 ULONG MapDataWaitMiss;
2371 ULONG PinMappedDataCount;
2372 ULONG PinReadNoWait;
2373 ULONG PinReadWait;
2374 ULONG PinReadNoWaitMiss;
2375 ULONG PinReadWaitMiss;
2376 ULONG CopyReadNoWait;
2377 ULONG CopyReadWait;
2378 ULONG CopyReadNoWaitMiss;
2379 ULONG CopyReadWaitMiss;
2380 ULONG MdlReadNoWait;
2381 ULONG MdlReadWait;
2382 ULONG MdlReadNoWaitMiss;
2383 ULONG MdlReadWaitMiss;
2384 ULONG ReadAheadIos;
2385 ULONG LazyWriteIos;
2386 ULONG LazyWritePages;
2387 ULONG DataFlushes;
2388 ULONG DataPages;
2389 ULONG ContextSwitches;
2390 ULONG FirstLevelTbFills;
2391 ULONG SecondLevelTbFills;
2392 ULONG SystemCalls;
2393 } SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
2395 /* System Information Class 0x03 */
2397 typedef struct _SYSTEM_TIMEOFDAY_INFORMATION {
2398 #ifdef __WINESRC__
2399 LARGE_INTEGER BootTime;
2400 LARGE_INTEGER SystemTime;
2401 LARGE_INTEGER TimeZoneBias;
2402 ULONG TimeZoneId;
2403 ULONG Reserved;
2404 ULONGLONG BootTimeBias;
2405 ULONGLONG SleepTimeBias;
2406 #else
2407 BYTE Reserved1[48];
2408 #endif
2409 } SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION; /* was SYSTEM_TIME_INFORMATION */
2411 /* System Information Class 0x08 */
2413 typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION {
2414 LARGE_INTEGER IdleTime;
2415 LARGE_INTEGER KernelTime;
2416 LARGE_INTEGER UserTime;
2417 LARGE_INTEGER Reserved1[2];
2418 ULONG Reserved2;
2419 } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
2421 /* System Information Class 0x0b */
2423 typedef struct _SYSTEM_DRIVER_INFORMATION {
2424 PVOID pvAddress;
2425 DWORD dwUnknown1;
2426 DWORD dwUnknown2;
2427 DWORD dwEntryIndex;
2428 DWORD dwUnknown3;
2429 char szName[MAX_PATH + 1];
2430 } SYSTEM_DRIVER_INFORMATION, *PSYSTEM_DRIVER_INFORMATION;
2432 /* System Information Class 0x10 */
2434 typedef struct _SYSTEM_HANDLE_ENTRY {
2435 ULONG OwnerPid;
2436 BYTE ObjectType;
2437 BYTE HandleFlags;
2438 USHORT HandleValue;
2439 PVOID ObjectPointer;
2440 ULONG AccessMask;
2441 } SYSTEM_HANDLE_ENTRY, *PSYSTEM_HANDLE_ENTRY;
2443 typedef struct _SYSTEM_HANDLE_INFORMATION {
2444 ULONG Count;
2445 SYSTEM_HANDLE_ENTRY Handle[1];
2446 } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
2448 typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX
2450 void *Object;
2451 ULONG_PTR UniqueProcessId;
2452 ULONG_PTR HandleValue;
2453 ULONG GrantedAccess;
2454 USHORT CreatorBackTraceIndex;
2455 USHORT ObjectTypeIndex;
2456 ULONG HandleAttributes;
2457 ULONG Reserved;
2458 } SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX;
2460 typedef struct _SYSTEM_HANDLE_INFORMATION_EX
2462 ULONG_PTR NumberOfHandles;
2463 ULONG_PTR Reserved;
2464 SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX Handles[1];
2465 } SYSTEM_HANDLE_INFORMATION_EX;
2467 /* System Information Class 0x15 */
2469 typedef struct _SYSTEM_CACHE_INFORMATION {
2470 SIZE_T CurrentSize;
2471 SIZE_T PeakSize;
2472 ULONG PageFaultCount;
2473 SIZE_T MinimumWorkingSet;
2474 SIZE_T MaximumWorkingSet;
2475 SIZE_T CurrentSizeIncludingTransitionInPages;
2476 SIZE_T PeakSizeIncludingTransitionInPages;
2477 ULONG TransitionRePurposeCount;
2478 ULONG Flags;
2479 } SYSTEM_CACHE_INFORMATION, *PSYSTEM_CACHE_INFORMATION;
2481 /* System Information Class 0x17 */
2483 typedef struct _SYSTEM_INTERRUPT_INFORMATION {
2484 ULONG ContextSwitches;
2485 ULONG DpcCount;
2486 ULONG DpcRate;
2487 ULONG TimeIncrement;
2488 ULONG DpcBypassCount;
2489 ULONG ApcBypassCount;
2490 } SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION;
2492 typedef struct _SYSTEM_CONFIGURATION_INFO {
2493 union {
2494 ULONG OemId;
2495 struct {
2496 WORD ProcessorArchitecture;
2497 WORD Reserved;
2498 } tag1;
2499 } tag2;
2500 ULONG PageSize;
2501 PVOID MinimumApplicationAddress;
2502 PVOID MaximumApplicationAddress;
2503 ULONG ActiveProcessorMask;
2504 ULONG NumberOfProcessors;
2505 ULONG ProcessorType;
2506 ULONG AllocationGranularity;
2507 WORD ProcessorLevel;
2508 WORD ProcessorRevision;
2509 } SYSTEM_CONFIGURATION_INFO, *PSYSTEM_CONFIGURATION_INFO;
2511 typedef struct _SYSTEM_EXCEPTION_INFORMATION {
2512 BYTE Reserved1[16];
2513 } SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION;
2515 typedef struct _SYSTEM_LOOKASIDE_INFORMATION {
2516 BYTE Reserved1[32];
2517 } SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION;
2519 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION {
2520 BOOLEAN DebuggerEnabled;
2521 BOOLEAN DebuggerNotPresent;
2522 } SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION;
2524 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION_EX {
2525 BOOLEAN DebuggerAllowed;
2526 BOOLEAN DebuggerEnabled;
2527 BOOLEAN DebuggerPresent;
2528 } SYSTEM_KERNEL_DEBUGGER_INFORMATION_EX, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION_EX;
2530 typedef struct _VM_COUNTERS
2532 SIZE_T PeakVirtualSize;
2533 SIZE_T VirtualSize;
2534 ULONG PageFaultCount;
2535 SIZE_T PeakWorkingSetSize;
2536 SIZE_T WorkingSetSize;
2537 SIZE_T QuotaPeakPagedPoolUsage;
2538 SIZE_T QuotaPagedPoolUsage;
2539 SIZE_T QuotaPeakNonPagedPoolUsage;
2540 SIZE_T QuotaNonPagedPoolUsage;
2541 SIZE_T PagefileUsage;
2542 SIZE_T PeakPagefileUsage;
2543 } VM_COUNTERS, *PVM_COUNTERS;
2545 typedef struct _VM_COUNTERS_EX
2547 SIZE_T PeakVirtualSize;
2548 SIZE_T VirtualSize;
2549 ULONG PageFaultCount;
2550 SIZE_T PeakWorkingSetSize;
2551 SIZE_T WorkingSetSize;
2552 SIZE_T QuotaPeakPagedPoolUsage;
2553 SIZE_T QuotaPagedPoolUsage;
2554 SIZE_T QuotaPeakNonPagedPoolUsage;
2555 SIZE_T QuotaNonPagedPoolUsage;
2556 SIZE_T PagefileUsage;
2557 SIZE_T PeakPagefileUsage;
2558 SIZE_T PrivateUsage;
2559 } VM_COUNTERS_EX, *PVM_COUNTERS_EX;
2561 typedef struct _SYSTEM_PROCESS_INFORMATION {
2562 #ifdef __WINESRC__ /* win32/win64 */
2563 ULONG NextEntryOffset; /* 00/00 */
2564 DWORD dwThreadCount; /* 04/04 */
2565 DWORD dwUnknown1[6]; /* 08/08 */
2566 LARGE_INTEGER CreationTime; /* 20/20 */
2567 LARGE_INTEGER UserTime; /* 28/28 */
2568 LARGE_INTEGER KernelTime; /* 30/30 */
2569 UNICODE_STRING ProcessName; /* 38/38 */
2570 DWORD dwBasePriority; /* 40/48 */
2571 HANDLE UniqueProcessId; /* 44/50 */
2572 HANDLE ParentProcessId; /* 48/58 */
2573 ULONG HandleCount; /* 4c/60 */
2574 ULONG SessionId; /* 50/64 */
2575 DWORD dwUnknown4; /* 54/68 */
2576 VM_COUNTERS_EX vmCounters; /* 58/70 */
2577 IO_COUNTERS ioCounters; /* 88/d0 */
2578 SYSTEM_THREAD_INFORMATION ti[1]; /* b8/100 */
2579 #else
2580 ULONG NextEntryOffset; /* 00/00 */
2581 BYTE Reserved1[52]; /* 04/04 */
2582 PVOID Reserved2[3]; /* 38/38 */
2583 HANDLE UniqueProcessId; /* 44/50 */
2584 PVOID Reserved3; /* 48/58 */
2585 ULONG HandleCount; /* 4c/60 */
2586 BYTE Reserved4[4]; /* 50/64 */
2587 PVOID Reserved5[11]; /* 54/68 */
2588 SIZE_T PeakPagefileUsage; /* 80/c0 */
2589 SIZE_T PrivatePageCount; /* 84/c8 */
2590 LARGE_INTEGER Reserved6[6]; /* 88/d0 */
2591 #endif
2592 } SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
2594 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION {
2595 ULONG RegistryQuotaAllowed;
2596 ULONG RegistryQuotaUsed;
2597 PVOID Reserved1;
2598 } SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION;
2600 typedef struct _SYSTEM_TIME_ADJUSTMENT_QUERY {
2601 ULONG TimeAdjustment;
2602 ULONG TimeIncrement;
2603 BOOLEAN TimeAdjustmentDisabled;
2604 } SYSTEM_TIME_ADJUSTMENT_QUERY, *PSYSTEM_TIME_ADJUSTMENT_QUERY;
2606 typedef struct _SYSTEM_TIME_ADJUSTMENT {
2607 ULONG TimeAdjustment;
2608 BOOLEAN TimeAdjustmentDisabled;
2609 } SYSTEM_TIME_ADJUSTMENT, *PSYSTEM_TIME_ADJUSTMENT;
2611 typedef enum _SYSTEM_FIRMWARE_TABLE_ACTION
2613 SystemFirmwareTable_Enumerate = 0,
2614 SystemFirmwareTable_Get = 1
2615 } SYSTEM_FIRMWARE_TABLE_ACTION, *PSYSTEM_FIRMWARE_TABLE_ACTION;
2617 /* System Information Class 0x4C */
2619 typedef struct _SYSTEM_FIRMWARE_TABLE_INFORMATION
2621 ULONG ProviderSignature;
2622 SYSTEM_FIRMWARE_TABLE_ACTION Action;
2623 ULONG TableID;
2624 ULONG TableBufferLength;
2625 UCHAR TableBuffer[1];
2626 } SYSTEM_FIRMWARE_TABLE_INFORMATION, *PSYSTEM_FIRMWARE_TABLE_INFORMATION;
2628 typedef struct _TIME_FIELDS
2629 { CSHORT Year;
2630 CSHORT Month;
2631 CSHORT Day;
2632 CSHORT Hour;
2633 CSHORT Minute;
2634 CSHORT Second;
2635 CSHORT Milliseconds;
2636 CSHORT Weekday;
2637 } TIME_FIELDS, *PTIME_FIELDS;
2639 typedef struct _WINSTATIONINFORMATIONW {
2640 BYTE Reserved2[70];
2641 ULONG LogonId;
2642 BYTE Reserved3[1140];
2643 } WINSTATIONINFORMATIONW, *PWINSTATIONINFORMATIONW;
2645 typedef BOOLEAN (WINAPI * PWINSTATIONQUERYINFORMATIONW)(HANDLE,ULONG,WINSTATIONINFOCLASS,PVOID,ULONG,PULONG);
2647 typedef struct _LDR_RESOURCE_INFO
2649 ULONG_PTR Type;
2650 ULONG_PTR Name;
2651 ULONG Language;
2652 } LDR_RESOURCE_INFO, *PLDR_RESOURCE_INFO;
2655 /* debug buffer definitions */
2657 typedef struct _DEBUG_BUFFER {
2658 HANDLE SectionHandle;
2659 PVOID SectionBase;
2660 PVOID RemoteSectionBase;
2661 ULONG SectionBaseDelta;
2662 HANDLE EventPairHandle;
2663 ULONG Unknown[2];
2664 HANDLE RemoteThreadHandle;
2665 ULONG InfoClassMask;
2666 ULONG SizeOfInfo;
2667 ULONG AllocatedSize;
2668 ULONG SectionSize;
2669 PVOID ModuleInformation;
2670 PVOID BackTraceInformation;
2671 PVOID HeapInformation;
2672 PVOID LockInformation;
2673 PVOID Reserved[8];
2674 } DEBUG_BUFFER, *PDEBUG_BUFFER;
2676 #define PDI_MODULES 0x01
2677 #define PDI_BACKTRACE 0x02
2678 #define PDI_HEAPS 0x04
2679 #define PDI_HEAP_TAGS 0x08
2680 #define PDI_HEAP_BLOCKS 0x10
2681 #define PDI_LOCKS 0x20
2683 typedef struct _DEBUG_MODULE_INFORMATION {
2684 ULONG Reserved[2];
2685 ULONG Base;
2686 ULONG Size;
2687 ULONG Flags;
2688 USHORT Index;
2689 USHORT Unknown;
2690 USHORT LoadCount;
2691 USHORT ModuleNameOffset;
2692 CHAR ImageName[256];
2693 } DEBUG_MODULE_INFORMATION, *PDEBUG_MODULE_INFORMATION;
2695 typedef struct _DEBUG_HEAP_INFORMATION {
2696 ULONG Base;
2697 ULONG Flags;
2698 USHORT Granularity;
2699 USHORT Unknown;
2700 ULONG Allocated;
2701 ULONG Committed;
2702 ULONG TagCount;
2703 ULONG BlockCount;
2704 ULONG Reserved[7];
2705 PVOID Tags;
2706 PVOID Blocks;
2707 } DEBUG_HEAP_INFORMATION, *PDEBUG_HEAP_INFORMATION;
2709 typedef struct _DEBUG_LOCK_INFORMATION {
2710 PVOID Address;
2711 USHORT Type;
2712 USHORT CreatorBackTraceIndex;
2713 ULONG OwnerThreadId;
2714 ULONG ActiveCount;
2715 ULONG ContentionCount;
2716 ULONG EntryCount;
2717 ULONG RecursionCount;
2718 ULONG NumberOfSharedWaiters;
2719 ULONG NumberOfExclusiveWaiters;
2720 } DEBUG_LOCK_INFORMATION, *PDEBUG_LOCK_INFORMATION;
2722 typedef struct _PORT_MESSAGE_HEADER {
2723 USHORT DataSize;
2724 USHORT MessageSize;
2725 USHORT MessageType;
2726 USHORT VirtualRangesOffset;
2727 CLIENT_ID ClientId;
2728 ULONG MessageId;
2729 ULONG SectionSize;
2730 } PORT_MESSAGE_HEADER, *PPORT_MESSAGE_HEADER, PORT_MESSAGE, *PPORT_MESSAGE;
2732 typedef unsigned short RTL_ATOM, *PRTL_ATOM;
2734 typedef enum _ATOM_INFORMATION_CLASS {
2735 AtomBasicInformation = 0,
2736 AtomTableInformation = 1,
2737 } ATOM_INFORMATION_CLASS;
2739 typedef struct _ATOM_BASIC_INFORMATION {
2740 USHORT ReferenceCount;
2741 USHORT Pinned;
2742 USHORT NameLength;
2743 WCHAR Name[1];
2744 } ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION;
2746 /* FIXME: names probably not correct */
2747 typedef struct _RTL_HANDLE
2749 struct _RTL_HANDLE * Next;
2750 } RTL_HANDLE;
2752 /* FIXME: names probably not correct */
2753 typedef struct _RTL_HANDLE_TABLE
2755 ULONG MaxHandleCount; /* 0x00 */
2756 ULONG HandleSize; /* 0x04 */
2757 ULONG Unused[2]; /* 0x08-0x0c */
2758 PVOID NextFree; /* 0x10 */
2759 PVOID FirstHandle; /* 0x14 */
2760 PVOID ReservedMemory; /* 0x18 */
2761 PVOID MaxHandle; /* 0x1c */
2762 } RTL_HANDLE_TABLE;
2764 typedef struct _RTL_ATOM_TABLE_ENTRY
2766 struct _RTL_ATOM_TABLE_ENTRY *HashLink;
2767 WORD HandleIndex;
2768 WORD Atom;
2769 WORD ReferenceCount;
2770 UCHAR Flags;
2771 UCHAR NameLength;
2772 WCHAR Name[1];
2773 } RTL_ATOM_TABLE_ENTRY, *PRTL_ATOM_TABLE_ENTRY;
2775 typedef struct _RTL_ATOM_TABLE
2777 ULONG Signature;
2778 RTL_CRITICAL_SECTION CriticalSection;
2779 RTL_HANDLE_TABLE HandleTable;
2780 ULONG NumberOfBuckets;
2781 RTL_ATOM_TABLE_ENTRY *Buckets[1];
2782 } *RTL_ATOM_TABLE, **PRTL_ATOM_TABLE;
2784 /***********************************************************************
2785 * Defines
2788 /* flags for NtCreateFile and NtOpenFile */
2789 #define FILE_DIRECTORY_FILE 0x00000001
2790 #define FILE_WRITE_THROUGH 0x00000002
2791 #define FILE_SEQUENTIAL_ONLY 0x00000004
2792 #define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
2793 #define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
2794 #define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
2795 #define FILE_NON_DIRECTORY_FILE 0x00000040
2796 #define FILE_CREATE_TREE_CONNECTION 0x00000080
2797 #define FILE_COMPLETE_IF_OPLOCKED 0x00000100
2798 #define FILE_NO_EA_KNOWLEDGE 0x00000200
2799 #define FILE_OPEN_FOR_RECOVERY 0x00000400
2800 #define FILE_RANDOM_ACCESS 0x00000800
2801 #define FILE_DELETE_ON_CLOSE 0x00001000
2802 #define FILE_OPEN_BY_FILE_ID 0x00002000
2803 #define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
2804 #define FILE_NO_COMPRESSION 0x00008000
2805 #define FILE_RESERVE_OPFILTER 0x00100000
2806 #define FILE_OPEN_REPARSE_POINT 0x00200000
2807 #define FILE_OPEN_OFFLINE_FILE 0x00400000
2808 #define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000
2810 #define FILE_ATTRIBUTE_VALID_FLAGS 0x00007fb7
2811 #define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7
2813 /* status for NtCreateFile or NtOpenFile */
2814 #define FILE_SUPERSEDED 0
2815 #define FILE_OPENED 1
2816 #define FILE_CREATED 2
2817 #define FILE_OVERWRITTEN 3
2818 #define FILE_EXISTS 4
2819 #define FILE_DOES_NOT_EXIST 5
2821 /* disposition for NtCreateFile */
2822 #define FILE_SUPERSEDE 0
2823 #define FILE_OPEN 1
2824 #define FILE_CREATE 2
2825 #define FILE_OPEN_IF 3
2826 #define FILE_OVERWRITE 4
2827 #define FILE_OVERWRITE_IF 5
2828 #define FILE_MAXIMUM_DISPOSITION 5
2830 /* Characteristics of a File System */
2831 #define FILE_REMOVABLE_MEDIA 0x00000001
2832 #define FILE_READ_ONLY_DEVICE 0x00000002
2833 #define FILE_FLOPPY_DISKETTE 0x00000004
2834 #define FILE_WRITE_ONE_MEDIA 0x00000008
2835 #define FILE_REMOTE_DEVICE 0x00000010
2836 #define FILE_DEVICE_IS_MOUNTED 0x00000020
2837 #define FILE_VIRTUAL_VOLUME 0x00000040
2838 #define FILE_AUTOGENERATED_DEVICE_NAME 0x00000080
2839 #define FILE_DEVICE_SECURE_OPEN 0x00000100
2840 #define FILE_CHARACTERISTIC_PNP_DEVICE 0x00000800
2841 #define FILE_CHARACTERISTIC_TS_DEVICE 0x00001000
2842 #define FILE_CHARACTERISTIC_WEBDAV_DEVICE 0x00002000
2843 #define FILE_CHARACTERISTIC_CSV 0x00010000
2844 #define FILE_DEVICE_ALLOW_APPCONTAINER_TRAVERSAL 0x00020000
2845 #define FILE_PORTABLE_DEVICE 0x00040000
2847 /* options for NtCreateNamedPipeFile */
2848 #define FILE_PIPE_INBOUND 0x00000000
2849 #define FILE_PIPE_OUTBOUND 0x00000001
2850 #define FILE_PIPE_FULL_DUPLEX 0x00000002
2852 /* options for pipe's type */
2853 #define FILE_PIPE_TYPE_MESSAGE 0x00000001
2854 #define FILE_PIPE_TYPE_BYTE 0x00000000
2855 /* options for pipe's message mode */
2856 #define FILE_PIPE_MESSAGE_MODE 0x00000001
2857 #define FILE_PIPE_BYTE_STREAM_MODE 0x00000000
2858 /* options for pipe's blocking mode */
2859 #define FILE_PIPE_COMPLETE_OPERATION 0x00000001
2860 #define FILE_PIPE_QUEUE_OPERATION 0x00000000
2861 /* and client / server end */
2862 #define FILE_PIPE_SERVER_END 0x00000001
2863 #define FILE_PIPE_CLIENT_END 0x00000000
2865 #define INTERNAL_TS_ACTIVE_CONSOLE_ID ( *((volatile ULONG*)(0x7ffe02d8)) )
2867 #define LOGONID_CURRENT ((ULONG)-1)
2869 #define OBJ_PROTECT_CLOSE 0x00000001
2870 #define OBJ_INHERIT 0x00000002
2871 #define OBJ_PERMANENT 0x00000010
2872 #define OBJ_EXCLUSIVE 0x00000020
2873 #define OBJ_CASE_INSENSITIVE 0x00000040
2874 #define OBJ_OPENIF 0x00000080
2875 #define OBJ_OPENLINK 0x00000100
2876 #define OBJ_KERNEL_HANDLE 0x00000200
2877 #define OBJ_VALID_ATTRIBUTES 0x000003F2
2879 #define SERVERNAME_CURRENT ((HANDLE)NULL)
2881 typedef void (CALLBACK *PNTAPCFUNC)(ULONG_PTR,ULONG_PTR,ULONG_PTR); /* FIXME: not the right name */
2882 typedef void (CALLBACK *PRTL_THREAD_START_ROUTINE)(LPVOID); /* FIXME: not the right name */
2883 typedef DWORD (CALLBACK *PRTL_WORK_ITEM_ROUTINE)(LPVOID); /* FIXME: not the right name */
2884 typedef void (NTAPI *RTL_WAITORTIMERCALLBACKFUNC)(PVOID,BOOLEAN); /* FIXME: not the right name */
2887 /* DbgPrintEx default levels */
2888 #define DPFLTR_ERROR_LEVEL 0
2889 #define DPFLTR_WARNING_LEVEL 1
2890 #define DPFLTR_TRACE_LEVEL 2
2891 #define DPFLTR_INFO_LEVEL 3
2892 #define DPFLTR_MASK 0x8000000
2894 /* Well-known LUID values */
2895 #define SE_MIN_WELL_KNOWN_PRIVILEGE 2
2896 #define SE_CREATE_TOKEN_PRIVILEGE 2
2897 #define SE_ASSIGNPRIMARYTOKEN_PRIVILEGE 3
2898 #define SE_LOCK_MEMORY_PRIVILEGE 4
2899 #define SE_INCREASE_QUOTA_PRIVILEGE 5
2900 #define SE_UNSOLICITED_INPUT_PRIVILEGE 6 /* obsolete */
2901 #define SE_MACHINE_ACCOUNT_PRIVILEGE 6
2902 #define SE_TCB_PRIVILEGE 7
2903 #define SE_SECURITY_PRIVILEGE 8
2904 #define SE_TAKE_OWNERSHIP_PRIVILEGE 9
2905 #define SE_LOAD_DRIVER_PRIVILEGE 10
2906 #define SE_SYSTEM_PROFILE_PRIVILEGE 11
2907 #define SE_SYSTEMTIME_PRIVILEGE 12
2908 #define SE_PROF_SINGLE_PROCESS_PRIVILEGE 13
2909 #define SE_INC_BASE_PRIORITY_PRIVILEGE 14
2910 #define SE_CREATE_PAGEFILE_PRIVILEGE 15
2911 #define SE_CREATE_PERMANENT_PRIVILEGE 16
2912 #define SE_BACKUP_PRIVILEGE 17
2913 #define SE_RESTORE_PRIVILEGE 18
2914 #define SE_SHUTDOWN_PRIVILEGE 19
2915 #define SE_DEBUG_PRIVILEGE 20
2916 #define SE_AUDIT_PRIVILEGE 21
2917 #define SE_SYSTEM_ENVIRONMENT_PRIVILEGE 22
2918 #define SE_CHANGE_NOTIFY_PRIVILEGE 23
2919 #define SE_REMOTE_SHUTDOWN_PRIVILEGE 24
2920 #define SE_UNDOCK_PRIVILEGE 25
2921 #define SE_SYNC_AGENT_PRIVILEGE 26
2922 #define SE_ENABLE_DELEGATION_PRIVILEGE 27
2923 #define SE_MANAGE_VOLUME_PRIVILEGE 28
2924 #define SE_IMPERSONATE_PRIVILEGE 29
2925 #define SE_CREATE_GLOBAL_PRIVILEGE 30
2926 #define SE_MAX_WELL_KNOWN_PRIVILEGE SE_CREATE_GLOBAL_PRIVILEGE
2928 /* NtGlobalFlag bits */
2929 #define FLG_STOP_ON_EXCEPTION 0x00000001
2930 #define FLG_SHOW_LDR_SNAPS 0x00000002
2931 #define FLG_DEBUG_INITIAL_COMMAND 0x00000004
2932 #define FLG_STOP_ON_HUNG_GUI 0x00000008
2933 #define FLG_HEAP_ENABLE_TAIL_CHECK 0x00000010
2934 #define FLG_HEAP_ENABLE_FREE_CHECK 0x00000020
2935 #define FLG_HEAP_VALIDATE_PARAMETERS 0x00000040
2936 #define FLG_HEAP_VALIDATE_ALL 0x00000080
2937 #define FLG_APPLICATION_VERIFIER 0x00000100
2938 #define FLG_POOL_ENABLE_TAGGING 0x00000400
2939 #define FLG_HEAP_ENABLE_TAGGING 0x00000800
2940 #define FLG_USER_STACK_TRACE_DB 0x00001000
2941 #define FLG_KERNEL_STACK_TRACE_DB 0x00002000
2942 #define FLG_MAINTAIN_OBJECT_TYPELIST 0x00004000
2943 #define FLG_HEAP_ENABLE_TAG_BY_DLL 0x00008000
2944 #define FLG_DISABLE_STACK_EXTENSION 0x00010000
2945 #define FLG_ENABLE_CSRDEBUG 0x00020000
2946 #define FLG_ENABLE_KDEBUG_SYMBOL_LOAD 0x00040000
2947 #define FLG_DISABLE_PAGE_KERNEL_STACKS 0x00080000
2948 #define FLG_ENABLE_SYSTEM_CRIT_BREAKS 0x00100000
2949 #define FLG_HEAP_DISABLE_COALESCING 0x00200000
2950 #define FLG_ENABLE_CLOSE_EXCEPTIONS 0x00400000
2951 #define FLG_ENABLE_EXCEPTION_LOGGING 0x00800000
2952 #define FLG_ENABLE_HANDLE_TYPE_TAGGING 0x01000000
2953 #define FLG_HEAP_PAGE_ALLOCS 0x02000000
2954 #define FLG_DEBUG_INITIAL_COMMAND_EX 0x04000000
2955 #define FLG_DISABLE_DBGPRINT 0x08000000
2956 #define FLG_CRITSEC_EVENT_CREATION 0x10000000
2957 #define FLG_LDR_TOP_DOWN 0x20000000
2958 #define FLG_ENABLE_HANDLE_EXCEPTIONS 0x40000000
2959 #define FLG_DISABLE_PROTDLLS 0x80000000
2961 /* Rtl*Registry* functions structs and defines */
2962 #define RTL_REGISTRY_ABSOLUTE 0
2963 #define RTL_REGISTRY_SERVICES 1
2964 #define RTL_REGISTRY_CONTROL 2
2965 #define RTL_REGISTRY_WINDOWS_NT 3
2966 #define RTL_REGISTRY_DEVICEMAP 4
2967 #define RTL_REGISTRY_USER 5
2969 #define RTL_REGISTRY_HANDLE 0x40000000
2970 #define RTL_REGISTRY_OPTIONAL 0x80000000
2972 #define RTL_QUERY_REGISTRY_SUBKEY 0x00000001
2973 #define RTL_QUERY_REGISTRY_TOPKEY 0x00000002
2974 #define RTL_QUERY_REGISTRY_REQUIRED 0x00000004
2975 #define RTL_QUERY_REGISTRY_NOVALUE 0x00000008
2976 #define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010
2977 #define RTL_QUERY_REGISTRY_DIRECT 0x00000020
2978 #define RTL_QUERY_REGISTRY_DELETE 0x00000040
2979 #define RTL_QUERY_REGISTRY_TYPECHECK 0x00000100
2981 #define RTL_QUERY_REGISTRY_TYPECHECK_SHIFT 24
2983 typedef NTSTATUS (WINAPI *PRTL_QUERY_REGISTRY_ROUTINE)( PCWSTR ValueName,
2984 ULONG ValueType,
2985 PVOID ValueData,
2986 ULONG ValueLength,
2987 PVOID Context,
2988 PVOID EntryContext);
2990 typedef struct _RTL_QUERY_REGISTRY_TABLE
2992 PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;
2993 ULONG Flags;
2994 PWSTR Name;
2995 PVOID EntryContext;
2996 ULONG DefaultType;
2997 PVOID DefaultData;
2998 ULONG DefaultLength;
2999 } RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
3001 typedef struct _KEY_MULTIPLE_VALUE_INFORMATION
3003 PUNICODE_STRING ValueName;
3004 ULONG DataLength;
3005 ULONG DataOffset;
3006 ULONG Type;
3007 } KEY_MULTIPLE_VALUE_INFORMATION, *PKEY_MULTIPLE_VALUE_INFORMATION;
3009 typedef VOID (CALLBACK *PRTL_OVERLAPPED_COMPLETION_ROUTINE)(DWORD,DWORD,LPVOID);
3011 typedef VOID (CALLBACK *PTIMER_APC_ROUTINE) ( PVOID, ULONG, LONG );
3013 typedef enum _EVENT_INFORMATION_CLASS {
3014 EventBasicInformation
3015 } EVENT_INFORMATION_CLASS, *PEVENT_INFORMATION_CLASS;
3017 typedef struct _EVENT_BASIC_INFORMATION {
3018 EVENT_TYPE EventType;
3019 LONG EventState;
3020 } EVENT_BASIC_INFORMATION, *PEVENT_BASIC_INFORMATION;
3022 typedef enum _SEMAPHORE_INFORMATION_CLASS {
3023 SemaphoreBasicInformation
3024 } SEMAPHORE_INFORMATION_CLASS, *PSEMAPHORE_INFORMATION_CLASS;
3026 typedef struct _SEMAPHORE_BASIC_INFORMATION {
3027 ULONG CurrentCount;
3028 ULONG MaximumCount;
3029 } SEMAPHORE_BASIC_INFORMATION, *PSEMAPHORE_BASIC_INFORMATION;
3031 typedef enum _SECTION_INFORMATION_CLASS
3033 SectionBasicInformation,
3034 SectionImageInformation,
3035 SectionRelocationInformation,
3036 SectionOriginalBaseInformation,
3037 SectionInternalImageInformation
3038 } SECTION_INFORMATION_CLASS;
3040 typedef struct _SECTION_BASIC_INFORMATION {
3041 PVOID BaseAddress;
3042 ULONG Attributes;
3043 LARGE_INTEGER Size;
3044 } SECTION_BASIC_INFORMATION, *PSECTION_BASIC_INFORMATION;
3046 typedef struct _SECTION_IMAGE_INFORMATION {
3047 PVOID TransferAddress;
3048 ULONG ZeroBits;
3049 SIZE_T MaximumStackSize;
3050 SIZE_T CommittedStackSize;
3051 ULONG SubSystemType;
3052 USHORT MinorSubsystemVersion;
3053 USHORT MajorSubsystemVersion;
3054 USHORT MajorOperatingSystemVersion;
3055 USHORT MinorOperatingSystemVersion;
3056 USHORT ImageCharacteristics;
3057 USHORT DllCharacteristics;
3058 USHORT Machine;
3059 BOOLEAN ImageContainsCode;
3060 union
3062 UCHAR ImageFlags;
3063 struct
3065 UCHAR ComPlusNativeReady : 1;
3066 UCHAR ComPlusILOnly : 1;
3067 UCHAR ImageDynamicallyRelocated : 1;
3068 UCHAR ImageMappedFlat : 1;
3069 UCHAR BaseBelow4gb : 1;
3070 UCHAR ComPlusPrefer32bit : 1;
3071 #ifdef __WINESRC__ /* Wine extensions */
3072 UCHAR WineBuiltin : 1;
3073 UCHAR WineFakeDll : 1;
3074 #else
3075 UCHAR Reserved : 2;
3076 #endif
3077 } DUMMYSTRUCTNAME;
3078 } DUMMYUNIONNAME;
3079 ULONG LoaderFlags;
3080 ULONG ImageFileSize;
3081 ULONG CheckSum;
3082 } SECTION_IMAGE_INFORMATION, *PSECTION_IMAGE_INFORMATION;
3084 typedef struct _LPC_SECTION_WRITE {
3085 ULONG Length;
3086 HANDLE SectionHandle;
3087 ULONG SectionOffset;
3088 ULONG ViewSize;
3089 PVOID ViewBase;
3090 PVOID TargetViewBase;
3091 } LPC_SECTION_WRITE, *PLPC_SECTION_WRITE;
3093 typedef struct _LPC_SECTION_READ {
3094 ULONG Length;
3095 ULONG ViewSize;
3096 PVOID ViewBase;
3097 } LPC_SECTION_READ, *PLPC_SECTION_READ;
3099 typedef struct _LPC_MESSAGE {
3100 USHORT DataSize;
3101 USHORT MessageSize;
3102 USHORT MessageType;
3103 USHORT VirtualRangesOffset;
3104 CLIENT_ID ClientId;
3105 ULONG_PTR MessageId;
3106 ULONG_PTR SectionSize;
3107 UCHAR Data[ANYSIZE_ARRAY];
3108 } LPC_MESSAGE, *PLPC_MESSAGE;
3110 typedef struct _RTL_USER_PROCESS_INFORMATION
3112 ULONG Length;
3113 HANDLE Process;
3114 HANDLE Thread;
3115 CLIENT_ID ClientId;
3116 SECTION_IMAGE_INFORMATION ImageInformation;
3117 } RTL_USER_PROCESS_INFORMATION, *PRTL_USER_PROCESS_INFORMATION;
3119 typedef enum _SHUTDOWN_ACTION {
3120 ShutdownNoReboot,
3121 ShutdownReboot,
3122 ShutdownPowerOff
3123 } SHUTDOWN_ACTION, *PSHUTDOWN_ACTION;
3125 typedef enum _KPROFILE_SOURCE {
3126 ProfileTime,
3127 ProfileAlignmentFixup,
3128 ProfileTotalIssues,
3129 ProfilePipelineDry,
3130 ProfileLoadInstructions,
3131 ProfilePipelineFrozen,
3132 ProfileBranchInstructions,
3133 ProfileTotalNonissues,
3134 ProfileDcacheMisses,
3135 ProfileIcacheMisses,
3136 ProfileCacheMisses,
3137 ProfileBranchMispredictions,
3138 ProfileStoreInstructions,
3139 ProfileFpInstructions,
3140 ProfileIntegerInstructions,
3141 Profile2Issue,
3142 Profile3Issue,
3143 Profile4Issue,
3144 ProfileSpecialInstructions,
3145 ProfileTotalCycles,
3146 ProfileIcacheIssues,
3147 ProfileDcacheAccesses,
3148 ProfileMemoryBarrierCycles,
3149 ProfileLoadLinkedIssues,
3150 ProfileMaximum
3151 } KPROFILE_SOURCE, *PKPROFILE_SOURCE;
3153 typedef struct _DIRECTORY_BASIC_INFORMATION {
3154 UNICODE_STRING ObjectName;
3155 UNICODE_STRING ObjectTypeName;
3156 } DIRECTORY_BASIC_INFORMATION, *PDIRECTORY_BASIC_INFORMATION;
3158 typedef struct _INITIAL_TEB {
3159 void *OldStackBase;
3160 void *OldStackLimit;
3161 void *StackBase;
3162 void *StackLimit;
3163 void *DeallocationStack;
3164 } INITIAL_TEB, *PINITIAL_TEB;
3166 typedef enum _PORT_INFORMATION_CLASS {
3167 PortNoInformation
3168 } PORT_INFORMATION_CLASS, *PPORT_INFORMATION_CLASS;
3170 typedef enum _IO_COMPLETION_INFORMATION_CLASS {
3171 IoCompletionBasicInformation
3172 } IO_COMPLETION_INFORMATION_CLASS, *PIO_COMPLETION_INFORMATION_CLASS;
3174 typedef struct _FILE_COMPLETION_INFORMATION {
3175 HANDLE CompletionPort;
3176 ULONG_PTR CompletionKey;
3177 } FILE_COMPLETION_INFORMATION, *PFILE_COMPLETION_INFORMATION;
3179 #define IO_COMPLETION_QUERY_STATE 0x0001
3180 #define IO_COMPLETION_MODIFY_STATE 0x0002
3181 #define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
3183 typedef struct _FILE_IO_COMPLETION_INFORMATION {
3184 ULONG_PTR CompletionKey;
3185 ULONG_PTR CompletionValue;
3186 IO_STATUS_BLOCK IoStatusBlock;
3187 } FILE_IO_COMPLETION_INFORMATION, *PFILE_IO_COMPLETION_INFORMATION;
3189 typedef enum _HARDERROR_RESPONSE_OPTION {
3190 OptionAbortRetryIgnore,
3191 OptionOk,
3192 OptionOkCancel,
3193 OptionRetryCancel,
3194 OptionYesNo,
3195 OptionYesNoCancel,
3196 OptionShutdownSystem
3197 } HARDERROR_RESPONSE_OPTION, *PHARDERROR_RESPONSE_OPTION;
3199 typedef enum _HARDERROR_RESPONSE {
3200 ResponseReturnToCaller,
3201 ResponseNotHandled,
3202 ResponseAbort,
3203 ResponseCancel,
3204 ResponseIgnore,
3205 ResponseNo,
3206 ResponseOk,
3207 ResponseRetry,
3208 ResponseYes
3209 } HARDERROR_RESPONSE, *PHARDERROR_RESPONSE;
3211 typedef enum _SYSDBG_COMMAND {
3212 SysDbgQueryModuleInformation,
3213 SysDbgQueryTraceInformation,
3214 SysDbgSetTracepoint,
3215 SysDbgSetSpecialCall,
3216 SysDbgClearSpecialCalls,
3217 SysDbgQuerySpecialCalls,
3218 SysDbgBreakPoint,
3219 SysDbgQueryVersion,
3220 SysDbgReadVirtual,
3221 SysDbgWriteVirtual,
3222 SysDbgReadPhysical,
3223 SysDbgWritePhysical,
3224 SysDbgReadControlSpace,
3225 SysDbgWriteControlSpace,
3226 SysDbgReadIoSpace,
3227 SysDbgWriteIoSpace,
3228 SysDbgReadMsr,
3229 SysDbgWriteMsr,
3230 SysDbgReadBusData,
3231 SysDbgWriteBusData
3232 } SYSDBG_COMMAND, *PSYSDBG_COMMAND;
3234 typedef struct _CPTABLEINFO
3236 USHORT CodePage;
3237 USHORT MaximumCharacterSize;
3238 USHORT DefaultChar;
3239 USHORT UniDefaultChar;
3240 USHORT TransDefaultChar;
3241 USHORT TransUniDefaultChar;
3242 USHORT DBCSCodePage;
3243 UCHAR LeadByte[12];
3244 USHORT *MultiByteTable;
3245 void *WideCharTable;
3246 USHORT *DBCSRanges;
3247 USHORT *DBCSOffsets;
3248 } CPTABLEINFO, *PCPTABLEINFO;
3250 typedef struct _NLSTABLEINFO
3252 CPTABLEINFO OemTableInfo;
3253 CPTABLEINFO AnsiTableInfo;
3254 USHORT *UpperCaseTable;
3255 USHORT *LowerCaseTable;
3256 } NLSTABLEINFO, *PNLSTABLEINFO;
3258 /*************************************************************************
3259 * Loader structures
3261 * Those are not part of standard Winternl.h
3264 typedef struct _LDR_SERVICE_TAG_RECORD
3266 struct _LDR_SERVICE_TAG_RECORD *Next;
3267 ULONG ServiceTag;
3268 } LDR_SERVICE_TAG_RECORD, *PLDR_SERVICE_TAG_RECORD;
3270 typedef struct _LDRP_CSLIST
3272 SINGLE_LIST_ENTRY *Tail;
3273 } LDRP_CSLIST, *PLDRP_CSLIST;
3275 typedef struct _LDR_DEPENDENCY
3277 LDRP_CSLIST dependency_to_entry;
3278 struct _LDR_DDAG_NODE *dependency_to;
3279 LDRP_CSLIST dependency_from_entry;
3280 struct _LDR_DDAG_NODE *dependency_from;
3281 } LDR_DEPENDENCY, *PLDR_DEPENDENCY;
3283 typedef enum _LDR_DDAG_STATE
3285 LdrModulesMerged = -5,
3286 LdrModulesInitError = -4,
3287 LdrModulesSnapError = -3,
3288 LdrModulesUnloaded = -2,
3289 LdrModulesUnloading = -1,
3290 LdrModulesPlaceHolder = 0,
3291 LdrModulesMapping = 1,
3292 LdrModulesMapped = 2,
3293 LdrModulesWaitingForDependencies = 3,
3294 LdrModulesSnapping = 4,
3295 LdrModulesSnapped = 5,
3296 LdrModulesCondensed = 6,
3297 LdrModulesReadyToInit = 7,
3298 LdrModulesInitializing = 8,
3299 LdrModulesReadyToRun = 9,
3300 } LDR_DDAG_STATE;
3302 typedef struct _LDR_DDAG_NODE
3304 LIST_ENTRY Modules;
3305 LDR_SERVICE_TAG_RECORD *ServiceTagList;
3306 LONG LoadCount;
3307 ULONG LoadWhileUnloadingCount;
3308 ULONG LowestLink;
3309 LDRP_CSLIST Dependencies;
3310 LDRP_CSLIST IncomingDependencies;
3311 LDR_DDAG_STATE State;
3312 SINGLE_LIST_ENTRY CondenseLink;
3313 ULONG PreorderNumber;
3314 } LDR_DDAG_NODE, *PLDR_DDAG_NODE;
3316 typedef enum _LDR_DLL_LOAD_REASON
3318 LoadReasonStaticDependency,
3319 LoadReasonStaticForwarderDependency,
3320 LoadReasonDynamicForwarderDependency,
3321 LoadReasonDelayloadDependency,
3322 LoadReasonDynamicLoad,
3323 LoadReasonAsImageLoad,
3324 LoadReasonAsDataLoad,
3325 LoadReasonUnknown = -1
3326 } LDR_DLL_LOAD_REASON, *PLDR_DLL_LOAD_REASON;
3328 typedef struct _LDR_DATA_TABLE_ENTRY
3330 LIST_ENTRY InLoadOrderLinks;
3331 LIST_ENTRY InMemoryOrderLinks;
3332 LIST_ENTRY InInitializationOrderLinks;
3333 void* DllBase;
3334 void* EntryPoint;
3335 ULONG SizeOfImage;
3336 UNICODE_STRING FullDllName;
3337 UNICODE_STRING BaseDllName;
3338 ULONG Flags;
3339 SHORT LoadCount;
3340 SHORT TlsIndex;
3341 LIST_ENTRY HashLinks;
3342 ULONG TimeDateStamp;
3343 HANDLE ActivationContext;
3344 void* Lock;
3345 LDR_DDAG_NODE* DdagNode;
3346 LIST_ENTRY NodeModuleLink;
3347 struct _LDRP_LOAD_CONTEXT *LoadContext;
3348 void* ParentDllBase;
3349 void* SwitchBackContext;
3350 RTL_BALANCED_NODE BaseAddressIndexNode;
3351 RTL_BALANCED_NODE MappingInfoIndexNode;
3352 ULONG_PTR OriginalBase;
3353 LARGE_INTEGER LoadTime;
3354 ULONG BaseNameHashValue;
3355 LDR_DLL_LOAD_REASON LoadReason;
3356 ULONG ImplicitPathOptions;
3357 ULONG ReferenceCount;
3358 } LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY;
3360 typedef struct _LDR_DLL_LOADED_NOTIFICATION_DATA
3362 ULONG Flags;
3363 const UNICODE_STRING *FullDllName;
3364 const UNICODE_STRING *BaseDllName;
3365 void *DllBase;
3366 ULONG SizeOfImage;
3367 } LDR_DLL_LOADED_NOTIFICATION_DATA, *PLDR_DLL_LOADED_NOTIFICATION_DATA;
3369 typedef struct _LDR_DLL_UNLOADED_NOTIFICATION_DATA
3371 ULONG Flags;
3372 const UNICODE_STRING *FullDllName;
3373 const UNICODE_STRING *BaseDllName;
3374 void *DllBase;
3375 ULONG SizeOfImage;
3376 } LDR_DLL_UNLOADED_NOTIFICATION_DATA, *PLDR_DLL_UNLOADED_NOTIFICATION_DATA;
3378 typedef union _LDR_DLL_NOTIFICATION_DATA
3380 LDR_DLL_LOADED_NOTIFICATION_DATA Loaded;
3381 LDR_DLL_UNLOADED_NOTIFICATION_DATA Unloaded;
3382 } LDR_DLL_NOTIFICATION_DATA, *PLDR_DLL_NOTIFICATION_DATA;
3384 typedef void (CALLBACK *PLDR_DLL_NOTIFICATION_FUNCTION)(ULONG, LDR_DLL_NOTIFICATION_DATA*, void*);
3386 /* those defines are (some of the) regular LDR_DATA_TABLE_ENTRY.Flags values */
3387 #define LDR_IMAGE_IS_DLL 0x00000004
3388 #define LDR_LOAD_IN_PROGRESS 0x00001000
3389 #define LDR_UNLOAD_IN_PROGRESS 0x00002000
3390 #define LDR_NO_DLL_CALLS 0x00040000
3391 #define LDR_PROCESS_ATTACHED 0x00080000
3392 #define LDR_COR_IMAGE 0x00400000
3393 #define LDR_COR_ILONLY 0x01000000
3395 /* these ones is Wine specific */
3396 #define LDR_DONT_RESOLVE_REFS 0x40000000
3397 #define LDR_WINE_INTERNAL 0x80000000
3399 /* flag for LdrAddRefDll */
3400 #define LDR_ADDREF_DLL_PIN 0x00000001
3402 /* flags for LdrGetDllHandleEx */
3403 #define LDR_GET_DLL_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT 0x00000001
3404 #define LDR_GET_DLL_HANDLE_EX_FLAG_PIN 0x00000002
3406 #define LDR_DLL_NOTIFICATION_REASON_LOADED 1
3407 #define LDR_DLL_NOTIFICATION_REASON_UNLOADED 2
3409 /* FIXME: to be checked */
3410 #define MAXIMUM_FILENAME_LENGTH 256
3412 typedef struct _RTL_PROCESS_MODULE_INFORMATION
3414 PVOID Section; /* 00/00 */
3415 PVOID MappedBaseAddress; /* 04/08 */
3416 PVOID ImageBaseAddress; /* 08/10 */
3417 ULONG ImageSize; /* 0c/18 */
3418 ULONG Flags; /* 10/1c */
3419 WORD LoadOrderIndex; /* 14/20 */
3420 WORD InitOrderIndex; /* 16/22 */
3421 WORD LoadCount; /* 18/24 */
3422 WORD NameOffset; /* 1a/26 */
3423 BYTE Name[MAXIMUM_FILENAME_LENGTH]; /* 1c/28 */
3424 } RTL_PROCESS_MODULE_INFORMATION, *PRTL_PROCESS_MODULE_INFORMATION;
3426 typedef struct _RTL_PROCESS_MODULES
3428 ULONG ModulesCount;
3429 RTL_PROCESS_MODULE_INFORMATION Modules[1]; /* FIXME: should be Modules[0] */
3430 } RTL_PROCESS_MODULES, *PRTL_PROCESS_MODULES;
3432 #define PROCESS_CREATE_FLAGS_BREAKAWAY 0x00000001
3433 #define PROCESS_CREATE_FLAGS_NO_DEBUG_INHERIT 0x00000002
3434 #define PROCESS_CREATE_FLAGS_INHERIT_HANDLES 0x00000004
3435 #define PROCESS_CREATE_FLAGS_OVERRIDE_ADDRESS_SPACE 0x00000008
3436 #define PROCESS_CREATE_FLAGS_LARGE_PAGES 0x00000010
3437 #define PROCESS_CREATE_FLAGS_LARGE_PAGE_SYSTEM_DLL 0x00000020
3438 #define PROCESS_CREATE_FLAGS_PROTECTED_PROCESS 0x00000040
3439 #define PROCESS_CREATE_FLAGS_CREATE_SESSION 0x00000080
3440 #define PROCESS_CREATE_FLAGS_INHERIT_FROM_PARENT 0x00000100
3441 #define PROCESS_CREATE_FLAGS_SUSPENDED 0x00000200
3442 #define PROCESS_CREATE_FLAGS_EXTENDED_UNKNOWN 0x00000400
3444 typedef struct _RTL_PROCESS_MODULE_INFORMATION_EX
3446 USHORT NextOffset;
3447 RTL_PROCESS_MODULE_INFORMATION BaseInfo;
3448 ULONG ImageCheckSum;
3449 ULONG TimeDateStamp;
3450 void *DefaultBase;
3451 } RTL_PROCESS_MODULE_INFORMATION_EX;
3453 #define THREAD_CREATE_FLAGS_CREATE_SUSPENDED 0x00000001
3454 #define THREAD_CREATE_FLAGS_SKIP_THREAD_ATTACH 0x00000002
3455 #define THREAD_CREATE_FLAGS_HIDE_FROM_DEBUGGER 0x00000004
3456 #define THREAD_CREATE_FLAGS_HAS_SECURITY_DESCRIPTOR 0x00000010
3457 #define THREAD_CREATE_FLAGS_ACCESS_CHECK_IN_TARGET 0x00000020
3458 #define THREAD_CREATE_FLAGS_INITIAL_THREAD 0x00000080
3460 #define EH_NONCONTINUABLE 0x01
3461 #define EH_UNWINDING 0x02
3462 #define EH_EXIT_UNWIND 0x04
3463 #define EH_STACK_INVALID 0x08
3464 #define EH_NESTED_CALL 0x10
3465 #define EH_TARGET_UNWIND 0x20
3466 #define EH_COLLIDED_UNWIND 0x40
3468 #ifdef __WINESRC__
3470 /* Wine-specific exceptions codes */
3472 #define EXCEPTION_WINE_STUB 0x80000100 /* stub entry point called */
3473 #define EXCEPTION_WINE_ASSERTION 0x80000101 /* assertion failed */
3475 /* Wine extension; Windows doesn't have a name for this code. This is an
3476 undocumented exception understood by MS VC debugger, allowing the program
3477 to name a particular thread. */
3478 #define EXCEPTION_WINE_NAME_THREAD 0x406D1388
3480 /* used for C++ exceptions in msvcrt
3481 * parameters:
3482 * [0] CXX_FRAME_MAGIC
3483 * [1] pointer to exception object
3484 * [2] pointer to type
3486 #define EXCEPTION_WINE_CXX_EXCEPTION 0xe06d7363
3487 #define EXCEPTION_WINE_CXX_FRAME_MAGIC 0x19930520
3489 #endif
3491 typedef LONG (CALLBACK *PRTL_EXCEPTION_FILTER)(PEXCEPTION_POINTERS);
3493 typedef void (CALLBACK *PTP_IO_CALLBACK)(PTP_CALLBACK_INSTANCE,void*,void*,IO_STATUS_BLOCK*,PTP_IO);
3495 #define PS_ATTRIBUTE_THREAD 0x00010000
3496 #define PS_ATTRIBUTE_INPUT 0x00020000
3497 #define PS_ATTRIBUTE_ADDITIVE 0x00040000
3499 typedef enum _PS_ATTRIBUTE_NUM
3501 PsAttributeParentProcess,
3502 PsAttributeDebugPort,
3503 PsAttributeToken,
3504 PsAttributeClientId,
3505 PsAttributeTebAddress,
3506 PsAttributeImageName,
3507 PsAttributeImageInfo,
3508 PsAttributeMemoryReserve,
3509 PsAttributePriorityClass,
3510 PsAttributeErrorMode,
3511 PsAttributeStdHandleInfo,
3512 PsAttributeHandleList,
3513 PsAttributeGroupAffinity,
3514 PsAttributePreferredNode,
3515 PsAttributeIdealProcessor,
3516 PsAttributeUmsThread,
3517 PsAttributeMitigationOptions,
3518 PsAttributeProtectionLevel,
3519 PsAttributeSecureProcess,
3520 PsAttributeJobList,
3521 PsAttributeChildProcessPolicy,
3522 PsAttributeAllApplicationPackagesPolicy,
3523 PsAttributeWin32kFilter,
3524 PsAttributeSafeOpenPromptOriginClaim,
3525 PsAttributeBnoIsolation,
3526 PsAttributeDesktopAppPolicy,
3527 PsAttributeChpe,
3528 PsAttributeMax
3529 } PS_ATTRIBUTE_NUM;
3531 #define PS_ATTRIBUTE_PARENT_PROCESS (PsAttributeParentProcess | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE)
3532 #define PS_ATTRIBUTE_DEBUG_PORT (PsAttributeDebugPort | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE)
3533 #define PS_ATTRIBUTE_TOKEN (PsAttributeToken | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE)
3534 #define PS_ATTRIBUTE_CLIENT_ID (PsAttributeClientId | PS_ATTRIBUTE_THREAD)
3535 #define PS_ATTRIBUTE_TEB_ADDRESS (PsAttributeTebAddress | PS_ATTRIBUTE_THREAD)
3536 #define PS_ATTRIBUTE_IMAGE_NAME (PsAttributeImageName | PS_ATTRIBUTE_INPUT)
3537 #define PS_ATTRIBUTE_IMAGE_INFO (PsAttributeImageInfo)
3538 #define PS_ATTRIBUTE_MEMORY_RESERVE (PsAttributeMemoryReserve | PS_ATTRIBUTE_INPUT)
3539 #define PS_ATTRIBUTE_PRIORITY_CLASS (PsAttributePriorityClass | PS_ATTRIBUTE_INPUT)
3540 #define PS_ATTRIBUTE_ERROR_MODE (PsAttributeErrorMode | PS_ATTRIBUTE_INPUT)
3541 #define PS_ATTRIBUTE_STD_HANDLE_INFO (PsAttributeStdHandleInfo | PS_ATTRIBUTE_INPUT)
3542 #define PS_ATTRIBUTE_HANDLE_LIST (PsAttributeHandleList | PS_ATTRIBUTE_INPUT)
3543 #define PS_ATTRIBUTE_GROUP_AFFINITY (PsAttributeGroupAffinity | PS_ATTRIBUTE_THREAD | PS_ATTRIBUTE_INPUT)
3544 #define PS_ATTRIBUTE_PREFERRED_NODE (PsAttributePreferredNode | PS_ATTRIBUTE_INPUT)
3545 #define PS_ATTRIBUTE_IDEAL_PROCESSOR (PsAttributeIdealProcessor | PS_ATTRIBUTE_THREAD | PS_ATTRIBUTE_INPUT)
3546 #define PS_ATTRIBUTE_MITIGATION_OPTIONS (PsAttributeMitigationOptions | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_UNKNOWN)
3547 #define PS_ATTRIBUTE_PROTECTION_LEVEL (PsAttributeProtectionLevel | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_UNKNOWN)
3548 #define PS_ATTRIBUTE_SECURE_PROCESS (PsAttributeSecureProcess | PS_ATTRIBUTE_INPUT)
3549 #define PS_ATTRIBUTE_JOB_LIST (PsAttributeJobList | PS_ATTRIBUTE_INPUT)
3550 #define PS_ATTRIBUTE_CHILD_PROCESS_POLICY (PsAttributeChildProcessPolicy | PS_ATTRIBUTE_INPUT)
3551 #define PS_ATTRIBUTE_ALL_APPLICATION_PACKAGES_POLICY (PsAttributeAllApplicationPackagesPolicy | PS_ATTRIBUTE_INPUT)
3552 #define PS_ATTRIBUTE_WIN32K_FILTER (PsAttributeWin32kFilter | PS_ATTRIBUTE_INPUT)
3553 #define PS_ATTRIBUTE_SAFE_OPEN_PROMPT_ORIGIN_CLAIM (PsAttributeSafeOpenPromptOriginClaim | PS_ATTRIBUTE_INPUT)
3554 #define PS_ATTRIBUTE_BNO_ISOLATION (PsAttributeBnoIsolation | PS_ATTRIBUTE_INPUT)
3555 #define PS_ATTRIBUTE_DESKTOP_APP_POLICY (PsAttributeDesktopAppPolicy | PS_ATTRIBUTE_INPUT)
3557 typedef struct _PS_ATTRIBUTE
3559 ULONG_PTR Attribute;
3560 SIZE_T Size;
3561 union
3563 ULONG_PTR Value;
3564 void *ValuePtr;
3566 SIZE_T *ReturnLength;
3567 } PS_ATTRIBUTE;
3569 typedef struct _PS_ATTRIBUTE_LIST
3571 SIZE_T TotalLength;
3572 PS_ATTRIBUTE Attributes[1];
3573 } PS_ATTRIBUTE_LIST, *PPS_ATTRIBUTE_LIST;
3575 typedef enum _PS_CREATE_STATE
3577 PsCreateInitialState,
3578 PsCreateFailOnFileOpen,
3579 PsCreateFailOnSectionCreate,
3580 PsCreateFailExeFormat,
3581 PsCreateFailMachineMismatch,
3582 PsCreateFailExeName,
3583 PsCreateSuccess,
3584 PsCreateMaximumStates
3585 } PS_CREATE_STATE;
3587 typedef struct _PS_CREATE_INFO
3589 SIZE_T Size;
3590 PS_CREATE_STATE State;
3591 union
3593 struct
3595 union
3597 ULONG InitFlags;
3598 struct
3600 UCHAR WriteOutputOnExit : 1;
3601 UCHAR DetectManifest : 1;
3602 UCHAR IFEOSkipDebugger : 1;
3603 UCHAR IFEODoNotPropagateKeyState : 1;
3604 UCHAR SpareBits1 : 4;
3605 UCHAR SpareBits2 : 8;
3606 USHORT ProhibitedImageCharacteristics : 16;
3609 ACCESS_MASK AdditionalFileAccess;
3610 } InitState;
3611 struct
3613 HANDLE FileHandle;
3614 } FailSection;
3615 struct
3617 USHORT DllCharacteristics;
3618 } ExeFormat;
3619 struct
3621 HANDLE IFEOKey;
3622 } ExeName;
3623 struct
3625 union
3627 ULONG OutputFlags;
3628 struct
3630 UCHAR ProtectedProcess : 1;
3631 UCHAR AddressSpaceOverride : 1;
3632 UCHAR DevOverrideEnabled : 1;
3633 UCHAR ManifestDetected : 1;
3634 UCHAR ProtectedProcessLight : 1;
3635 UCHAR SpareBits1 : 3;
3636 UCHAR SpareBits2 : 8;
3637 USHORT SpareBits3 : 16;
3640 HANDLE FileHandle;
3641 HANDLE SectionHandle;
3642 ULONGLONG UserProcessParametersNative;
3643 ULONG UserProcessParametersWow64;
3644 ULONG CurrentParameterFlags;
3645 ULONGLONG PebAddressNative;
3646 ULONG PebAddressWow64;
3647 ULONGLONG ManifestAddress;
3648 ULONG ManifestSize;
3649 } SuccessState;
3651 } PS_CREATE_INFO, *PPS_CREATE_INFO;
3653 typedef struct _DBGKM_EXCEPTION
3655 EXCEPTION_RECORD ExceptionRecord;
3656 ULONG FirstChance;
3657 } DBGKM_EXCEPTION, *PDBGKM_EXCEPTION;
3659 typedef struct _DBGKM_CREATE_THREAD
3661 ULONG SubSystemKey;
3662 PVOID StartAddress;
3663 } DBGKM_CREATE_THREAD, *PDBGKM_CREATE_THREAD;
3665 typedef struct _DBGKM_CREATE_PROCESS
3667 ULONG SubSystemKey;
3668 HANDLE FileHandle;
3669 PVOID BaseOfImage;
3670 ULONG DebugInfoFileOffset;
3671 ULONG DebugInfoSize;
3672 DBGKM_CREATE_THREAD InitialThread;
3673 } DBGKM_CREATE_PROCESS, *PDBGKM_CREATE_PROCESS;
3675 typedef struct _DBGKM_EXIT_THREAD
3677 NTSTATUS ExitStatus;
3678 } DBGKM_EXIT_THREAD, *PDBGKM_EXIT_THREAD;
3680 typedef struct _DBGKM_EXIT_PROCESS
3682 NTSTATUS ExitStatus;
3683 } DBGKM_EXIT_PROCESS, *PDBGKM_EXIT_PROCESS;
3685 typedef struct _DBGKM_LOAD_DLL
3687 HANDLE FileHandle;
3688 PVOID BaseOfDll;
3689 ULONG DebugInfoFileOffset;
3690 ULONG DebugInfoSize;
3691 PVOID NamePointer;
3692 } DBGKM_LOAD_DLL, *PDBGKM_LOAD_DLL;
3694 typedef struct _DBGKM_UNLOAD_DLL
3696 PVOID BaseAddress;
3697 } DBGKM_UNLOAD_DLL, *PDBGKM_UNLOAD_DLL;
3699 typedef enum _DBG_STATE
3701 DbgIdle,
3702 DbgReplyPending,
3703 DbgCreateThreadStateChange,
3704 DbgCreateProcessStateChange,
3705 DbgExitThreadStateChange,
3706 DbgExitProcessStateChange,
3707 DbgExceptionStateChange,
3708 DbgBreakpointStateChange,
3709 DbgSingleStepStateChange,
3710 DbgLoadDllStateChange,
3711 DbgUnloadDllStateChange
3712 } DBG_STATE, *PDBG_STATE;
3714 typedef struct _DBGUI_CREATE_THREAD
3716 HANDLE HandleToThread;
3717 DBGKM_CREATE_THREAD NewThread;
3718 } DBGUI_CREATE_THREAD, *PDBGUI_CREATE_THREAD;
3720 typedef struct _DBGUI_CREATE_PROCESS
3722 HANDLE HandleToProcess;
3723 HANDLE HandleToThread;
3724 DBGKM_CREATE_PROCESS NewProcess;
3725 } DBGUI_CREATE_PROCESS, *PDBGUI_CREATE_PROCESS;
3727 typedef struct _DBGUI_WAIT_STATE_CHANGE
3729 DBG_STATE NewState;
3730 CLIENT_ID AppClientId;
3731 union
3733 DBGKM_EXCEPTION Exception;
3734 DBGUI_CREATE_THREAD CreateThread;
3735 DBGUI_CREATE_PROCESS CreateProcessInfo;
3736 DBGKM_EXIT_THREAD ExitThread;
3737 DBGKM_EXIT_PROCESS ExitProcess;
3738 DBGKM_LOAD_DLL LoadDll;
3739 DBGKM_UNLOAD_DLL UnloadDll;
3740 } StateInfo;
3741 } DBGUI_WAIT_STATE_CHANGE, *PDBGUI_WAIT_STATE_CHANGE;
3743 struct _DEBUG_EVENT;
3745 #define DEBUG_READ_EVENT 0x0001
3746 #define DEBUG_PROCESS_ASSIGN 0x0002
3747 #define DEBUG_SET_INFORMATION 0x0004
3748 #define DEBUG_QUERY_INFORMATION 0x0008
3749 #define DEBUG_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x0f)
3751 #define DEBUG_KILL_ON_CLOSE 0x1
3753 typedef enum _DEBUGOBJECTINFOCLASS
3755 DebugObjectKillProcessOnExitInformation = 1,
3756 MaxDebugObjectInfoClass
3757 } DEBUGOBJECTINFOCLASS, *PDEBUGOBJECTINFOCLASS;
3760 typedef struct _WOW64_CPURESERVED
3762 USHORT Flags;
3763 USHORT Machine;
3764 /* CONTEXT context */
3765 /* CONTEXT_EX *context_ex */
3766 } WOW64_CPURESERVED, *PWOW64_CPURESERVED;
3768 #define WOW64_CPURESERVED_FLAG_RESET_STATE 1
3770 typedef struct _WOW64_CPU_AREA_INFO
3772 void *Context;
3773 void *ContextEx;
3774 void *ContextFlagsLocation;
3775 WOW64_CPURESERVED *CpuReserved;
3776 ULONG ContextFlag;
3777 USHORT Machine;
3778 } WOW64_CPU_AREA_INFO, *PWOW64_CPU_AREA_INFO;
3780 #ifdef __WINESRC__
3781 /* undocumented layout of LdrSystemDllInitBlock */
3782 /* this varies across Windows version; we are using the win10-2004 layout */
3783 typedef struct
3785 ULONG version;
3786 ULONG unknown1[3];
3787 ULONG64 unknown2;
3788 ULONG64 pLdrInitializeThunk;
3789 ULONG64 pKiUserExceptionDispatcher;
3790 ULONG64 pKiUserApcDispatcher;
3791 ULONG64 pKiUserCallbackDispatcher;
3792 ULONG64 pRtlUserThreadStart;
3793 ULONG64 pRtlpQueryProcessDebugInformationRemote;
3794 ULONG64 ntdll_handle;
3795 ULONG64 pLdrSystemDllInitBlock;
3796 ULONG64 pRtlpFreezeTimeBias;
3797 } SYSTEM_DLL_INIT_BLOCK;
3798 #endif
3800 typedef struct
3802 ULONG_PTR *ServiceTable;
3803 ULONG_PTR *CounterTable;
3804 ULONG_PTR ServiceLimit;
3805 BYTE *ArgumentTable;
3806 } SYSTEM_SERVICE_TABLE;
3808 /***********************************************************************
3809 * Function declarations
3812 NTSYSAPI void WINAPI DbgBreakPoint(void);
3813 NTSYSAPI NTSTATUS WINAPIV DbgPrint(LPCSTR fmt, ...);
3814 NTSYSAPI NTSTATUS WINAPIV DbgPrintEx(ULONG iComponentId, ULONG Level, LPCSTR fmt, ...);
3815 NTSYSAPI NTSTATUS WINAPI DbgUiConnectToDbg(void);
3816 NTSYSAPI NTSTATUS WINAPI DbgUiContinue(CLIENT_ID*,NTSTATUS);
3817 NTSYSAPI NTSTATUS WINAPI DbgUiConvertStateChangeStructure(DBGUI_WAIT_STATE_CHANGE*,struct _DEBUG_EVENT*);
3818 NTSYSAPI NTSTATUS WINAPI DbgUiDebugActiveProcess(HANDLE);
3819 NTSYSAPI HANDLE WINAPI DbgUiGetThreadDebugObject(void);
3820 NTSYSAPI NTSTATUS WINAPI DbgUiIssueRemoteBreakin(HANDLE);
3821 NTSYSAPI void WINAPI DbgUiRemoteBreakin(void*);
3822 NTSYSAPI void WINAPI DbgUiSetThreadDebugObject(HANDLE);
3823 NTSYSAPI NTSTATUS WINAPI DbgUiStopDebugging(HANDLE);
3824 NTSYSAPI NTSTATUS WINAPI DbgUiWaitStateChange(DBGUI_WAIT_STATE_CHANGE*,LARGE_INTEGER*);
3825 NTSYSAPI void WINAPI DbgUserBreakPoint(void);
3826 NTSYSAPI NTSTATUS WINAPI LdrAccessResource(HMODULE,const IMAGE_RESOURCE_DATA_ENTRY*,void**,PULONG);
3827 NTSYSAPI NTSTATUS WINAPI LdrAddDllDirectory(const UNICODE_STRING*,void**);
3828 NTSYSAPI NTSTATUS WINAPI LdrAddRefDll(ULONG,HMODULE);
3829 NTSYSAPI NTSTATUS WINAPI LdrDisableThreadCalloutsForDll(HMODULE);
3830 NTSYSAPI NTSTATUS WINAPI LdrFindEntryForAddress(const void*, PLDR_DATA_TABLE_ENTRY*);
3831 NTSYSAPI NTSTATUS WINAPI LdrFindResourceDirectory_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DIRECTORY**);
3832 NTSYSAPI NTSTATUS WINAPI LdrFindResource_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DATA_ENTRY**);
3833 NTSYSAPI NTSTATUS WINAPI LdrGetDllDirectory(UNICODE_STRING*);
3834 NTSYSAPI NTSTATUS WINAPI LdrGetDllHandle(LPCWSTR, ULONG, const UNICODE_STRING*, HMODULE*);
3835 NTSYSAPI NTSTATUS WINAPI LdrGetDllHandleEx(ULONG, LPCWSTR, ULONG *, const UNICODE_STRING*, HMODULE*);
3836 NTSYSAPI NTSTATUS WINAPI LdrGetDllPath(PCWSTR,ULONG,PWSTR*,PWSTR*);
3837 NTSYSAPI NTSTATUS WINAPI LdrGetDllFullName(HMODULE, UNICODE_STRING*);
3838 NTSYSAPI NTSTATUS WINAPI LdrGetProcedureAddress(HMODULE, const ANSI_STRING*, ULONG, void**);
3839 NTSYSAPI NTSTATUS WINAPI LdrLoadDll(LPCWSTR, DWORD, const UNICODE_STRING*, HMODULE*);
3840 NTSYSAPI NTSTATUS WINAPI LdrLockLoaderLock(ULONG,ULONG*,ULONG_PTR*);
3841 IMAGE_BASE_RELOCATION * WINAPI LdrProcessRelocationBlock(void*,UINT,USHORT*,INT_PTR);
3842 NTSYSAPI NTSTATUS WINAPI LdrQueryImageFileExecutionOptions(const UNICODE_STRING*,LPCWSTR,ULONG,void*,ULONG,ULONG*);
3843 NTSYSAPI NTSTATUS WINAPI LdrQueryProcessModuleInformation(RTL_PROCESS_MODULES*, ULONG, ULONG*);
3844 NTSYSAPI NTSTATUS WINAPI LdrRegisterDllNotification(ULONG,PLDR_DLL_NOTIFICATION_FUNCTION,void*,void**);
3845 NTSYSAPI NTSTATUS WINAPI LdrRemoveDllDirectory(void*);
3846 NTSYSAPI NTSTATUS WINAPI LdrSetDefaultDllDirectories(ULONG);
3847 NTSYSAPI NTSTATUS WINAPI LdrSetDllDirectory(const UNICODE_STRING*);
3848 NTSYSAPI void WINAPI LdrShutdownProcess(void);
3849 NTSYSAPI void WINAPI LdrShutdownThread(void);
3850 NTSYSAPI NTSTATUS WINAPI LdrUnloadDll(HMODULE);
3851 NTSYSAPI NTSTATUS WINAPI LdrUnlockLoaderLock(ULONG,ULONG_PTR);
3852 NTSYSAPI NTSTATUS WINAPI LdrUnregisterDllNotification(void*);
3853 NTSYSAPI NTSTATUS WINAPI NtAcceptConnectPort(PHANDLE,ULONG,PLPC_MESSAGE,BOOLEAN,PLPC_SECTION_WRITE,PLPC_SECTION_READ);
3854 NTSYSAPI NTSTATUS WINAPI NtAccessCheck(PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,PGENERIC_MAPPING,PPRIVILEGE_SET,PULONG,PULONG,NTSTATUS*);
3855 NTSYSAPI NTSTATUS WINAPI NtAccessCheckAndAuditAlarm(PUNICODE_STRING,HANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,ACCESS_MASK,PGENERIC_MAPPING,BOOLEAN,PACCESS_MASK,PBOOLEAN,PBOOLEAN);
3856 NTSYSAPI NTSTATUS WINAPI NtAddAtom(const WCHAR*,ULONG,RTL_ATOM*);
3857 NTSYSAPI NTSTATUS WINAPI NtAdjustGroupsToken(HANDLE,BOOLEAN,PTOKEN_GROUPS,ULONG,PTOKEN_GROUPS,PULONG);
3858 NTSYSAPI NTSTATUS WINAPI NtAdjustPrivilegesToken(HANDLE,BOOLEAN,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD);
3859 NTSYSAPI NTSTATUS WINAPI NtAlertResumeThread(HANDLE,PULONG);
3860 NTSYSAPI NTSTATUS WINAPI NtAlertThread(HANDLE ThreadHandle);
3861 NTSYSAPI NTSTATUS WINAPI NtAllocateLocallyUniqueId(PLUID lpLuid);
3862 NTSYSAPI NTSTATUS WINAPI NtAllocateUuids(PULARGE_INTEGER,PULONG,PULONG,PUCHAR);
3863 NTSYSAPI NTSTATUS WINAPI NtAllocateVirtualMemory(HANDLE,PVOID*,ULONG_PTR,SIZE_T*,ULONG,ULONG);
3864 NTSYSAPI NTSTATUS WINAPI NtAllocateVirtualMemoryEx(HANDLE,PVOID*,SIZE_T*,ULONG,ULONG,MEM_EXTENDED_PARAMETER*,ULONG);
3865 NTSYSAPI NTSTATUS WINAPI NtAreMappedFilesTheSame(PVOID,PVOID);
3866 NTSYSAPI NTSTATUS WINAPI NtAssignProcessToJobObject(HANDLE,HANDLE);
3867 NTSYSAPI NTSTATUS WINAPI NtCallbackReturn(PVOID,ULONG,NTSTATUS);
3868 NTSYSAPI NTSTATUS WINAPI NtCancelIoFile(HANDLE,PIO_STATUS_BLOCK);
3869 NTSYSAPI NTSTATUS WINAPI NtCancelIoFileEx(HANDLE,PIO_STATUS_BLOCK,PIO_STATUS_BLOCK);
3870 NTSYSAPI NTSTATUS WINAPI NtCancelTimer(HANDLE, BOOLEAN*);
3871 NTSYSAPI NTSTATUS WINAPI NtClearEvent(HANDLE);
3872 NTSYSAPI NTSTATUS WINAPI NtClose(HANDLE);
3873 NTSYSAPI NTSTATUS WINAPI NtCloseObjectAuditAlarm(PUNICODE_STRING,HANDLE,BOOLEAN);
3874 NTSYSAPI NTSTATUS WINAPI NtCompleteConnectPort(HANDLE);
3875 NTSYSAPI NTSTATUS WINAPI NtConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
3876 NTSYSAPI NTSTATUS WINAPI NtContinue(PCONTEXT,BOOLEAN);
3877 NTSYSAPI NTSTATUS WINAPI NtCreateDebugObject(HANDLE*,ACCESS_MASK,OBJECT_ATTRIBUTES*,ULONG);
3878 NTSYSAPI NTSTATUS WINAPI NtCreateDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
3879 NTSYSAPI NTSTATUS WINAPI NtCreateEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *,EVENT_TYPE,BOOLEAN);
3880 NTSYSAPI NTSTATUS WINAPI NtCreateEventPair(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
3881 NTSYSAPI NTSTATUS WINAPI NtCreateFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,PLARGE_INTEGER,ULONG,ULONG,ULONG,ULONG,PVOID,ULONG);
3882 NTSYSAPI NTSTATUS WINAPI NtCreateIoCompletion(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,ULONG);
3883 NTSYSAPI NTSTATUS WINAPI NtCreateJobObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3884 NTSYSAPI NTSTATUS WINAPI NtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
3885 NTSYSAPI NTSTATUS WINAPI NtCreateKeyTransacted(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,HANDLE,ULONG*);
3886 NTSYSAPI NTSTATUS WINAPI NtCreateKeyedEvent(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG);
3887 NTSYSAPI NTSTATUS WINAPI NtCreateLowBoxToken(HANDLE*,HANDLE,ACCESS_MASK,OBJECT_ATTRIBUTES*,SID*,ULONG,SID_AND_ATTRIBUTES*,ULONG,HANDLE*);
3888 NTSYSAPI NTSTATUS WINAPI NtCreateMailslotFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,PLARGE_INTEGER);
3889 NTSYSAPI NTSTATUS WINAPI NtCreateMutant(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,BOOLEAN);
3890 NTSYSAPI NTSTATUS WINAPI NtCreateNamedPipeFile(PHANDLE,ULONG,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,PLARGE_INTEGER);
3891 NTSYSAPI NTSTATUS WINAPI NtCreatePagingFile(PUNICODE_STRING,PLARGE_INTEGER,PLARGE_INTEGER,PLARGE_INTEGER);
3892 NTSYSAPI NTSTATUS WINAPI NtCreatePort(PHANDLE,POBJECT_ATTRIBUTES,ULONG,ULONG,PULONG);
3893 NTSYSAPI NTSTATUS WINAPI NtCreateProcess(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,HANDLE,BOOLEAN,HANDLE,HANDLE,HANDLE);
3894 NTSYSAPI NTSTATUS WINAPI NtCreateProfile(PHANDLE,HANDLE,PVOID,ULONG,ULONG,PVOID,ULONG,KPROFILE_SOURCE,KAFFINITY);
3895 NTSYSAPI NTSTATUS WINAPI NtCreateSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const LARGE_INTEGER*,ULONG,ULONG,HANDLE);
3896 NTSYSAPI NTSTATUS WINAPI NtCreateSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,LONG,LONG);
3897 NTSYSAPI NTSTATUS WINAPI NtCreateSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PUNICODE_STRING);
3898 NTSYSAPI NTSTATUS WINAPI NtCreateThread(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,HANDLE,PCLIENT_ID,PCONTEXT,PINITIAL_TEB,BOOLEAN);
3899 NTSYSAPI NTSTATUS WINAPI NtCreateThreadEx(HANDLE*,ACCESS_MASK,OBJECT_ATTRIBUTES*,HANDLE,PRTL_THREAD_START_ROUTINE,void*,ULONG,ULONG_PTR,SIZE_T,SIZE_T,PS_ATTRIBUTE_LIST*);
3900 NTSYSAPI NTSTATUS WINAPI NtCreateTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*, TIMER_TYPE);
3901 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);
3902 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*);
3903 NTSYSAPI NTSTATUS WINAPI NtDebugActiveProcess(HANDLE,HANDLE);
3904 NTSYSAPI NTSTATUS WINAPI NtDebugContinue(HANDLE,CLIENT_ID*,NTSTATUS);
3905 NTSYSAPI NTSTATUS WINAPI NtDelayExecution(BOOLEAN,const LARGE_INTEGER*);
3906 NTSYSAPI NTSTATUS WINAPI NtDeleteAtom(RTL_ATOM);
3907 NTSYSAPI NTSTATUS WINAPI NtDeleteFile(POBJECT_ATTRIBUTES);
3908 NTSYSAPI NTSTATUS WINAPI NtDeleteKey(HANDLE);
3909 NTSYSAPI NTSTATUS WINAPI NtDeleteValueKey(HANDLE,const UNICODE_STRING *);
3910 NTSYSAPI NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
3911 NTSYSAPI NTSTATUS WINAPI NtDisplayString(PUNICODE_STRING);
3912 NTSYSAPI NTSTATUS WINAPI NtDuplicateObject(HANDLE,HANDLE,HANDLE,PHANDLE,ACCESS_MASK,ULONG,ULONG);
3913 NTSYSAPI NTSTATUS WINAPI NtDuplicateToken(HANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,PHANDLE);
3914 NTSYSAPI NTSTATUS WINAPI NtEnumerateKey(HANDLE,ULONG,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
3915 NTSYSAPI NTSTATUS WINAPI NtEnumerateValueKey(HANDLE,ULONG,KEY_VALUE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
3916 NTSYSAPI NTSTATUS WINAPI NtExtendSection(HANDLE,PLARGE_INTEGER);
3917 NTSYSAPI NTSTATUS WINAPI NtFilterToken(HANDLE,ULONG,TOKEN_GROUPS*,TOKEN_PRIVILEGES*,TOKEN_GROUPS*,HANDLE*);
3918 NTSYSAPI NTSTATUS WINAPI NtFindAtom(const WCHAR*,ULONG,RTL_ATOM*);
3919 NTSYSAPI NTSTATUS WINAPI NtFlushBuffersFile(HANDLE,IO_STATUS_BLOCK*);
3920 NTSYSAPI NTSTATUS WINAPI NtFlushInstructionCache(HANDLE,LPCVOID,SIZE_T);
3921 NTSYSAPI NTSTATUS WINAPI NtFlushKey(HANDLE);
3922 NTSYSAPI void WINAPI NtFlushProcessWriteBuffers(void);
3923 NTSYSAPI NTSTATUS WINAPI NtFlushVirtualMemory(HANDLE,LPCVOID*,SIZE_T*,ULONG);
3924 NTSYSAPI NTSTATUS WINAPI NtFlushWriteBuffer(VOID);
3925 NTSYSAPI NTSTATUS WINAPI NtFreeVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
3926 NTSYSAPI NTSTATUS WINAPI NtFsControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
3927 NTSYSAPI NTSTATUS WINAPI NtGetContextThread(HANDLE,CONTEXT*);
3928 NTSYSAPI ULONG WINAPI NtGetCurrentProcessorNumber(void);
3929 NTSYSAPI NTSTATUS WINAPI NtGetNextThread(HANDLE,HANDLE,ACCESS_MASK,ULONG,ULONG,HANDLE*);
3930 NTSYSAPI NTSTATUS WINAPI NtGetNlsSectionPtr(ULONG,ULONG,void*,void**,SIZE_T*);
3931 NTSYSAPI NTSTATUS WINAPI NtGetPlugPlayEvent(ULONG,ULONG,PVOID,ULONG);
3932 NTSYSAPI ULONG WINAPI NtGetTickCount(VOID);
3933 NTSYSAPI NTSTATUS WINAPI NtGetWriteWatch(HANDLE,ULONG,PVOID,SIZE_T,PVOID*,ULONG_PTR*,ULONG*);
3934 NTSYSAPI NTSTATUS WINAPI NtImpersonateAnonymousToken(HANDLE);
3935 NTSYSAPI NTSTATUS WINAPI NtImpersonateClientOfPort(HANDLE,PPORT_MESSAGE);
3936 NTSYSAPI NTSTATUS WINAPI NtImpersonateThread(HANDLE,HANDLE,PSECURITY_QUALITY_OF_SERVICE);
3937 NTSYSAPI NTSTATUS WINAPI NtInitializeRegistry(BOOLEAN);
3938 NTSYSAPI NTSTATUS WINAPI NtInitiatePowerAction(POWER_ACTION,SYSTEM_POWER_STATE,ULONG,BOOLEAN);
3939 NTSYSAPI NTSTATUS WINAPI NtIsProcessInJob(HANDLE,HANDLE);
3940 NTSYSAPI NTSTATUS WINAPI NtListenPort(HANDLE,PLPC_MESSAGE);
3941 NTSYSAPI NTSTATUS WINAPI NtLoadDriver(const UNICODE_STRING *);
3942 NTSYSAPI NTSTATUS WINAPI NtLoadKey(const OBJECT_ATTRIBUTES *,OBJECT_ATTRIBUTES *);
3943 NTSYSAPI NTSTATUS WINAPI NtLoadKey2(const OBJECT_ATTRIBUTES *,OBJECT_ATTRIBUTES *,ULONG);
3944 NTSYSAPI NTSTATUS WINAPI NtLockFile(HANDLE,HANDLE,PIO_APC_ROUTINE,void*,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,ULONG*,BOOLEAN,BOOLEAN);
3945 NTSYSAPI NTSTATUS WINAPI NtLockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
3946 NTSYSAPI NTSTATUS WINAPI NtMakeTemporaryObject(HANDLE);
3947 NTSYSAPI NTSTATUS WINAPI NtMapViewOfSection(HANDLE,HANDLE,PVOID*,ULONG_PTR,SIZE_T,const LARGE_INTEGER*,SIZE_T*,SECTION_INHERIT,ULONG,ULONG);
3948 NTSYSAPI NTSTATUS WINAPI NtNotifyChangeDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,ULONG,BOOLEAN);
3949 NTSYSAPI NTSTATUS WINAPI NtNotifyChangeKey(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN);
3950 NTSYSAPI NTSTATUS WINAPI NtNotifyChangeMultipleKeys(HANDLE,ULONG,OBJECT_ATTRIBUTES*,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN);
3951 NTSYSAPI NTSTATUS WINAPI NtOpenDirectoryObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3952 NTSYSAPI NTSTATUS WINAPI NtOpenEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
3953 NTSYSAPI NTSTATUS WINAPI NtOpenEventPair(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3954 NTSYSAPI NTSTATUS WINAPI NtOpenFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG);
3955 NTSYSAPI NTSTATUS WINAPI NtOpenIoCompletion(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3956 NTSYSAPI NTSTATUS WINAPI NtOpenJobObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3957 NTSYSAPI NTSTATUS WINAPI NtOpenKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
3958 NTSYSAPI NTSTATUS WINAPI NtOpenKeyEx(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG);
3959 NTSYSAPI NTSTATUS WINAPI NtOpenKeyTransacted(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,HANDLE);
3960 NTSYSAPI NTSTATUS WINAPI NtOpenKeyTransactedEx(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,HANDLE);
3961 NTSYSAPI NTSTATUS WINAPI NtOpenKeyedEvent(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3962 NTSYSAPI NTSTATUS WINAPI NtOpenMutant(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3963 NTSYSAPI NTSTATUS WINAPI NtOpenObjectAuditAlarm(PUNICODE_STRING,PHANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,ACCESS_MASK,PPRIVILEGE_SET,BOOLEAN,BOOLEAN,PBOOLEAN);
3964 NTSYSAPI NTSTATUS WINAPI NtOpenProcess(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
3965 NTSYSAPI NTSTATUS WINAPI NtOpenProcessToken(HANDLE,DWORD,HANDLE *);
3966 NTSYSAPI NTSTATUS WINAPI NtOpenProcessTokenEx(HANDLE,DWORD,DWORD,HANDLE *);
3967 NTSYSAPI NTSTATUS WINAPI NtOpenSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3968 NTSYSAPI NTSTATUS WINAPI NtOpenSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3969 NTSYSAPI NTSTATUS WINAPI NtOpenSymbolicLinkObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3970 NTSYSAPI NTSTATUS WINAPI NtOpenThread(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
3971 NTSYSAPI NTSTATUS WINAPI NtOpenThreadToken(HANDLE,DWORD,BOOLEAN,HANDLE *);
3972 NTSYSAPI NTSTATUS WINAPI NtOpenThreadTokenEx(HANDLE,DWORD,BOOLEAN,DWORD,HANDLE *);
3973 NTSYSAPI NTSTATUS WINAPI NtOpenTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*);
3974 NTSYSAPI NTSTATUS WINAPI NtPowerInformation(POWER_INFORMATION_LEVEL,PVOID,ULONG,PVOID,ULONG);
3975 NTSYSAPI NTSTATUS WINAPI NtPrivilegeCheck(HANDLE,PPRIVILEGE_SET,PBOOLEAN);
3976 NTSYSAPI NTSTATUS WINAPI NtPrivilegeObjectAuditAlarm(PUNICODE_STRING,HANDLE,HANDLE,ULONG,PPRIVILEGE_SET,BOOLEAN);
3977 NTSYSAPI NTSTATUS WINAPI NtPrivilegedServiceAuditAlarm(PUNICODE_STRING,PUNICODE_STRING,HANDLE,PPRIVILEGE_SET,BOOLEAN);
3978 NTSYSAPI NTSTATUS WINAPI NtProtectVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG,ULONG*);
3979 NTSYSAPI NTSTATUS WINAPI NtPulseEvent(HANDLE,LONG*);
3980 NTSYSAPI NTSTATUS WINAPI NtQueueApcThread(HANDLE,PNTAPCFUNC,ULONG_PTR,ULONG_PTR,ULONG_PTR);
3981 NTSYSAPI NTSTATUS WINAPI NtQueryAttributesFile(const OBJECT_ATTRIBUTES*,FILE_BASIC_INFORMATION*);
3982 NTSYSAPI NTSTATUS WINAPI NtQueryDefaultLocale(BOOLEAN,LCID*);
3983 NTSYSAPI NTSTATUS WINAPI NtQueryDefaultUILanguage(LANGID*);
3984 NTSYSAPI NTSTATUS WINAPI NtQueryDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS,BOOLEAN,PUNICODE_STRING,BOOLEAN);
3985 NTSYSAPI NTSTATUS WINAPI NtQueryDirectoryObject(HANDLE,PDIRECTORY_BASIC_INFORMATION,ULONG,BOOLEAN,BOOLEAN,PULONG,PULONG);
3986 NTSYSAPI NTSTATUS WINAPI NtQueryEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,BOOLEAN,PVOID,ULONG,PULONG,BOOLEAN);
3987 NTSYSAPI NTSTATUS WINAPI NtQueryEvent(HANDLE,EVENT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
3988 NTSYSAPI NTSTATUS WINAPI NtQueryFullAttributesFile(const OBJECT_ATTRIBUTES*,FILE_NETWORK_OPEN_INFORMATION*);
3989 NTSYSAPI NTSTATUS WINAPI NtQueryInformationAtom(RTL_ATOM,ATOM_INFORMATION_CLASS,PVOID,ULONG,ULONG*);
3990 NTSYSAPI NTSTATUS WINAPI NtQueryInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,LONG,FILE_INFORMATION_CLASS);
3991 NTSYSAPI NTSTATUS WINAPI NtQueryInformationJobObject(HANDLE,JOBOBJECTINFOCLASS,PVOID,ULONG,PULONG);
3992 NTSYSAPI NTSTATUS WINAPI NtQueryInformationPort(HANDLE,PORT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
3993 NTSYSAPI NTSTATUS WINAPI NtQueryInformationProcess(HANDLE,PROCESSINFOCLASS,PVOID,ULONG,PULONG);
3994 NTSYSAPI NTSTATUS WINAPI NtQueryInformationThread(HANDLE,THREADINFOCLASS,PVOID,ULONG,PULONG);
3995 NTSYSAPI NTSTATUS WINAPI NtQueryInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG,PULONG);
3996 NTSYSAPI NTSTATUS WINAPI NtQueryInstallUILanguage(LANGID*);
3997 NTSYSAPI NTSTATUS WINAPI NtQueryIntervalProfile(KPROFILE_SOURCE,PULONG);
3998 NTSYSAPI NTSTATUS WINAPI NtQueryIoCompletion(HANDLE,IO_COMPLETION_INFORMATION_CLASS,PVOID,ULONG,PULONG);
3999 NTSYSAPI NTSTATUS WINAPI NtQueryKey(HANDLE,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
4000 NTSYSAPI NTSTATUS WINAPI NtQueryMultipleValueKey(HANDLE,PKEY_MULTIPLE_VALUE_INFORMATION,ULONG,PVOID,ULONG,PULONG);
4001 NTSYSAPI NTSTATUS WINAPI NtQueryMutant(HANDLE,MUTANT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
4002 NTSYSAPI NTSTATUS WINAPI NtQueryObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG, PULONG);
4003 NTSYSAPI NTSTATUS WINAPI NtQueryOpenSubKeys(POBJECT_ATTRIBUTES,PULONG);
4004 NTSYSAPI NTSTATUS WINAPI NtQueryPerformanceCounter(PLARGE_INTEGER, PLARGE_INTEGER);
4005 NTSYSAPI NTSTATUS WINAPI NtQuerySecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,ULONG,PULONG);
4006 NTSYSAPI NTSTATUS WINAPI NtQuerySection(HANDLE,SECTION_INFORMATION_CLASS,PVOID,SIZE_T,SIZE_T*);
4007 NTSYSAPI NTSTATUS WINAPI NtQuerySemaphore(HANDLE,SEMAPHORE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
4008 NTSYSAPI NTSTATUS WINAPI NtQuerySymbolicLinkObject(HANDLE,PUNICODE_STRING,PULONG);
4009 NTSYSAPI NTSTATUS WINAPI NtQuerySystemEnvironmentValue(PUNICODE_STRING,PWCHAR,ULONG,PULONG);
4010 NTSYSAPI NTSTATUS WINAPI NtQuerySystemEnvironmentValueEx(PUNICODE_STRING,GUID*,void*,ULONG*,ULONG*);
4011 NTSYSAPI NTSTATUS WINAPI NtQuerySystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG,PULONG);
4012 NTSYSAPI NTSTATUS WINAPI NtQuerySystemInformationEx(SYSTEM_INFORMATION_CLASS,void*,ULONG,void*,ULONG,ULONG*);
4013 NTSYSAPI NTSTATUS WINAPI NtQuerySystemTime(PLARGE_INTEGER);
4014 NTSYSAPI NTSTATUS WINAPI NtQueryTimer(HANDLE,TIMER_INFORMATION_CLASS,PVOID,ULONG,PULONG);
4015 NTSYSAPI NTSTATUS WINAPI NtQueryTimerResolution(PULONG,PULONG,PULONG);
4016 NTSYSAPI NTSTATUS WINAPI NtQueryValueKey(HANDLE,const UNICODE_STRING *,KEY_VALUE_INFORMATION_CLASS,void *,DWORD,DWORD *);
4017 NTSYSAPI NTSTATUS WINAPI NtQueryLicenseValue(const UNICODE_STRING *,ULONG *,PVOID,ULONG,ULONG *);
4018 NTSYSAPI NTSTATUS WINAPI NtQueryVirtualMemory(HANDLE,LPCVOID,MEMORY_INFORMATION_CLASS,PVOID,SIZE_T,SIZE_T*);
4019 NTSYSAPI NTSTATUS WINAPI NtQueryVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
4020 NTSYSAPI NTSTATUS WINAPI NtRaiseException(PEXCEPTION_RECORD,PCONTEXT,BOOL);
4021 NTSYSAPI NTSTATUS WINAPI NtRaiseHardError(NTSTATUS,ULONG,PUNICODE_STRING,PVOID*,HARDERROR_RESPONSE_OPTION,PHARDERROR_RESPONSE);
4022 NTSYSAPI NTSTATUS WINAPI NtReadFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,PLARGE_INTEGER,PULONG);
4023 NTSYSAPI NTSTATUS WINAPI NtReadFileScatter(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,FILE_SEGMENT_ELEMENT*,ULONG,PLARGE_INTEGER,PULONG);
4024 NTSYSAPI NTSTATUS WINAPI NtReadRequestData(HANDLE,PLPC_MESSAGE,ULONG,PVOID,ULONG,PULONG);
4025 NTSYSAPI NTSTATUS WINAPI NtReadVirtualMemory(HANDLE,const void*,void*,SIZE_T,SIZE_T*);
4026 NTSYSAPI NTSTATUS WINAPI NtRegisterThreadTerminatePort(HANDLE);
4027 NTSYSAPI NTSTATUS WINAPI NtReleaseKeyedEvent(HANDLE,const void*,BOOLEAN,const LARGE_INTEGER*);
4028 NTSYSAPI NTSTATUS WINAPI NtReleaseMutant(HANDLE,PLONG);
4029 NTSYSAPI NTSTATUS WINAPI NtReleaseSemaphore(HANDLE,ULONG,PULONG);
4030 NTSYSAPI NTSTATUS WINAPI NtRemoveIoCompletion(HANDLE,PULONG_PTR,PULONG_PTR,PIO_STATUS_BLOCK,PLARGE_INTEGER);
4031 NTSYSAPI NTSTATUS WINAPI NtRemoveIoCompletionEx(HANDLE,FILE_IO_COMPLETION_INFORMATION*,ULONG,ULONG*,LARGE_INTEGER*,BOOLEAN);
4032 NTSYSAPI NTSTATUS WINAPI NtRemoveProcessDebug(HANDLE,HANDLE);
4033 NTSYSAPI NTSTATUS WINAPI NtRenameKey(HANDLE,UNICODE_STRING*);
4034 NTSYSAPI NTSTATUS WINAPI NtReplaceKey(POBJECT_ATTRIBUTES,HANDLE,POBJECT_ATTRIBUTES);
4035 NTSYSAPI NTSTATUS WINAPI NtReplyPort(HANDLE,PLPC_MESSAGE);
4036 NTSYSAPI NTSTATUS WINAPI NtReplyWaitReceivePort(HANDLE,PULONG,PLPC_MESSAGE,PLPC_MESSAGE);
4037 NTSYSAPI NTSTATUS WINAPI NtReplyWaitReceivePortEx(HANDLE,PVOID*,PPORT_MESSAGE,PPORT_MESSAGE,PLARGE_INTEGER);
4038 NTSYSAPI NTSTATUS WINAPI NtReplyWaitReplyPort(HANDLE,PLPC_MESSAGE);
4039 NTSYSAPI NTSTATUS WINAPI NtRequestPort(HANDLE,PLPC_MESSAGE);
4040 NTSYSAPI NTSTATUS WINAPI NtRequestWaitReplyPort(HANDLE,PLPC_MESSAGE,PLPC_MESSAGE);
4041 NTSYSAPI NTSTATUS WINAPI NtResetEvent(HANDLE,LONG*);
4042 NTSYSAPI NTSTATUS WINAPI NtResetWriteWatch(HANDLE,PVOID,SIZE_T);
4043 NTSYSAPI NTSTATUS WINAPI NtRestoreKey(HANDLE,HANDLE,ULONG);
4044 NTSYSAPI NTSTATUS WINAPI NtResumeProcess(HANDLE);
4045 NTSYSAPI NTSTATUS WINAPI NtResumeThread(HANDLE,PULONG);
4046 NTSYSAPI NTSTATUS WINAPI NtSaveKey(HANDLE,HANDLE);
4047 NTSYSAPI NTSTATUS WINAPI NtSecureConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PSID,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
4048 NTSYSAPI NTSTATUS WINAPI NtSetContextThread(HANDLE,const CONTEXT*);
4049 NTSYSAPI NTSTATUS WINAPI NtSetDefaultHardErrorPort(HANDLE);
4050 NTSYSAPI NTSTATUS WINAPI NtSetDefaultLocale(BOOLEAN,LCID);
4051 NTSYSAPI NTSTATUS WINAPI NtSetDefaultUILanguage(LANGID);
4052 NTSYSAPI NTSTATUS WINAPI NtSetEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG);
4053 NTSYSAPI NTSTATUS WINAPI NtSetEvent(HANDLE,LONG*);
4054 NTSYSAPI NTSTATUS WINAPI NtSetHighEventPair(HANDLE);
4055 NTSYSAPI NTSTATUS WINAPI NtSetHighWaitLowEventPair(HANDLE);
4056 NTSYSAPI NTSTATUS WINAPI NtSetHighWaitLowThread(VOID);
4057 NTSYSAPI NTSTATUS WINAPI NtSetInformationDebugObject(HANDLE,DEBUGOBJECTINFOCLASS,PVOID,ULONG,ULONG*);
4058 NTSYSAPI NTSTATUS WINAPI NtSetInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS);
4059 NTSYSAPI NTSTATUS WINAPI NtSetInformationJobObject(HANDLE,JOBOBJECTINFOCLASS,PVOID,ULONG);
4060 NTSYSAPI NTSTATUS WINAPI NtSetInformationKey(HANDLE,const int,PVOID,ULONG);
4061 NTSYSAPI NTSTATUS WINAPI NtSetInformationObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG);
4062 NTSYSAPI NTSTATUS WINAPI NtSetInformationProcess(HANDLE,PROCESS_INFORMATION_CLASS,PVOID,ULONG);
4063 NTSYSAPI NTSTATUS WINAPI NtSetInformationThread(HANDLE,THREADINFOCLASS,LPCVOID,ULONG);
4064 NTSYSAPI NTSTATUS WINAPI NtSetInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG);
4065 NTSYSAPI NTSTATUS WINAPI NtSetIntervalProfile(ULONG,KPROFILE_SOURCE);
4066 NTSYSAPI NTSTATUS WINAPI NtSetIoCompletion(HANDLE,ULONG_PTR,ULONG_PTR,NTSTATUS,SIZE_T);
4067 NTSYSAPI NTSTATUS WINAPI NtSetLdtEntries(ULONG,LDT_ENTRY,ULONG,LDT_ENTRY);
4068 NTSYSAPI NTSTATUS WINAPI NtSetLowEventPair(HANDLE);
4069 NTSYSAPI NTSTATUS WINAPI NtSetLowWaitHighEventPair(HANDLE);
4070 NTSYSAPI NTSTATUS WINAPI NtSetLowWaitHighThread(VOID);
4071 NTSYSAPI NTSTATUS WINAPI NtSetSecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
4072 NTSYSAPI NTSTATUS WINAPI NtSetSystemEnvironmentValue(PUNICODE_STRING,PUNICODE_STRING);
4073 NTSYSAPI NTSTATUS WINAPI NtSetSystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG);
4074 NTSYSAPI NTSTATUS WINAPI NtSetSystemPowerState(POWER_ACTION,SYSTEM_POWER_STATE,ULONG);
4075 NTSYSAPI NTSTATUS WINAPI NtSetSystemTime(const LARGE_INTEGER*,LARGE_INTEGER*);
4076 NTSYSAPI NTSTATUS WINAPI NtSetThreadExecutionState(EXECUTION_STATE,EXECUTION_STATE*);
4077 NTSYSAPI NTSTATUS WINAPI NtSetTimer(HANDLE, const LARGE_INTEGER*, PTIMER_APC_ROUTINE, PVOID, BOOLEAN, ULONG, BOOLEAN*);
4078 NTSYSAPI NTSTATUS WINAPI NtSetTimerResolution(ULONG,BOOLEAN,PULONG);
4079 NTSYSAPI NTSTATUS WINAPI NtSetValueKey(HANDLE,const UNICODE_STRING *,ULONG,ULONG,const void *,ULONG);
4080 NTSYSAPI NTSTATUS WINAPI NtSetVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
4081 NTSYSAPI NTSTATUS WINAPI NtSignalAndWaitForSingleObject(HANDLE,HANDLE,BOOLEAN,const LARGE_INTEGER*);
4082 NTSYSAPI NTSTATUS WINAPI NtShutdownSystem(SHUTDOWN_ACTION);
4083 NTSYSAPI NTSTATUS WINAPI NtStartProfile(HANDLE);
4084 NTSYSAPI NTSTATUS WINAPI NtStopProfile(HANDLE);
4085 NTSYSAPI NTSTATUS WINAPI NtSuspendProcess(HANDLE);
4086 NTSYSAPI NTSTATUS WINAPI NtSuspendThread(HANDLE,PULONG);
4087 NTSYSAPI NTSTATUS WINAPI NtSystemDebugControl(SYSDBG_COMMAND,PVOID,ULONG,PVOID,ULONG,PULONG);
4088 NTSYSAPI NTSTATUS WINAPI NtTerminateJobObject(HANDLE,NTSTATUS);
4089 NTSYSAPI NTSTATUS WINAPI NtTerminateProcess(HANDLE,LONG);
4090 NTSYSAPI NTSTATUS WINAPI NtTerminateThread(HANDLE,LONG);
4091 NTSYSAPI NTSTATUS WINAPI NtTestAlert(VOID);
4092 NTSYSAPI NTSTATUS WINAPI NtTraceControl(ULONG,void*,ULONG,void*,ULONG,ULONG*);
4093 NTSYSAPI NTSTATUS WINAPI NtUnloadDriver(const UNICODE_STRING *);
4094 NTSYSAPI NTSTATUS WINAPI NtUnloadKey(POBJECT_ATTRIBUTES);
4095 NTSYSAPI NTSTATUS WINAPI NtUnloadKeyEx(POBJECT_ATTRIBUTES,HANDLE);
4096 NTSYSAPI NTSTATUS WINAPI NtUnlockFile(HANDLE,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,PULONG);
4097 NTSYSAPI NTSTATUS WINAPI NtUnlockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
4098 NTSYSAPI NTSTATUS WINAPI NtUnmapViewOfSection(HANDLE,PVOID);
4099 NTSYSAPI NTSTATUS WINAPI NtVdmControl(ULONG,PVOID);
4100 NTSYSAPI NTSTATUS WINAPI NtWaitForDebugEvent(HANDLE,BOOLEAN,LARGE_INTEGER*,DBGUI_WAIT_STATE_CHANGE*);
4101 NTSYSAPI NTSTATUS WINAPI NtWaitForKeyedEvent(HANDLE,const void*,BOOLEAN,const LARGE_INTEGER*);
4102 NTSYSAPI NTSTATUS WINAPI NtWaitForSingleObject(HANDLE,BOOLEAN,const LARGE_INTEGER*);
4103 NTSYSAPI NTSTATUS WINAPI NtWaitForMultipleObjects(ULONG,const HANDLE*,BOOLEAN,BOOLEAN,const LARGE_INTEGER*);
4104 NTSYSAPI NTSTATUS WINAPI NtWaitHighEventPair(HANDLE);
4105 NTSYSAPI NTSTATUS WINAPI NtWaitLowEventPair(HANDLE);
4106 NTSYSAPI NTSTATUS WINAPI NtWriteFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,const void*,ULONG,PLARGE_INTEGER,PULONG);
4107 NTSYSAPI NTSTATUS WINAPI NtWriteFileGather(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,FILE_SEGMENT_ELEMENT*,ULONG,PLARGE_INTEGER,PULONG);
4108 NTSYSAPI NTSTATUS WINAPI NtWriteRequestData(HANDLE,PLPC_MESSAGE,ULONG,PVOID,ULONG,PULONG);
4109 NTSYSAPI NTSTATUS WINAPI NtWriteVirtualMemory(HANDLE,void*,const void*,SIZE_T,SIZE_T*);
4110 NTSYSAPI NTSTATUS WINAPI NtYieldExecution(void);
4112 NTSYSAPI NTSTATUS WINAPI RtlAbsoluteToSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PULONG);
4113 NTSYSAPI void WINAPI RtlAcquirePebLock(void);
4114 NTSYSAPI BYTE WINAPI RtlAcquireResourceExclusive(LPRTL_RWLOCK,BYTE);
4115 NTSYSAPI BYTE WINAPI RtlAcquireResourceShared(LPRTL_RWLOCK,BYTE);
4116 NTSYSAPI void WINAPI RtlAcquireSRWLockExclusive(RTL_SRWLOCK*);
4117 NTSYSAPI void WINAPI RtlAcquireSRWLockShared(RTL_SRWLOCK*);
4118 NTSYSAPI NTSTATUS WINAPI RtlActivateActivationContext(DWORD,HANDLE,ULONG_PTR*);
4119 NTSYSAPI NTSTATUS WINAPI RtlActivateActivationContextEx(ULONG,TEB*,HANDLE,ULONG_PTR*);
4120 NTSYSAPI NTSTATUS WINAPI RtlAddAce(PACL,DWORD,DWORD,PACE_HEADER,DWORD);
4121 NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAce(PACL,DWORD,DWORD,PSID);
4122 NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
4123 NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedObjectAce(PACL,DWORD,DWORD,DWORD,GUID*,GUID*,PSID);
4124 NTSYSAPI NTSTATUS WINAPI RtlAddAccessDeniedAce(PACL,DWORD,DWORD,PSID);
4125 NTSYSAPI NTSTATUS WINAPI RtlAddAccessDeniedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
4126 NTSYSAPI NTSTATUS WINAPI RtlAddAccessDeniedObjectAce(PACL,DWORD,DWORD,DWORD,GUID*,GUID*,PSID);
4127 NTSYSAPI NTSTATUS WINAPI RtlAddAtomToAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*);
4128 NTSYSAPI NTSTATUS WINAPI RtlAddAuditAccessAce(PACL,DWORD,DWORD,PSID,BOOL,BOOL);
4129 NTSYSAPI NTSTATUS WINAPI RtlAddAuditAccessAceEx(PACL,DWORD,DWORD,DWORD,PSID,BOOL,BOOL);
4130 NTSYSAPI NTSTATUS WINAPI RtlAddAuditAccessObjectAce(PACL,DWORD,DWORD,DWORD,GUID*,GUID*,PSID,BOOL,BOOL);
4131 NTSYSAPI NTSTATUS WINAPI RtlAddMandatoryAce(PACL,DWORD,DWORD,DWORD,DWORD,PSID);
4132 NTSYSAPI void WINAPI RtlAddRefActivationContext(HANDLE);
4133 NTSYSAPI PVOID WINAPI RtlAddVectoredExceptionHandler(ULONG,PVECTORED_EXCEPTION_HANDLER);
4134 NTSYSAPI NTSTATUS WINAPI RtlAdjustPrivilege(ULONG,BOOLEAN,BOOLEAN,PBOOLEAN);
4135 NTSYSAPI NTSTATUS WINAPI RtlAllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PSID *);
4136 NTSYSAPI RTL_HANDLE * WINAPI RtlAllocateHandle(RTL_HANDLE_TABLE *,ULONG *);
4137 NTSYSAPI PVOID WINAPI RtlAllocateHeap(HANDLE,ULONG,SIZE_T) __WINE_ALLOC_SIZE(3);
4138 NTSYSAPI WCHAR WINAPI RtlAnsiCharToUnicodeChar(LPSTR *);
4139 NTSYSAPI DWORD WINAPI RtlAnsiStringToUnicodeSize(const STRING *);
4140 NTSYSAPI NTSTATUS WINAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING,PCANSI_STRING,BOOLEAN);
4141 NTSYSAPI NTSTATUS WINAPI RtlAppendAsciizToString(STRING *,LPCSTR);
4142 NTSYSAPI NTSTATUS WINAPI RtlAppendStringToString(STRING *,const STRING *);
4143 NTSYSAPI NTSTATUS WINAPI RtlAppendUnicodeStringToString(UNICODE_STRING *,const UNICODE_STRING *);
4144 NTSYSAPI NTSTATUS WINAPI RtlAppendUnicodeToString(UNICODE_STRING *,LPCWSTR);
4145 NTSYSAPI BOOLEAN WINAPI RtlAreAllAccessesGranted(ACCESS_MASK,ACCESS_MASK);
4146 NTSYSAPI BOOLEAN WINAPI RtlAreAnyAccessesGranted(ACCESS_MASK,ACCESS_MASK);
4147 NTSYSAPI BOOLEAN WINAPI RtlAreBitsSet(PCRTL_BITMAP,ULONG,ULONG);
4148 NTSYSAPI BOOLEAN WINAPI RtlAreBitsClear(PCRTL_BITMAP,ULONG,ULONG);
4149 NTSYSAPI NTSTATUS WINAPI RtlCharToInteger(PCSZ,ULONG,PULONG);
4150 NTSYSAPI NTSTATUS WINAPI RtlCheckRegistryKey(ULONG, PWSTR);
4151 NTSYSAPI void WINAPI RtlClearAllBits(PRTL_BITMAP);
4152 NTSYSAPI void WINAPI RtlClearBits(PRTL_BITMAP,ULONG,ULONG);
4153 NTSYSAPI NTSTATUS WINAPI RtlCreateActivationContext(HANDLE*,const void*);
4154 NTSYSAPI PDEBUG_BUFFER WINAPI RtlCreateQueryDebugBuffer(ULONG,BOOLEAN);
4155 NTSYSAPI NTSTATUS WINAPI RtlCreateRegistryKey(ULONG,PWSTR);
4156 NTSYSAPI ULONG WINAPI RtlCompactHeap(HANDLE,ULONG);
4157 NTSYSAPI LONG WINAPI RtlCompareString(const STRING*,const STRING*,BOOLEAN);
4158 NTSYSAPI LONG WINAPI RtlCompareUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
4159 NTSYSAPI LONG WINAPI RtlCompareUnicodeStrings(const WCHAR*,SIZE_T,const WCHAR*,SIZE_T,BOOLEAN);
4160 NTSYSAPI NTSTATUS WINAPI RtlCompressBuffer(USHORT,PUCHAR,ULONG,PUCHAR,ULONG,ULONG,PULONG,PVOID);
4161 NTSYSAPI DWORD WINAPI RtlComputeCrc32(DWORD,const BYTE*,INT);
4162 NTSYSAPI NTSTATUS WINAPI RtlConvertSidToUnicodeString(PUNICODE_STRING,PSID,BOOLEAN);
4163 NTSYSAPI NTSTATUS WINAPI RtlConvertToAutoInheritSecurityObject(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,GUID*,BOOL,PGENERIC_MAPPING);
4164 NTSYSAPI NTSTATUS WINAPI RtlCopyContext(CONTEXT*,DWORD,CONTEXT*);
4165 NTSYSAPI NTSTATUS WINAPI RtlCopyExtendedContext(CONTEXT_EX*,ULONG,CONTEXT_EX*);
4166 NTSYSAPI void WINAPI RtlCopyLuid(PLUID,const LUID*);
4167 NTSYSAPI void WINAPI RtlCopyLuidAndAttributesArray(ULONG,const LUID_AND_ATTRIBUTES*,PLUID_AND_ATTRIBUTES);
4168 NTSYSAPI BOOLEAN WINAPI RtlCopySid(DWORD,PSID,PSID);
4169 NTSYSAPI NTSTATUS WINAPI RtlCopySecurityDescriptor(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR);
4170 NTSYSAPI void WINAPI RtlCopyString(STRING*,const STRING*);
4171 NTSYSAPI void WINAPI RtlCopyUnicodeString(UNICODE_STRING*,const UNICODE_STRING*);
4172 NTSYSAPI NTSTATUS WINAPI RtlCreateAcl(PACL,DWORD,DWORD);
4173 NTSYSAPI NTSTATUS WINAPI RtlCreateAtomTable(ULONG,RTL_ATOM_TABLE*);
4174 NTSYSAPI NTSTATUS WINAPI RtlCreateEnvironment(BOOLEAN, PWSTR*);
4175 NTSYSAPI HANDLE WINAPI RtlCreateHeap(ULONG,PVOID,SIZE_T,SIZE_T,PVOID,PRTL_HEAP_DEFINITION);
4176 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*);
4177 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);
4178 NTSYSAPI NTSTATUS WINAPI RtlCreateSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD);
4179 NTSYSAPI NTSTATUS WINAPI RtlCreateTimerQueue(PHANDLE);
4180 NTSYSAPI NTSTATUS WINAPI RtlCreateTimer(PHANDLE, HANDLE, RTL_WAITORTIMERCALLBACKFUNC, PVOID, DWORD, DWORD, ULONG);
4181 NTSYSAPI BOOLEAN WINAPI RtlCreateUnicodeString(PUNICODE_STRING,LPCWSTR);
4182 NTSYSAPI BOOLEAN WINAPI RtlCreateUnicodeStringFromAsciiz(PUNICODE_STRING,LPCSTR);
4183 NTSYSAPI NTSTATUS WINAPI RtlCreateUserProcess(UNICODE_STRING*,ULONG,RTL_USER_PROCESS_PARAMETERS*,SECURITY_DESCRIPTOR*,SECURITY_DESCRIPTOR*,HANDLE,BOOLEAN,HANDLE,HANDLE,RTL_USER_PROCESS_INFORMATION*);
4184 NTSYSAPI NTSTATUS WINAPI RtlCreateUserThread(HANDLE,SECURITY_DESCRIPTOR*,BOOLEAN,ULONG,SIZE_T,SIZE_T,PRTL_THREAD_START_ROUTINE,void*,HANDLE*,CLIENT_ID*);
4185 NTSYSAPI NTSTATUS WINAPI RtlCreateUserStack(SIZE_T,SIZE_T,ULONG,SIZE_T,SIZE_T,INITIAL_TEB*);
4186 NTSYSAPI NTSTATUS WINAPI RtlCustomCPToUnicodeN(CPTABLEINFO*,WCHAR*,DWORD,DWORD*,const char*,DWORD);
4187 NTSYSAPI void WINAPI RtlDeactivateActivationContext(DWORD,ULONG_PTR);
4188 NTSYSAPI PVOID WINAPI RtlDecodePointer(PVOID);
4189 NTSYSAPI NTSTATUS WINAPI RtlDecompressBuffer(USHORT,PUCHAR,ULONG,PUCHAR,ULONG,PULONG);
4190 NTSYSAPI NTSTATUS WINAPI RtlDecompressFragment(USHORT,PUCHAR,ULONG,PUCHAR,ULONG,ULONG,PULONG,PVOID);
4191 NTSYSAPI NTSTATUS WINAPI RtlDeleteAce(PACL,DWORD);
4192 NTSYSAPI NTSTATUS WINAPI RtlDeleteAtomFromAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
4193 NTSYSAPI NTSTATUS WINAPI RtlDeleteCriticalSection(RTL_CRITICAL_SECTION *);
4194 NTSYSAPI NTSTATUS WINAPI RtlDeleteRegistryValue(ULONG, PCWSTR, PCWSTR);
4195 NTSYSAPI void WINAPI RtlDeleteResource(LPRTL_RWLOCK);
4196 NTSYSAPI NTSTATUS WINAPI RtlDeleteSecurityObject(PSECURITY_DESCRIPTOR*);
4197 NTSYSAPI NTSTATUS WINAPI RtlDeleteTimer(HANDLE, HANDLE, HANDLE);
4198 NTSYSAPI NTSTATUS WINAPI RtlDeleteTimerQueueEx(HANDLE, HANDLE);
4199 NTSYSAPI PRTL_USER_PROCESS_PARAMETERS WINAPI RtlDeNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
4200 NTSYSAPI NTSTATUS WINAPI RtlDeregisterWait(HANDLE);
4201 NTSYSAPI NTSTATUS WINAPI RtlDeregisterWaitEx(HANDLE,HANDLE);
4202 NTSYSAPI NTSTATUS WINAPI RtlDestroyAtomTable(RTL_ATOM_TABLE);
4203 NTSYSAPI NTSTATUS WINAPI RtlDestroyEnvironment(PWSTR);
4204 NTSYSAPI NTSTATUS WINAPI RtlDestroyHandleTable(RTL_HANDLE_TABLE *);
4205 NTSYSAPI HANDLE WINAPI RtlDestroyHeap(HANDLE);
4206 NTSYSAPI void WINAPI RtlDestroyProcessParameters(RTL_USER_PROCESS_PARAMETERS*);
4207 NTSYSAPI NTSTATUS WINAPI RtlDestroyQueryDebugBuffer(PDEBUG_BUFFER);
4208 NTSYSAPI DOS_PATHNAME_TYPE WINAPI RtlDetermineDosPathNameType_U(PCWSTR);
4209 NTSYSAPI BOOLEAN WINAPI RtlDllShutdownInProgress(void);
4210 NTSYSAPI BOOLEAN WINAPI RtlDoesFileExists_U(LPCWSTR);
4211 NTSYSAPI BOOLEAN WINAPI RtlDosPathNameToNtPathName_U(PCWSTR,PUNICODE_STRING,PWSTR*,CURDIR*);
4212 NTSYSAPI NTSTATUS WINAPI RtlDosPathNameToNtPathName_U_WithStatus(PCWSTR,PUNICODE_STRING,PWSTR*,CURDIR*);
4213 NTSYSAPI ULONG WINAPI RtlDosSearchPath_U(LPCWSTR, LPCWSTR, LPCWSTR, ULONG, LPWSTR, LPWSTR*);
4214 NTSYSAPI WCHAR WINAPI RtlDowncaseUnicodeChar(WCHAR);
4215 NTSYSAPI NTSTATUS WINAPI RtlDowncaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
4216 NTSYSAPI void WINAPI RtlDumpResource(LPRTL_RWLOCK);
4217 NTSYSAPI NTSTATUS WINAPI RtlDuplicateUnicodeString(int,const UNICODE_STRING*,UNICODE_STRING*);
4218 NTSYSAPI NTSTATUS WINAPI RtlEmptyAtomTable(RTL_ATOM_TABLE,BOOLEAN);
4219 NTSYSAPI PVOID WINAPI RtlEncodePointer(PVOID);
4220 NTSYSAPI NTSTATUS WINAPI RtlEnterCriticalSection(RTL_CRITICAL_SECTION *);
4221 NTSYSAPI void WINAPI RtlEraseUnicodeString(UNICODE_STRING*);
4222 NTSYSAPI NTSTATUS WINAPI RtlEqualComputerName(const UNICODE_STRING*,const UNICODE_STRING*);
4223 NTSYSAPI NTSTATUS WINAPI RtlEqualDomainName(const UNICODE_STRING*,const UNICODE_STRING*);
4224 NTSYSAPI BOOLEAN WINAPI RtlEqualLuid(const LUID*,const LUID*);
4225 NTSYSAPI BOOL WINAPI RtlEqualPrefixSid(PSID,PSID);
4226 NTSYSAPI BOOL WINAPI RtlEqualSid(PSID,PSID);
4227 NTSYSAPI BOOLEAN WINAPI RtlEqualString(const STRING*,const STRING*,BOOLEAN);
4228 NTSYSAPI BOOLEAN WINAPI RtlEqualUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
4229 NTSYSAPI void DECLSPEC_NORETURN WINAPI RtlExitUserProcess(ULONG);
4230 NTSYSAPI void DECLSPEC_NORETURN WINAPI RtlExitUserThread(ULONG);
4231 NTSYSAPI NTSTATUS WINAPI RtlExpandEnvironmentStrings(const WCHAR*,WCHAR*,SIZE_T,WCHAR*,SIZE_T,SIZE_T*);
4232 NTSYSAPI NTSTATUS WINAPI RtlExpandEnvironmentStrings_U(PCWSTR, const UNICODE_STRING*, UNICODE_STRING*, ULONG*);
4233 NTSYSAPI NTSTATUS WINAPI RtlFindActivationContextSectionString(ULONG,const GUID*,ULONG,const UNICODE_STRING*,PVOID);
4234 NTSYSAPI NTSTATUS WINAPI RtlFindActivationContextSectionGuid(ULONG,const GUID*,ULONG,const GUID*,PVOID);
4235 NTSYSAPI NTSTATUS WINAPI RtlFindCharInUnicodeString(int,const UNICODE_STRING*,const UNICODE_STRING*,USHORT*);
4236 NTSYSAPI ULONG WINAPI RtlFindClearBits(PCRTL_BITMAP,ULONG,ULONG);
4237 NTSYSAPI ULONG WINAPI RtlFindClearBitsAndSet(PRTL_BITMAP,ULONG,ULONG);
4238 NTSYSAPI ULONG WINAPI RtlFindClearRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
4239 NTSYSAPI void * WINAPI RtlFindExportedRoutineByName(HMODULE,const char*);
4240 NTSYSAPI ULONG WINAPI RtlFindLastBackwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
4241 NTSYSAPI ULONG WINAPI RtlFindLastBackwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
4242 NTSYSAPI CCHAR WINAPI RtlFindLeastSignificantBit(ULONGLONG);
4243 NTSYSAPI ULONG WINAPI RtlFindLongestRunSet(PCRTL_BITMAP,PULONG);
4244 NTSYSAPI ULONG WINAPI RtlFindLongestRunClear(PCRTL_BITMAP,PULONG);
4245 NTSYSAPI NTSTATUS WINAPI RtlFindMessage(HMODULE,ULONG,ULONG,ULONG,const MESSAGE_RESOURCE_ENTRY**);
4246 NTSYSAPI CCHAR WINAPI RtlFindMostSignificantBit(ULONGLONG);
4247 NTSYSAPI ULONG WINAPI RtlFindNextForwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
4248 NTSYSAPI ULONG WINAPI RtlFindNextForwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
4249 NTSYSAPI ULONG WINAPI RtlFindSetBits(PCRTL_BITMAP,ULONG,ULONG);
4250 NTSYSAPI ULONG WINAPI RtlFindSetBitsAndClear(PRTL_BITMAP,ULONG,ULONG);
4251 NTSYSAPI ULONG WINAPI RtlFindSetRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
4252 NTSYSAPI BOOLEAN WINAPI RtlFirstFreeAce(PACL,PACE_HEADER *);
4253 NTSYSAPI NTSTATUS WINAPI RtlFlsAlloc(PFLS_CALLBACK_FUNCTION,ULONG *);
4254 NTSYSAPI NTSTATUS WINAPI RtlFlsFree(ULONG);
4255 NTSYSAPI NTSTATUS WINAPI RtlFlsGetValue(ULONG,void **);
4256 NTSYSAPI NTSTATUS WINAPI RtlFlsSetValue(ULONG,void *);
4257 NTSYSAPI NTSTATUS WINAPI RtlFormatCurrentUserKeyPath(PUNICODE_STRING);
4258 NTSYSAPI NTSTATUS WINAPI RtlFormatMessage(LPCWSTR,ULONG,BOOLEAN,BOOLEAN,BOOLEAN,__ms_va_list *,LPWSTR,ULONG,ULONG*);
4259 NTSYSAPI NTSTATUS WINAPI RtlFormatMessageEx(LPCWSTR,ULONG,BOOLEAN,BOOLEAN,BOOLEAN,__ms_va_list *,LPWSTR,ULONG,ULONG*,ULONG);
4260 NTSYSAPI void WINAPI RtlFreeAnsiString(PANSI_STRING);
4261 NTSYSAPI BOOLEAN WINAPI RtlFreeHandle(RTL_HANDLE_TABLE *,RTL_HANDLE *);
4262 NTSYSAPI BOOLEAN WINAPI RtlFreeHeap(HANDLE,ULONG,PVOID);
4263 NTSYSAPI void WINAPI RtlFreeOemString(POEM_STRING);
4264 NTSYSAPI DWORD WINAPI RtlFreeSid(PSID);
4265 NTSYSAPI void WINAPI RtlFreeThreadActivationContextStack(void);
4266 NTSYSAPI void WINAPI RtlFreeUnicodeString(PUNICODE_STRING);
4267 NTSYSAPI void WINAPI RtlFreeUserStack(void*);
4268 NTSYSAPI NTSTATUS WINAPI RtlGetAce(PACL,DWORD,LPVOID *);
4269 NTSYSAPI NTSTATUS WINAPI RtlGetActiveActivationContext(HANDLE*);
4270 NTSYSAPI NTSTATUS WINAPI RtlGetCompressionWorkSpaceSize(USHORT,PULONG,PULONG);
4271 NTSYSAPI NTSTATUS WINAPI RtlGetControlSecurityDescriptor(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL,LPDWORD);
4272 NTSYSAPI ULONG WINAPI RtlGetCurrentDirectory_U(ULONG, LPWSTR);
4273 NTSYSAPI PEB * WINAPI RtlGetCurrentPeb(void);
4274 NTSYSAPI NTSTATUS WINAPI RtlGetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
4275 NTSYSAPI ULONG64 WINAPI RtlGetEnabledExtendedFeatures(ULONG64);
4276 NTSYSAPI NTSTATUS WINAPI RtlGetExePath(PCWSTR,PWSTR*);
4277 NTSYSAPI NTSTATUS WINAPI RtlGetExtendedContextLength(ULONG,ULONG*);
4278 NTSYSAPI NTSTATUS WINAPI RtlGetExtendedContextLength2(ULONG,ULONG*,ULONG64);
4279 NTSYSAPI ULONG64 WINAPI RtlGetExtendedFeaturesMask(CONTEXT_EX*);
4280 NTSYSAPI TEB_ACTIVE_FRAME * WINAPI RtlGetFrame(void);
4281 NTSYSAPI ULONG WINAPI RtlGetFullPathName_U(PCWSTR,ULONG,PWSTR,PWSTR*);
4282 NTSYSAPI NTSTATUS WINAPI RtlGetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
4283 NTSYSAPI NTSTATUS WINAPI RtlGetLastNtStatus(void);
4284 NTSYSAPI DWORD WINAPI RtlGetLastWin32Error(void);
4285 NTSYSAPI DWORD WINAPI RtlGetLongestNtPathLength(void);
4286 NTSYSAPI ULONG WINAPI RtlGetNtGlobalFlags(void);
4287 NTSYSAPI BOOLEAN WINAPI RtlGetNtProductType(LPDWORD);
4288 NTSYSAPI NTSTATUS WINAPI RtlGetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
4289 NTSYSAPI ULONG WINAPI RtlGetProcessHeaps(ULONG,HANDLE*);
4290 NTSYSAPI NTSTATUS WINAPI RtlGetProcessPreferredUILanguages(DWORD,ULONG*,WCHAR*,ULONG*);
4291 NTSYSAPI NTSTATUS WINAPI RtlGetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
4292 NTSYSAPI NTSTATUS WINAPI RtlGetSearchPath(PWSTR*);
4293 NTSYSAPI NTSTATUS WINAPI RtlGetSystemPreferredUILanguages(DWORD,ULONG,ULONG*,WCHAR*,ULONG*);
4294 NTSYSAPI LONGLONG WINAPI RtlGetSystemTimePrecise(void);
4295 NTSYSAPI DWORD WINAPI RtlGetThreadErrorMode(void);
4296 NTSYSAPI NTSTATUS WINAPI RtlGetThreadPreferredUILanguages(DWORD,ULONG*,WCHAR*,ULONG*);
4297 NTSYSAPI NTSTATUS WINAPI RtlGetUserPreferredUILanguages(DWORD,ULONG,ULONG*,WCHAR*,ULONG*);
4298 NTSYSAPI NTSTATUS WINAPI RtlGetVersion(RTL_OSVERSIONINFOEXW*);
4299 NTSYSAPI NTSTATUS WINAPI RtlGUIDFromString(PUNICODE_STRING,GUID*);
4300 NTSYSAPI PSID_IDENTIFIER_AUTHORITY WINAPI RtlIdentifierAuthoritySid(PSID);
4301 NTSYSAPI NTSTATUS WINAPI RtlIdnToAscii(DWORD,const WCHAR*,INT,WCHAR*,INT*);
4302 NTSYSAPI NTSTATUS WINAPI RtlIdnToNameprepUnicode(DWORD,const WCHAR*,INT,WCHAR*,INT*);
4303 NTSYSAPI NTSTATUS WINAPI RtlIdnToUnicode(DWORD,const WCHAR*,INT,WCHAR*,INT*);
4304 NTSYSAPI PVOID WINAPI RtlImageDirectoryEntryToData(HMODULE,BOOL,WORD,ULONG *);
4305 NTSYSAPI PIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE);
4306 NTSYSAPI PIMAGE_SECTION_HEADER WINAPI RtlImageRvaToSection(const IMAGE_NT_HEADERS *,HMODULE,DWORD);
4307 NTSYSAPI PVOID WINAPI RtlImageRvaToVa(const IMAGE_NT_HEADERS *,HMODULE,DWORD,IMAGE_SECTION_HEADER **);
4308 NTSYSAPI NTSTATUS WINAPI RtlImpersonateSelf(SECURITY_IMPERSONATION_LEVEL);
4309 NTSYSAPI void WINAPI RtlInitString(PSTRING,PCSZ);
4310 NTSYSAPI void WINAPI RtlInitAnsiString(PANSI_STRING,PCSZ);
4311 NTSYSAPI NTSTATUS WINAPI RtlInitAnsiStringEx(PANSI_STRING,PCSZ);
4312 NTSYSAPI void WINAPI RtlInitCodePageTable(USHORT*,CPTABLEINFO*);
4313 NTSYSAPI void WINAPI RtlInitNlsTables(USHORT*,USHORT*,USHORT*,NLSTABLEINFO*);
4314 NTSYSAPI void WINAPI RtlInitUnicodeString(PUNICODE_STRING,PCWSTR);
4315 NTSYSAPI NTSTATUS WINAPI RtlInitUnicodeStringEx(PUNICODE_STRING,PCWSTR);
4316 NTSYSAPI void WINAPI RtlInitializeBitMap(PRTL_BITMAP,PULONG,ULONG);
4317 NTSYSAPI void WINAPI RtlInitializeConditionVariable(RTL_CONDITION_VARIABLE *);
4318 NTSYSAPI NTSTATUS WINAPI RtlInitializeCriticalSection(RTL_CRITICAL_SECTION *);
4319 NTSYSAPI NTSTATUS WINAPI RtlInitializeCriticalSectionAndSpinCount(RTL_CRITICAL_SECTION *,ULONG);
4320 NTSYSAPI NTSTATUS WINAPI RtlInitializeCriticalSectionEx(RTL_CRITICAL_SECTION *,ULONG,ULONG);
4321 NTSYSAPI NTSTATUS WINAPI RtlInitializeExtendedContext(void*,ULONG,CONTEXT_EX**);
4322 NTSYSAPI NTSTATUS WINAPI RtlInitializeExtendedContext2(void*,ULONG,CONTEXT_EX**,ULONG64);
4323 NTSYSAPI void WINAPI RtlInitializeHandleTable(ULONG,ULONG,RTL_HANDLE_TABLE *);
4324 NTSYSAPI void WINAPI RtlInitializeResource(LPRTL_RWLOCK);
4325 NTSYSAPI void WINAPI RtlInitializeSRWLock(RTL_SRWLOCK*);
4326 NTSYSAPI BOOL WINAPI RtlInitializeSid(PSID,PSID_IDENTIFIER_AUTHORITY,BYTE);
4327 NTSYSAPI NTSTATUS WINAPI RtlInt64ToUnicodeString(ULONGLONG,ULONG,UNICODE_STRING *);
4328 NTSYSAPI NTSTATUS WINAPI RtlIntegerToChar(ULONG,ULONG,ULONG,PCHAR);
4329 NTSYSAPI NTSTATUS WINAPI RtlIntegerToUnicodeString(ULONG,ULONG,UNICODE_STRING *);
4330 NTSYSAPI BOOLEAN WINAPI RtlIsActivationContextActive(HANDLE);
4331 NTSYSAPI BOOL WINAPI RtlIsCriticalSectionLocked(RTL_CRITICAL_SECTION *);
4332 NTSYSAPI BOOL WINAPI RtlIsCriticalSectionLockedByThread(RTL_CRITICAL_SECTION *);
4333 NTSYSAPI ULONG WINAPI RtlIsDosDeviceName_U(PCWSTR);
4334 NTSYSAPI BOOLEAN WINAPI RtlIsNameLegalDOS8Dot3(const UNICODE_STRING*,POEM_STRING,PBOOLEAN);
4335 NTSYSAPI NTSTATUS WINAPI RtlIsNormalizedString(ULONG,const WCHAR*,INT,BOOLEAN*);
4336 NTSYSAPI BOOLEAN WINAPI RtlIsProcessorFeaturePresent(UINT);
4337 NTSYSAPI BOOLEAN WINAPI RtlIsTextUnicode(LPCVOID,INT,INT *);
4338 NTSYSAPI BOOLEAN WINAPI RtlIsValidHandle(const RTL_HANDLE_TABLE *, const RTL_HANDLE *);
4339 NTSYSAPI BOOLEAN WINAPI RtlIsValidIndexHandle(const RTL_HANDLE_TABLE *, ULONG Index, RTL_HANDLE **);
4340 NTSYSAPI NTSTATUS WINAPI RtlLeaveCriticalSection(RTL_CRITICAL_SECTION *);
4341 NTSYSAPI DWORD WINAPI RtlLengthRequiredSid(DWORD);
4342 NTSYSAPI ULONG WINAPI RtlLengthSecurityDescriptor(PSECURITY_DESCRIPTOR);
4343 NTSYSAPI DWORD WINAPI RtlLengthSid(PSID);
4344 NTSYSAPI NTSTATUS WINAPI RtlLocalTimeToSystemTime(const LARGE_INTEGER*,PLARGE_INTEGER);
4345 NTSYSAPI NTSTATUS WINAPI RtlLocaleNameToLcid(const WCHAR*,LCID*,ULONG);
4346 NTSYSAPI void * WINAPI RtlLocateExtendedFeature(CONTEXT_EX*,ULONG,ULONG*);
4347 NTSYSAPI void * WINAPI RtlLocateExtendedFeature2(CONTEXT_EX*,ULONG,XSTATE_CONFIGURATION*,ULONG*);
4348 NTSYSAPI void * WINAPI RtlLocateLegacyContext(CONTEXT_EX*,ULONG*);
4349 NTSYSAPI BOOLEAN WINAPI RtlLockHeap(HANDLE);
4350 NTSYSAPI NTSTATUS WINAPI RtlLookupAtomInAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*);
4351 NTSYSAPI NTSTATUS WINAPI RtlMakeSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,LPDWORD);
4352 NTSYSAPI void WINAPI RtlMapGenericMask(PACCESS_MASK,const GENERIC_MAPPING*);
4353 NTSYSAPI NTSTATUS WINAPI RtlMultiByteToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
4354 NTSYSAPI NTSTATUS WINAPI RtlMultiByteToUnicodeSize(DWORD*,LPCSTR,UINT);
4355 NTSYSAPI NTSTATUS WINAPI RtlNewSecurityObject(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,BOOLEAN,HANDLE,PGENERIC_MAPPING);
4356 NTSYSAPI PRTL_USER_PROCESS_PARAMETERS WINAPI RtlNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
4357 NTSYSAPI NTSTATUS WINAPI RtlNormalizeString(ULONG,const WCHAR*,INT,WCHAR*,INT*);
4358 NTSYSAPI ULONG WINAPI RtlNtStatusToDosError(NTSTATUS);
4359 NTSYSAPI ULONG WINAPI RtlNtStatusToDosErrorNoTeb(NTSTATUS);
4360 NTSYSAPI ULONG WINAPI RtlNumberOfSetBits(PCRTL_BITMAP);
4361 NTSYSAPI ULONG WINAPI RtlNumberOfClearBits(PCRTL_BITMAP);
4362 NTSYSAPI UINT WINAPI RtlOemStringToUnicodeSize(const STRING*);
4363 NTSYSAPI NTSTATUS WINAPI RtlOemStringToUnicodeString(UNICODE_STRING*,const STRING*,BOOLEAN);
4364 NTSYSAPI NTSTATUS WINAPI RtlOemToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
4365 NTSYSAPI NTSTATUS WINAPI RtlOpenCurrentUser(ACCESS_MASK,PHANDLE);
4366 NTSYSAPI PVOID WINAPI RtlPcToFileHeader(PVOID,PVOID*);
4367 NTSYSAPI NTSTATUS WINAPI RtlPinAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
4368 NTSYSAPI void WINAPI RtlPopFrame(TEB_ACTIVE_FRAME*);
4369 NTSYSAPI BOOLEAN WINAPI RtlPrefixString(const STRING*,const STRING*,BOOLEAN);
4370 NTSYSAPI BOOLEAN WINAPI RtlPrefixUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
4371 NTSYSAPI void WINAPI RtlProcessFlsData(void*,ULONG);
4372 NTSYSAPI void WINAPI RtlPushFrame(TEB_ACTIVE_FRAME*);
4373 NTSYSAPI NTSTATUS WINAPI RtlQueryActivationContextApplicationSettings(DWORD,HANDLE,const WCHAR*,const WCHAR*,WCHAR*,SIZE_T,SIZE_T*);
4374 NTSYSAPI NTSTATUS WINAPI RtlQueryAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM,ULONG*,ULONG*,WCHAR*,ULONG*);
4375 NTSYSAPI NTSTATUS WINAPI RtlQueryDynamicTimeZoneInformation(RTL_DYNAMIC_TIME_ZONE_INFORMATION*);
4376 NTSYSAPI NTSTATUS WINAPI RtlQueryEnvironmentVariable(WCHAR*,const WCHAR*,SIZE_T,WCHAR*,SIZE_T,SIZE_T*);
4377 NTSYSAPI NTSTATUS WINAPI RtlQueryEnvironmentVariable_U(PWSTR,PUNICODE_STRING,PUNICODE_STRING);
4378 NTSYSAPI NTSTATUS WINAPI RtlQueryHeapInformation(HANDLE,HEAP_INFORMATION_CLASS,PVOID,SIZE_T,PSIZE_T);
4379 NTSYSAPI NTSTATUS WINAPI RtlQueryInformationAcl(PACL,LPVOID,DWORD,ACL_INFORMATION_CLASS);
4380 NTSYSAPI NTSTATUS WINAPI RtlQueryInformationActivationContext(ULONG,HANDLE,PVOID,ULONG,PVOID,SIZE_T,SIZE_T*);
4381 NTSYSAPI BOOL WINAPI RtlQueryPerformanceCounter(LARGE_INTEGER*);
4382 NTSYSAPI BOOL WINAPI RtlQueryPerformanceFrequency(LARGE_INTEGER*);
4383 NTSYSAPI NTSTATUS WINAPI RtlQueryProcessDebugInformation(ULONG,ULONG,PDEBUG_BUFFER);
4384 NTSYSAPI NTSTATUS WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID);
4385 NTSYSAPI NTSTATUS WINAPI RtlQueryTimeZoneInformation(RTL_TIME_ZONE_INFORMATION*);
4386 NTSYSAPI BOOL WINAPI RtlQueryUnbiasedInterruptTime(ULONGLONG*);
4387 NTSYSAPI NTSTATUS WINAPI RtlQueueWorkItem(PRTL_WORK_ITEM_ROUTINE,PVOID,ULONG);
4388 NTSYSAPI void WINAPI RtlRaiseException(PEXCEPTION_RECORD);
4389 NTSYSAPI void WINAPI RtlRaiseStatus(NTSTATUS);
4390 NTSYSAPI ULONG WINAPI RtlRandom(PULONG);
4391 NTSYSAPI PVOID WINAPI RtlReAllocateHeap(HANDLE,ULONG,PVOID,SIZE_T);
4392 NTSYSAPI NTSTATUS WINAPI RtlRegisterWait(PHANDLE,HANDLE,RTL_WAITORTIMERCALLBACKFUNC,PVOID,ULONG,ULONG);
4393 NTSYSAPI void WINAPI RtlReleaseActivationContext(HANDLE);
4394 NTSYSAPI void WINAPI RtlReleasePath(PWSTR);
4395 NTSYSAPI void WINAPI RtlReleasePebLock(void);
4396 NTSYSAPI void WINAPI RtlReleaseResource(LPRTL_RWLOCK);
4397 NTSYSAPI void WINAPI RtlReleaseSRWLockExclusive(RTL_SRWLOCK*);
4398 NTSYSAPI void WINAPI RtlReleaseSRWLockShared(RTL_SRWLOCK*);
4399 NTSYSAPI ULONG WINAPI RtlRemoveVectoredExceptionHandler(PVOID);
4400 NTSYSAPI void WINAPI RtlResetRtlTranslations(const NLSTABLEINFO*);
4401 NTSYSAPI void WINAPI RtlRestoreLastWin32Error(DWORD);
4402 NTSYSAPI void WINAPI RtlSecondsSince1970ToTime(DWORD,LARGE_INTEGER *);
4403 NTSYSAPI void WINAPI RtlSecondsSince1980ToTime(DWORD,LARGE_INTEGER *);
4404 NTSYSAPI NTSTATUS WINAPI RtlSelfRelativeToAbsoluteSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PDWORD,PACL,PDWORD,PACL,PDWORD,PSID,PDWORD,PSID,PDWORD);
4405 NTSYSAPI void WINAPI RtlSetAllBits(PRTL_BITMAP);
4406 NTSYSAPI void WINAPI RtlSetBits(PRTL_BITMAP,ULONG,ULONG);
4407 NTSYSAPI ULONG WINAPI RtlSetCriticalSectionSpinCount(RTL_CRITICAL_SECTION*,ULONG);
4408 NTSYSAPI NTSTATUS WINAPI RtlSetControlSecurityDescriptor(PSECURITY_DESCRIPTOR,SECURITY_DESCRIPTOR_CONTROL,SECURITY_DESCRIPTOR_CONTROL);
4409 NTSYSAPI NTSTATUS WINAPI RtlSetCurrentDirectory_U(const UNICODE_STRING*);
4410 NTSYSAPI void WINAPI RtlSetCurrentEnvironment(PWSTR, PWSTR*);
4411 NTSYSAPI NTSTATUS WINAPI RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
4412 NTSYSAPI NTSTATUS WINAPI RtlSetEnvironmentVariable(PWSTR*,PUNICODE_STRING,PUNICODE_STRING);
4413 NTSYSAPI void WINAPI RtlSetExtendedFeaturesMask(CONTEXT_EX*,ULONG64);
4414 NTSYSAPI NTSTATUS WINAPI RtlSetHeapInformation(HANDLE,HEAP_INFORMATION_CLASS,PVOID,SIZE_T);
4415 NTSYSAPI NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
4416 NTSYSAPI NTSTATUS WINAPI RtlSetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
4417 NTSYSAPI NTSTATUS WINAPI RtlSetIoCompletionCallback(HANDLE,PRTL_OVERLAPPED_COMPLETION_ROUTINE,ULONG);
4418 NTSYSAPI void WINAPI RtlSetLastWin32Error(DWORD);
4419 NTSYSAPI void WINAPI RtlSetLastWin32ErrorAndNtStatusFromNtStatus(NTSTATUS);
4420 NTSYSAPI NTSTATUS WINAPI RtlSetProcessPreferredUILanguages(DWORD,PCZZWSTR,ULONG*);
4421 NTSYSAPI NTSTATUS WINAPI RtlSetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
4422 NTSYSAPI NTSTATUS WINAPI RtlSetSearchPathMode(ULONG);
4423 NTSYSAPI NTSTATUS WINAPI RtlSetThreadErrorMode(DWORD,LPDWORD);
4424 NTSYSAPI NTSTATUS WINAPI RtlSetThreadPreferredUILanguages(DWORD,PCZZWSTR,ULONG*);
4425 NTSYSAPI NTSTATUS WINAPI RtlSetTimeZoneInformation(const RTL_TIME_ZONE_INFORMATION*);
4426 NTSYSAPI void WINAPI RtlSetUnhandledExceptionFilter(PRTL_EXCEPTION_FILTER);
4427 NTSYSAPI SIZE_T WINAPI RtlSizeHeap(HANDLE,ULONG,const void*);
4428 NTSYSAPI NTSTATUS WINAPI RtlSleepConditionVariableCS(RTL_CONDITION_VARIABLE*,RTL_CRITICAL_SECTION*,const LARGE_INTEGER*);
4429 NTSYSAPI NTSTATUS WINAPI RtlSleepConditionVariableSRW(RTL_CONDITION_VARIABLE*,RTL_SRWLOCK*,const LARGE_INTEGER*,ULONG);
4430 NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID,PUNICODE_STRING);
4431 NTSYSAPI LPDWORD WINAPI RtlSubAuthoritySid(PSID,DWORD);
4432 NTSYSAPI LPBYTE WINAPI RtlSubAuthorityCountSid(PSID);
4433 NTSYSAPI NTSTATUS WINAPI RtlSystemTimeToLocalTime(const LARGE_INTEGER*,PLARGE_INTEGER);
4434 NTSYSAPI void WINAPI RtlTimeToTimeFields(const LARGE_INTEGER*,PTIME_FIELDS);
4435 NTSYSAPI BOOLEAN WINAPI RtlTimeFieldsToTime(PTIME_FIELDS,PLARGE_INTEGER);
4436 NTSYSAPI void WINAPI RtlTimeToElapsedTimeFields(const LARGE_INTEGER *,PTIME_FIELDS);
4437 NTSYSAPI BOOLEAN WINAPI RtlTimeToSecondsSince1970(const LARGE_INTEGER *,LPDWORD);
4438 NTSYSAPI BOOLEAN WINAPI RtlTimeToSecondsSince1980(const LARGE_INTEGER *,LPDWORD);
4439 NTSYSAPI BOOLEAN WINAPI RtlTryAcquireSRWLockExclusive(RTL_SRWLOCK *);
4440 NTSYSAPI BOOLEAN WINAPI RtlTryAcquireSRWLockShared(RTL_SRWLOCK *);
4441 NTSYSAPI BOOL WINAPI RtlTryEnterCriticalSection(RTL_CRITICAL_SECTION *);
4442 NTSYSAPI NTSTATUS WINAPI RtlUTF8ToUnicodeN(WCHAR*,DWORD,DWORD*,const char*,DWORD);
4443 NTSYSAPI ULONGLONG __cdecl RtlUlonglongByteSwap(ULONGLONG);
4444 NTSYSAPI DWORD WINAPI RtlUnicodeStringToAnsiSize(const UNICODE_STRING*);
4445 NTSYSAPI NTSTATUS WINAPI RtlUnicodeStringToAnsiString(PANSI_STRING,PCUNICODE_STRING,BOOLEAN);
4446 NTSYSAPI NTSTATUS WINAPI RtlUnicodeStringToInteger(const UNICODE_STRING *,ULONG,ULONG *);
4447 NTSYSAPI DWORD WINAPI RtlUnicodeStringToOemSize(const UNICODE_STRING*);
4448 NTSYSAPI NTSTATUS WINAPI RtlUnicodeStringToOemString(POEM_STRING,PCUNICODE_STRING,BOOLEAN);
4449 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToCustomCPN(CPTABLEINFO*,char*,DWORD,DWORD*,const WCHAR*,DWORD);
4450 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
4451 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToMultiByteSize(PULONG,PCWSTR,ULONG);
4452 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
4453 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToUTF8N(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
4454 NTSYSAPI ULONG WINAPI RtlUniform(PULONG);
4455 NTSYSAPI BOOLEAN WINAPI RtlUnlockHeap(HANDLE);
4456 NTSYSAPI void WINAPI RtlUnwind(PVOID,PVOID,PEXCEPTION_RECORD,PVOID);
4457 NTSYSAPI WCHAR WINAPI RtlUpcaseUnicodeChar(WCHAR);
4458 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING *,BOOLEAN);
4459 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToAnsiString(STRING*,const UNICODE_STRING*,BOOLEAN);
4460 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToCountedOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
4461 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
4462 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeToCustomCPN(CPTABLEINFO*,char*,DWORD,DWORD*,const WCHAR*,DWORD);
4463 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
4464 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
4465 NTSYSAPI NTSTATUS WINAPI RtlUpdateTimer(HANDLE, HANDLE, DWORD, DWORD);
4466 NTSYSAPI CHAR WINAPI RtlUpperChar(CHAR);
4467 NTSYSAPI void WINAPI RtlUpperString(STRING *,const STRING *);
4468 NTSYSAPI void WINAPI RtlUserThreadStart(PRTL_THREAD_START_ROUTINE,void*);
4469 NTSYSAPI NTSTATUS WINAPI RtlValidSecurityDescriptor(PSECURITY_DESCRIPTOR);
4470 NTSYSAPI BOOLEAN WINAPI RtlValidRelativeSecurityDescriptor(PSECURITY_DESCRIPTOR,ULONG,SECURITY_INFORMATION);
4471 NTSYSAPI BOOLEAN WINAPI RtlValidAcl(PACL);
4472 NTSYSAPI BOOLEAN WINAPI RtlValidSid(PSID);
4473 NTSYSAPI BOOLEAN WINAPI RtlValidateHeap(HANDLE,ULONG,LPCVOID);
4474 NTSYSAPI NTSTATUS WINAPI RtlVerifyVersionInfo(const RTL_OSVERSIONINFOEXW*,DWORD,DWORDLONG);
4475 NTSYSAPI NTSTATUS WINAPI RtlWaitOnAddress(const void *,const void *,SIZE_T,const LARGE_INTEGER *);
4476 NTSYSAPI void WINAPI RtlWakeAddressAll(const void *);
4477 NTSYSAPI void WINAPI RtlWakeAddressSingle(const void *);
4478 NTSYSAPI void WINAPI RtlWakeAllConditionVariable(RTL_CONDITION_VARIABLE *);
4479 NTSYSAPI void WINAPI RtlWakeConditionVariable(RTL_CONDITION_VARIABLE *);
4480 NTSYSAPI NTSTATUS WINAPI RtlWalkHeap(HANDLE,PVOID);
4481 NTSYSAPI NTSTATUS WINAPI RtlWow64EnableFsRedirection(BOOLEAN);
4482 NTSYSAPI NTSTATUS WINAPI RtlWow64EnableFsRedirectionEx(ULONG,ULONG*);
4483 NTSYSAPI USHORT WINAPI RtlWow64GetCurrentMachine(void);
4484 NTSYSAPI NTSTATUS WINAPI RtlWow64GetProcessMachines(HANDLE,USHORT*,USHORT*);
4485 NTSYSAPI NTSTATUS WINAPI RtlWow64IsWowGuestMachineSupported(USHORT,BOOLEAN*);
4486 NTSYSAPI NTSTATUS WINAPI RtlWriteRegistryValue(ULONG,PCWSTR,PCWSTR,ULONG,PVOID,ULONG);
4487 NTSYSAPI NTSTATUS WINAPI RtlZombifyActivationContext(HANDLE);
4488 NTSYSAPI NTSTATUS WINAPI RtlpNtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
4489 NTSYSAPI NTSTATUS WINAPI RtlpNtEnumerateSubKey(HANDLE,UNICODE_STRING *, ULONG);
4490 NTSYSAPI NTSTATUS WINAPI RtlpWaitForCriticalSection(RTL_CRITICAL_SECTION *);
4491 NTSYSAPI NTSTATUS WINAPI RtlpUnWaitCriticalSection(RTL_CRITICAL_SECTION *);
4492 NTSYSAPI NTSTATUS WINAPI vDbgPrintEx(ULONG,ULONG,LPCSTR,__ms_va_list);
4493 NTSYSAPI NTSTATUS WINAPI vDbgPrintExWithPrefix(LPCSTR,ULONG,ULONG,LPCSTR,__ms_va_list);
4495 #ifndef __WINE_USE_MSVCRT
4496 NTSYSAPI int __cdecl _strnicmp(LPCSTR,LPCSTR,size_t);
4497 #endif
4499 /* 32-bit or 64-bit only functions */
4501 #ifdef _WIN64
4502 NTSYSAPI NTSTATUS WINAPI RtlWow64GetCpuAreaInfo(WOW64_CPURESERVED*,ULONG,WOW64_CPU_AREA_INFO*);
4503 NTSYSAPI NTSTATUS WINAPI RtlWow64GetCurrentCpuArea(USHORT*,void**,void**);
4504 NTSYSAPI NTSTATUS WINAPI RtlWow64GetThreadContext(HANDLE,WOW64_CONTEXT*);
4505 NTSYSAPI NTSTATUS WINAPI RtlWow64GetThreadSelectorEntry(HANDLE,THREAD_DESCRIPTOR_INFORMATION*,ULONG,ULONG*);
4506 NTSYSAPI NTSTATUS WINAPI RtlWow64SetThreadContext(HANDLE,const WOW64_CONTEXT*);
4507 #else
4508 NTSYSAPI NTSTATUS WINAPI NtWow64AllocateVirtualMemory64(HANDLE,ULONG64*,ULONG64,ULONG64*,ULONG,ULONG);
4509 NTSYSAPI NTSTATUS WINAPI NtWow64GetNativeSystemInformation(SYSTEM_INFORMATION_CLASS,void*,ULONG,ULONG*);
4510 NTSYSAPI NTSTATUS WINAPI NtWow64ReadVirtualMemory64(HANDLE,ULONG64,void*,ULONG64,ULONG64*);
4511 NTSYSAPI NTSTATUS WINAPI NtWow64WriteVirtualMemory64(HANDLE,ULONG64,const void*,ULONG64,ULONG64*);
4512 NTSYSAPI LONGLONG WINAPI RtlConvertLongToLargeInteger(LONG);
4513 NTSYSAPI ULONGLONG WINAPI RtlConvertUlongToLargeInteger(ULONG);
4514 NTSYSAPI LONGLONG WINAPI RtlEnlargedIntegerMultiply(INT,INT);
4515 NTSYSAPI ULONGLONG WINAPI RtlEnlargedUnsignedMultiply(UINT,UINT);
4516 NTSYSAPI UINT WINAPI RtlEnlargedUnsignedDivide(ULONGLONG,UINT,UINT *);
4517 NTSYSAPI LONGLONG WINAPI RtlExtendedMagicDivide(LONGLONG,LONGLONG,INT);
4518 NTSYSAPI LONGLONG WINAPI RtlExtendedIntegerMultiply(LONGLONG,INT);
4519 NTSYSAPI LONGLONG WINAPI RtlExtendedLargeIntegerDivide(LONGLONG,INT,INT *);
4520 NTSYSAPI LONGLONG WINAPI RtlInterlockedCompareExchange64(LONGLONG*,LONGLONG,LONGLONG);
4521 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerAdd(LONGLONG,LONGLONG);
4522 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerArithmeticShift(LONGLONG,INT);
4523 NTSYSAPI ULONGLONG WINAPI RtlLargeIntegerDivide( ULONGLONG,ULONGLONG,ULONGLONG *);
4524 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerNegate(LONGLONG);
4525 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerShiftLeft(LONGLONG,INT);
4526 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerShiftRight(LONGLONG,INT);
4527 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerSubtract(LONGLONG,LONGLONG);
4528 NTSYSAPI NTSTATUS WINAPI RtlLargeIntegerToChar(const ULONGLONG *,ULONG,ULONG,PCHAR);
4529 #endif
4531 /* Threadpool functions */
4533 NTSYSAPI NTSTATUS WINAPI TpAllocCleanupGroup(TP_CLEANUP_GROUP **);
4534 NTSYSAPI NTSTATUS WINAPI TpAllocIoCompletion(TP_IO **,HANDLE,PTP_IO_CALLBACK,void *,TP_CALLBACK_ENVIRON *);
4535 NTSYSAPI NTSTATUS WINAPI TpAllocPool(TP_POOL **,PVOID);
4536 NTSYSAPI NTSTATUS WINAPI TpAllocTimer(TP_TIMER **,PTP_TIMER_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *);
4537 NTSYSAPI NTSTATUS WINAPI TpAllocWait(TP_WAIT **,PTP_WAIT_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *);
4538 NTSYSAPI NTSTATUS WINAPI TpAllocWork(TP_WORK **,PTP_WORK_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *);
4539 NTSYSAPI void WINAPI TpCallbackLeaveCriticalSectionOnCompletion(TP_CALLBACK_INSTANCE *,RTL_CRITICAL_SECTION *);
4540 NTSYSAPI NTSTATUS WINAPI TpCallbackMayRunLong(TP_CALLBACK_INSTANCE *);
4541 NTSYSAPI void WINAPI TpCallbackReleaseMutexOnCompletion(TP_CALLBACK_INSTANCE *,HANDLE);
4542 NTSYSAPI void WINAPI TpCallbackReleaseSemaphoreOnCompletion(TP_CALLBACK_INSTANCE *,HANDLE,DWORD);
4543 NTSYSAPI void WINAPI TpCallbackSetEventOnCompletion(TP_CALLBACK_INSTANCE *,HANDLE);
4544 NTSYSAPI void WINAPI TpCallbackUnloadDllOnCompletion(TP_CALLBACK_INSTANCE *,HMODULE);
4545 NTSYSAPI void WINAPI TpCancelAsyncIoOperation(TP_IO *);
4546 NTSYSAPI void WINAPI TpDisassociateCallback(TP_CALLBACK_INSTANCE *);
4547 NTSYSAPI BOOL WINAPI TpIsTimerSet(TP_TIMER *);
4548 NTSYSAPI void WINAPI TpPostWork(TP_WORK *);
4549 NTSYSAPI NTSTATUS WINAPI TpQueryPoolStackInformation(TP_POOL *, TP_POOL_STACK_INFORMATION *stack_info);
4550 NTSYSAPI void WINAPI TpReleaseCleanupGroup(TP_CLEANUP_GROUP *);
4551 NTSYSAPI void WINAPI TpReleaseCleanupGroupMembers(TP_CLEANUP_GROUP *,BOOL,PVOID);
4552 NTSYSAPI void WINAPI TpReleaseIoCompletion(TP_IO *);
4553 NTSYSAPI void WINAPI TpReleasePool(TP_POOL *);
4554 NTSYSAPI void WINAPI TpReleaseTimer(TP_TIMER *);
4555 NTSYSAPI void WINAPI TpReleaseWait(TP_WAIT *);
4556 NTSYSAPI void WINAPI TpReleaseWork(TP_WORK *);
4557 NTSYSAPI void WINAPI TpSetPoolMaxThreads(TP_POOL *,DWORD);
4558 NTSYSAPI BOOL WINAPI TpSetPoolMinThreads(TP_POOL *,DWORD);
4559 NTSYSAPI NTSTATUS WINAPI TpSetPoolStackInformation(TP_POOL *, TP_POOL_STACK_INFORMATION *stack_info);
4560 NTSYSAPI void WINAPI TpSetTimer(TP_TIMER *, LARGE_INTEGER *,LONG,LONG);
4561 NTSYSAPI void WINAPI TpSetWait(TP_WAIT *,HANDLE,LARGE_INTEGER *);
4562 NTSYSAPI NTSTATUS WINAPI TpSimpleTryPost(PTP_SIMPLE_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *);
4563 NTSYSAPI void WINAPI TpStartAsyncIoOperation(TP_IO *);
4564 NTSYSAPI void WINAPI TpWaitForIoCompletion(TP_IO *,BOOL);
4565 NTSYSAPI void WINAPI TpWaitForTimer(TP_TIMER *,BOOL);
4566 NTSYSAPI void WINAPI TpWaitForWait(TP_WAIT *,BOOL);
4567 NTSYSAPI void WINAPI TpWaitForWork(TP_WORK *,BOOL);
4569 /* Wine internal functions */
4571 NTSYSAPI NTSTATUS WINAPI wine_nt_to_unix_file_name( const OBJECT_ATTRIBUTES *attr, char *nameA, ULONG *size,
4572 UINT disposition );
4573 NTSYSAPI NTSTATUS WINAPI wine_unix_to_nt_file_name( const char *name, WCHAR *buffer, ULONG *size );
4576 /***********************************************************************
4577 * Inline functions
4580 #define InitializeObjectAttributes(p,n,a,r,s) \
4581 do { \
4582 (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
4583 (p)->RootDirectory = r; \
4584 (p)->Attributes = a; \
4585 (p)->ObjectName = n; \
4586 (p)->SecurityDescriptor = s; \
4587 (p)->SecurityQualityOfService = NULL; \
4588 } while (0)
4590 #define NtCurrentProcess() ((HANDLE)-1)
4592 #define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length))
4593 #define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length))
4594 #define RtlStoreUlong(p,v) do { ULONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
4595 #define RtlStoreUlonglong(p,v) do { ULONGLONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
4596 #define RtlRetrieveUlong(p,s) memcpy((p), (s), sizeof(ULONG))
4597 #define RtlRetrieveUlonglong(p,s) memcpy((p), (s), sizeof(ULONGLONG))
4598 #define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))
4600 static inline BOOLEAN RtlCheckBit(PCRTL_BITMAP lpBits, ULONG ulBit)
4602 if (lpBits && ulBit < lpBits->SizeOfBitMap &&
4603 lpBits->Buffer[ulBit >> 5] & (1 << (ulBit & 31)))
4604 return TRUE;
4605 return FALSE;
4608 /* These are implemented as __fastcall, so we can't let Winelib apps link with them */
4609 static inline USHORT RtlUshortByteSwap(USHORT s)
4611 return (s >> 8) | (s << 8);
4613 static inline ULONG RtlUlongByteSwap(ULONG i)
4615 #if defined(__i386__) && defined(__GNUC__)
4616 ULONG ret;
4617 __asm__("bswap %0" : "=r" (ret) : "0" (i) );
4618 return ret;
4619 #else
4620 return ((ULONG)RtlUshortByteSwap((USHORT)i) << 16) | RtlUshortByteSwap((USHORT)(i >> 16));
4621 #endif
4624 /* list manipulation macros */
4625 #define InitializeListHead(le) (void)((le)->Flink = (le)->Blink = (le))
4626 #define InsertHeadList(le,e) do { PLIST_ENTRY f = (le)->Flink; (e)->Flink = f; (e)->Blink = (le); f->Blink = (e); (le)->Flink = (e); } while (0)
4627 #define InsertTailList(le,e) do { PLIST_ENTRY b = (le)->Blink; (e)->Flink = (le); (e)->Blink = b; b->Flink = (e); (le)->Blink = (e); } while (0)
4628 #define IsListEmpty(le) ((le)->Flink == (le))
4629 #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)
4630 static inline PLIST_ENTRY RemoveHeadList(PLIST_ENTRY le)
4632 PLIST_ENTRY f, b, e;
4634 e = le->Flink;
4635 f = le->Flink->Flink;
4636 b = le->Flink->Blink;
4637 f->Blink = b;
4638 b->Flink = f;
4640 if (e != le) e->Flink = e->Blink = NULL;
4641 return e;
4643 static inline PLIST_ENTRY RemoveTailList(PLIST_ENTRY le)
4645 PLIST_ENTRY f, b, e;
4647 e = le->Blink;
4648 f = le->Blink->Flink;
4649 b = le->Blink->Blink;
4650 f->Blink = b;
4651 b->Flink = f;
4653 if (e != le) e->Flink = e->Blink = NULL;
4654 return e;
4658 #ifdef __WINESRC__
4660 /* Wine internal functions */
4661 extern NTSTATUS CDECL __wine_init_unix_lib( HMODULE module, DWORD reason, const void *ptr_in, void *ptr_out );
4662 extern NTSTATUS WINAPI __wine_unix_spawnvp( char * const argv[], int wait );
4664 /* The thread information for 16-bit threads */
4665 /* NtCurrentTeb()->SubSystemTib points to this */
4666 typedef struct
4668 void *unknown; /* 00 unknown */
4669 UNICODE_STRING *exe_name; /* 04 exe module name */
4671 /* the following fields do not exist under Windows */
4672 UNICODE_STRING exe_str; /* exe name string pointed to by exe_name */
4673 CURDIR curdir; /* current directory */
4674 WCHAR curdir_buffer[MAX_PATH];
4675 } WIN16_SUBSYSTEM_TIB;
4677 #endif /* __WINESRC__ */
4679 #ifdef __cplusplus
4680 } /* extern "C" */
4681 #endif /* defined(__cplusplus) */
4683 #endif /* __WINE_WINTERNL_H */