winecfg: Change system theme alongside app theme.
[wine.git] / include / winternl.h
blobd50bc730660266d27e1e4db2cf0824d5c6f68214
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 typedef struct _CHPE_V2_CPU_AREA_INFO
301 BOOLEAN InSimulation; /* 000 */
302 BOOLEAN InSyscallCallback; /* 001 */
303 ULONG64 EmulatorStackBase; /* 008 */
304 ULONG64 EmulatorStackLimit; /* 010 */
305 ARM64EC_NT_CONTEXT *ContextAmd64; /* 018 */
306 ULONG *SuspendDoorbell; /* 020 */
307 ULONG64 LoadingModuleModflag; /* 028 */
308 void *EmulatorData[4]; /* 030 */
309 ULONG64 EmulatorDataInline; /* 050 */
310 } CHPE_V2_CPU_AREA_INFO, *PCHPE_V2_CPU_AREA_INFO;
312 #define TEB_ACTIVE_FRAME_CONTEXT_FLAG_EXTENDED 0x00000001
313 #define TEB_ACTIVE_FRAME_FLAG_EXTENDED 0x00000001
315 /***********************************************************************
316 * PEB data structure
318 typedef struct _PEB
319 { /* win32/win64 */
320 BOOLEAN InheritedAddressSpace; /* 000/000 */
321 BOOLEAN ReadImageFileExecOptions; /* 001/001 */
322 BOOLEAN BeingDebugged; /* 002/002 */
323 UCHAR ImageUsedLargePages : 1; /* 003/003 */
324 UCHAR IsProtectedProcess : 1;
325 UCHAR IsImageDynamicallyRelocated : 1;
326 UCHAR SkipPatchingUser32Forwarders : 1;
327 UCHAR IsPackagedProcess : 1;
328 UCHAR IsAppContainer: 1;
329 UCHAR IsProtectedProcessLight : 1;
330 UCHAR IsLongPathAwareProcess : 1;
331 HANDLE Mutant; /* 004/008 */
332 HMODULE ImageBaseAddress; /* 008/010 */
333 PPEB_LDR_DATA LdrData; /* 00c/018 */
334 RTL_USER_PROCESS_PARAMETERS *ProcessParameters; /* 010/020 */
335 PVOID SubSystemData; /* 014/028 */
336 HANDLE ProcessHeap; /* 018/030 */
337 PRTL_CRITICAL_SECTION FastPebLock; /* 01c/038 */
338 PVOID AtlThunkSListPtr; /* 020/040 */
339 PVOID IFEOKey; /* 024/048 */
340 ULONG ProcessInJob : 1; /* 028/050 */
341 ULONG ProcessInitializing : 1;
342 ULONG ProcessUsingVEH : 1;
343 ULONG ProcessUsingVCH : 1;
344 ULONG ProcessUsingFTH : 1;
345 ULONG ProcessPreviouslyThrottled : 1;
346 ULONG ProcessCurrentlyThrottled : 1;
347 ULONG ProcessImagesHotPatched : 1;
348 ULONG ReservedBits0 : 24;
349 PVOID KernelCallbackTable; /* 02c/058 */
350 ULONG Reserved; /* 030/060 */
351 ULONG AtlThunkSListPtr32; /* 034/064 */
352 PVOID ApiSetMap; /* 038/068 */
353 ULONG TlsExpansionCounter; /* 03c/070 */
354 PRTL_BITMAP TlsBitmap; /* 040/078 */
355 ULONG TlsBitmapBits[2]; /* 044/080 */
356 PVOID ReadOnlySharedMemoryBase; /* 04c/088 */
357 PVOID SharedData; /* 050/090 */
358 PVOID *ReadOnlyStaticServerData; /* 054/098 */
359 PVOID AnsiCodePageData; /* 058/0a0 */
360 PVOID OemCodePageData; /* 05c/0a8 */
361 PVOID UnicodeCaseTableData; /* 060/0b0 */
362 ULONG NumberOfProcessors; /* 064/0b8 */
363 ULONG NtGlobalFlag; /* 068/0bc */
364 LARGE_INTEGER CriticalSectionTimeout; /* 070/0c0 */
365 SIZE_T HeapSegmentReserve; /* 078/0c8 */
366 SIZE_T HeapSegmentCommit; /* 07c/0d0 */
367 SIZE_T HeapDeCommitTotalFreeThreshold; /* 080/0d8 */
368 SIZE_T HeapDeCommitFreeBlockThreshold; /* 084/0e0 */
369 ULONG NumberOfHeaps; /* 088/0e8 */
370 ULONG MaximumNumberOfHeaps; /* 08c/0ec */
371 PVOID *ProcessHeaps; /* 090/0f0 */
372 PVOID GdiSharedHandleTable; /* 094/0f8 */
373 PVOID ProcessStarterHelper; /* 098/100 */
374 PVOID GdiDCAttributeList; /* 09c/108 */
375 PVOID LoaderLock; /* 0a0/110 */
376 ULONG OSMajorVersion; /* 0a4/118 */
377 ULONG OSMinorVersion; /* 0a8/11c */
378 ULONG OSBuildNumber; /* 0ac/120 */
379 ULONG OSPlatformId; /* 0b0/124 */
380 ULONG ImageSubSystem; /* 0b4/128 */
381 ULONG ImageSubSystemMajorVersion; /* 0b8/12c */
382 ULONG ImageSubSystemMinorVersion; /* 0bc/130 */
383 KAFFINITY ActiveProcessAffinityMask; /* 0c0/138 */
384 #ifdef _WIN64
385 ULONG GdiHandleBuffer[60]; /* /140 */
386 #else
387 ULONG GdiHandleBuffer[34]; /* 0c4/ */
388 #endif
389 PVOID PostProcessInitRoutine; /* 14c/230 */
390 PRTL_BITMAP TlsExpansionBitmap; /* 150/238 */
391 ULONG TlsExpansionBitmapBits[32]; /* 154/240 */
392 ULONG SessionId; /* 1d4/2c0 */
393 ULARGE_INTEGER AppCompatFlags; /* 1d8/2c8 */
394 ULARGE_INTEGER AppCompatFlagsUser; /* 1e0/2d0 */
395 PVOID ShimData; /* 1e8/2d8 */
396 PVOID AppCompatInfo; /* 1ec/2e0 */
397 UNICODE_STRING CSDVersion; /* 1f0/2e8 */
398 PVOID ActivationContextData; /* 1f8/2f8 */
399 PVOID ProcessAssemblyStorageMap; /* 1fc/300 */
400 PVOID SystemDefaultActivationData; /* 200/308 */
401 PVOID SystemAssemblyStorageMap; /* 204/310 */
402 SIZE_T MinimumStackCommit; /* 208/318 */
403 PVOID *FlsCallback; /* 20c/320 */
404 LIST_ENTRY FlsListHead; /* 210/328 */
405 PRTL_BITMAP FlsBitmap; /* 218/338 */
406 ULONG FlsBitmapBits[4]; /* 21c/340 */
407 ULONG FlsHighIndex; /* 22c/350 */
408 PVOID WerRegistrationData; /* 230/358 */
409 PVOID WerShipAssertPtr; /* 234/360 */
410 PVOID EcCodeBitMap; /* 238/368 */
411 PVOID pImageHeaderHash; /* 23c/370 */
412 ULONG HeapTracingEnabled : 1; /* 240/378 */
413 ULONG CritSecTracingEnabled : 1;
414 ULONG LibLoaderTracingEnabled : 1;
415 ULONG SpareTracingBits : 29;
416 ULONGLONG CsrServerReadOnlySharedMemoryBase; /* 248/380 */
417 ULONG TppWorkerpListLock; /* 250/388 */
418 LIST_ENTRY TppWorkerpList; /* 254/390 */
419 PVOID WaitOnAddressHashTable [0x80]; /* 25c/3a0 */
420 PVOID TelemetryCoverageHeader; /* 45c/7a0 */
421 ULONG CloudFileFlags; /* 460/7a8 */
422 ULONG CloudFileDiagFlags; /* 464/7ac */
423 CHAR PlaceholderCompatibilityMode; /* 468/7b0 */
424 CHAR PlaceholderCompatibilityModeReserved[7]; /* 469/7b1 */
425 PVOID LeapSecondData; /* 470/7b8 */
426 ULONG LeapSecondFlags; /* 474/7c0 */
427 ULONG NtGlobalFlag2; /* 478/7c4 */
428 } PEB, *PPEB;
431 /***********************************************************************
432 * TEB data structure
434 typedef struct _TEB
435 { /* win32/win64 */
436 NT_TIB Tib; /* 000/0000 */
437 PVOID EnvironmentPointer; /* 01c/0038 */
438 CLIENT_ID ClientId; /* 020/0040 */
439 PVOID ActiveRpcHandle; /* 028/0050 */
440 PVOID ThreadLocalStoragePointer; /* 02c/0058 */
441 PPEB Peb; /* 030/0060 */
442 ULONG LastErrorValue; /* 034/0068 */
443 ULONG CountOfOwnedCriticalSections; /* 038/006c */
444 PVOID CsrClientThread; /* 03c/0070 */
445 PVOID Win32ThreadInfo; /* 040/0078 */
446 ULONG User32Reserved[26]; /* 044/0080 */
447 ULONG UserReserved[5]; /* 0ac/00e8 */
448 PVOID WOW32Reserved; /* 0c0/0100 */
449 ULONG CurrentLocale; /* 0c4/0108 */
450 ULONG FpSoftwareStatusRegister; /* 0c8/010c */
451 PVOID ReservedForDebuggerInstrumentation[16]; /* 0cc/0110 */
452 #ifdef _WIN64
453 PVOID SystemReserved1[30]; /* /0190 */
454 #else
455 PVOID SystemReserved1[26]; /* 10c/ used for krnl386 private data in Wine */
456 #endif
457 char PlaceholderCompatibilityMode; /* 174/0280 */
458 BOOLEAN PlaceholderHydrationAlwaysExplicit;/* 175/0281 */
459 char PlaceholderReserved[10]; /* 176/0282 */
460 DWORD ProxiedProcessId; /* 180/028c */
461 ACTIVATION_CONTEXT_STACK ActivationContextStack; /* 184/0290 */
462 UCHAR WorkingOnBehalfOfTicket[8]; /* 19c/02b8 */
463 LONG ExceptionCode; /* 1a4/02c0 */
464 ACTIVATION_CONTEXT_STACK *ActivationContextStackPointer; /* 1a8/02c8 */
465 ULONG_PTR InstrumentationCallbackSp; /* 1ac/02d0 */
466 ULONG_PTR InstrumentationCallbackPreviousPc; /* 1b0/02d8 */
467 ULONG_PTR InstrumentationCallbackPreviousSp; /* 1b4/02e0 */
468 #ifdef _WIN64
469 ULONG TxFsContext; /* /02e8 */
470 BOOLEAN InstrumentationCallbackDisabled; /* /02ec */
471 BOOLEAN UnalignedLoadStoreExceptions; /* /02ed */
472 #else
473 BOOLEAN InstrumentationCallbackDisabled; /* 1b8/ */
474 BYTE SpareBytes1[23]; /* 1b9/ */
475 ULONG TxFsContext; /* 1d0/ */
476 #endif
477 GDI_TEB_BATCH GdiTebBatch; /* 1d4/02f0 used for ntdll private data in Wine */
478 CLIENT_ID RealClientId; /* 6b4/07d8 */
479 HANDLE GdiCachedProcessHandle; /* 6bc/07e8 */
480 ULONG GdiClientPID; /* 6c0/07f0 */
481 ULONG GdiClientTID; /* 6c4/07f4 */
482 PVOID GdiThreadLocaleInfo; /* 6c8/07f8 */
483 ULONG_PTR Win32ClientInfo[62]; /* 6cc/0800 used for user32 private data in Wine */
484 PVOID glDispatchTable[233]; /* 7c4/09f0 */
485 PVOID glReserved1[29]; /* b68/1138 */
486 PVOID glReserved2; /* bdc/1220 */
487 PVOID glSectionInfo; /* be0/1228 */
488 PVOID glSection; /* be4/1230 */
489 PVOID glTable; /* be8/1238 */
490 PVOID glCurrentRC; /* bec/1240 */
491 PVOID glContext; /* bf0/1248 */
492 ULONG LastStatusValue; /* bf4/1250 */
493 UNICODE_STRING StaticUnicodeString; /* bf8/1258 */
494 WCHAR StaticUnicodeBuffer[261]; /* c00/1268 */
495 PVOID DeallocationStack; /* e0c/1478 */
496 PVOID TlsSlots[64]; /* e10/1480 */
497 LIST_ENTRY TlsLinks; /* f10/1680 */
498 PVOID Vdm; /* f18/1690 */
499 PVOID ReservedForNtRpc; /* f1c/1698 */
500 PVOID DbgSsReserved[2]; /* f20/16a0 */
501 ULONG HardErrorMode; /* f28/16b0 */
502 #ifdef _WIN64
503 PVOID Instrumentation[11]; /* /16b8 */
504 #else
505 PVOID Instrumentation[9]; /* f2c/ */
506 #endif
507 GUID ActivityId; /* f50/1710 */
508 PVOID SubProcessTag; /* f60/1720 */
509 PVOID PerflibData; /* f64/1728 */
510 PVOID EtwTraceData; /* f68/1730 */
511 PVOID WinSockData; /* f6c/1738 */
512 ULONG GdiBatchCount; /* f70/1740 */
513 ULONG IdealProcessorValue; /* f74/1744 */
514 ULONG GuaranteedStackBytes; /* f78/1748 */
515 PVOID ReservedForPerf; /* f7c/1750 */
516 PVOID ReservedForOle; /* f80/1758 */
517 ULONG WaitingOnLoaderLock; /* f84/1760 */
518 PVOID SavedPriorityState; /* f88/1768 */
519 ULONG_PTR ReservedForCodeCoverage; /* f8c/1770 */
520 PVOID ThreadPoolData; /* f90/1778 */
521 PVOID *TlsExpansionSlots; /* f94/1780 */
522 #ifdef _WIN64
523 union {
524 PVOID DeallocationBStore; /* /1788 */
525 CHPE_V2_CPU_AREA_INFO *ChpeV2CpuAreaInfo; /* /1788 */
526 } DUMMYUNIONNAME;
527 PVOID BStoreLimit; /* /1790 */
528 #endif
529 ULONG MuiGeneration; /* f98/1798 */
530 ULONG IsImpersonating; /* f9c/179c */
531 PVOID NlsCache; /* fa0/17a0 */
532 PVOID ShimData; /* fa4/17a8 */
533 ULONG HeapVirtualAffinity; /* fa8/17b0 */
534 PVOID CurrentTransactionHandle; /* fac/17b8 */
535 TEB_ACTIVE_FRAME *ActiveFrame; /* fb0/17c0 */
536 TEB_FLS_DATA *FlsSlots; /* fb4/17c8 */
537 PVOID PreferredLanguages; /* fb8/17d0 */
538 PVOID UserPrefLanguages; /* fbc/17d8 */
539 PVOID MergedPrefLanguages; /* fc0/17e0 */
540 ULONG MuiImpersonation; /* fc4/17e8 */
541 USHORT CrossTebFlags; /* fc8/17ec */
542 USHORT SameTebFlags; /* fca/17ee */
543 PVOID TxnScopeEnterCallback; /* fcc/17f0 */
544 PVOID TxnScopeExitCallback; /* fd0/17f8 */
545 PVOID TxnScopeContext; /* fd4/1800 */
546 ULONG LockCount; /* fd8/1808 */
547 LONG WowTebOffset; /* fdc/180c */
548 PVOID ResourceRetValue; /* fe0/1810 */
549 PVOID ReservedForWdf; /* fe4/1818 */
550 ULONGLONG ReservedForCrt; /* fe8/1820 */
551 GUID EffectiveContainerId; /* ff0/1828 */
552 } TEB, *PTEB;
555 /***********************************************************************
556 * The 32-bit/64-bit version of the PEB and TEB for WoW64
558 typedef struct _NT_TIB32
560 ULONG ExceptionList; /* 0000 */
561 ULONG StackBase; /* 0004 */
562 ULONG StackLimit; /* 0008 */
563 ULONG SubSystemTib; /* 000c */
564 ULONG FiberData; /* 0010 */
565 ULONG ArbitraryUserPointer; /* 0014 */
566 ULONG Self; /* 0018 */
567 } NT_TIB32;
569 typedef struct _NT_TIB64
571 ULONG64 ExceptionList; /* 0000 */
572 ULONG64 StackBase; /* 0008 */
573 ULONG64 StackLimit; /* 0010 */
574 ULONG64 SubSystemTib; /* 0018 */
575 ULONG64 FiberData; /* 0020 */
576 ULONG64 ArbitraryUserPointer; /* 0028 */
577 ULONG64 Self; /* 0030 */
578 } NT_TIB64;
580 typedef struct _CLIENT_ID32
582 ULONG UniqueProcess;
583 ULONG UniqueThread;
584 } CLIENT_ID32;
586 typedef struct _CLIENT_ID64
588 ULONG64 UniqueProcess;
589 ULONG64 UniqueThread;
590 } CLIENT_ID64;
592 typedef struct _LIST_ENTRY32
594 ULONG Flink;
595 ULONG Blink;
596 } LIST_ENTRY32;
598 typedef struct _LIST_ENTRY64
600 ULONG64 Flink;
601 ULONG64 Blink;
602 } LIST_ENTRY64;
604 typedef struct _UNICODE_STRING32
606 USHORT Length;
607 USHORT MaximumLength;
608 ULONG Buffer;
609 } UNICODE_STRING32;
611 typedef struct _UNICODE_STRING64
613 USHORT Length;
614 USHORT MaximumLength;
615 ULONG64 Buffer;
616 } UNICODE_STRING64;
618 typedef struct _ACTIVATION_CONTEXT_STACK32
620 ULONG ActiveFrame;
621 LIST_ENTRY32 FrameListCache;
622 ULONG Flags;
623 ULONG NextCookieSequenceNumber;
624 ULONG32 StackId;
625 } ACTIVATION_CONTEXT_STACK32;
627 typedef struct _ACTIVATION_CONTEXT_STACK64
629 ULONG64 ActiveFrame;
630 LIST_ENTRY64 FrameListCache;
631 ULONG Flags;
632 ULONG NextCookieSequenceNumber;
633 ULONG64 StackId;
634 } ACTIVATION_CONTEXT_STACK64;
636 typedef struct _CURDIR32
638 UNICODE_STRING32 DosPath;
639 ULONG Handle;
640 } CURDIR32;
642 typedef struct _CURDIR64
644 UNICODE_STRING64 DosPath;
645 ULONG64 Handle;
646 } CURDIR64;
648 typedef struct RTL_DRIVE_LETTER_CURDIR32
650 USHORT Flags;
651 USHORT Length;
652 ULONG TimeStamp;
653 UNICODE_STRING32 DosPath;
654 } RTL_DRIVE_LETTER_CURDIR32;
656 typedef struct RTL_DRIVE_LETTER_CURDIR64
658 USHORT Flags;
659 USHORT Length;
660 ULONG TimeStamp;
661 UNICODE_STRING64 DosPath;
662 } RTL_DRIVE_LETTER_CURDIR64;
664 typedef struct _RTL_USER_PROCESS_PARAMETERS32
666 ULONG AllocationSize;
667 ULONG Size;
668 ULONG Flags;
669 ULONG DebugFlags;
670 ULONG ConsoleHandle;
671 ULONG ConsoleFlags;
672 ULONG hStdInput;
673 ULONG hStdOutput;
674 ULONG hStdError;
675 CURDIR32 CurrentDirectory;
676 UNICODE_STRING32 DllPath;
677 UNICODE_STRING32 ImagePathName;
678 UNICODE_STRING32 CommandLine;
679 ULONG Environment;
680 ULONG dwX;
681 ULONG dwY;
682 ULONG dwXSize;
683 ULONG dwYSize;
684 ULONG dwXCountChars;
685 ULONG dwYCountChars;
686 ULONG dwFillAttribute;
687 ULONG dwFlags;
688 ULONG wShowWindow;
689 UNICODE_STRING32 WindowTitle;
690 UNICODE_STRING32 Desktop;
691 UNICODE_STRING32 ShellInfo;
692 UNICODE_STRING32 RuntimeInfo;
693 RTL_DRIVE_LETTER_CURDIR32 DLCurrentDirectory[0x20];
694 ULONG EnvironmentSize;
695 ULONG EnvironmentVersion;
696 ULONG PackageDependencyData;
697 ULONG ProcessGroupId;
698 ULONG LoaderThreads;
699 } RTL_USER_PROCESS_PARAMETERS32;
701 typedef struct _RTL_USER_PROCESS_PARAMETERS64
703 ULONG AllocationSize;
704 ULONG Size;
705 ULONG Flags;
706 ULONG DebugFlags;
707 ULONG64 ConsoleHandle;
708 ULONG ConsoleFlags;
709 ULONG64 hStdInput;
710 ULONG64 hStdOutput;
711 ULONG64 hStdError;
712 CURDIR64 CurrentDirectory;
713 UNICODE_STRING64 DllPath;
714 UNICODE_STRING64 ImagePathName;
715 UNICODE_STRING64 CommandLine;
716 ULONG64 Environment;
717 ULONG dwX;
718 ULONG dwY;
719 ULONG dwXSize;
720 ULONG dwYSize;
721 ULONG dwXCountChars;
722 ULONG dwYCountChars;
723 ULONG dwFillAttribute;
724 ULONG dwFlags;
725 ULONG wShowWindow;
726 UNICODE_STRING64 WindowTitle;
727 UNICODE_STRING64 Desktop;
728 UNICODE_STRING64 ShellInfo;
729 UNICODE_STRING64 RuntimeInfo;
730 RTL_DRIVE_LETTER_CURDIR64 DLCurrentDirectory[0x20];
731 ULONG64 EnvironmentSize;
732 ULONG64 EnvironmentVersion;
733 ULONG64 PackageDependencyData;
734 ULONG ProcessGroupId;
735 ULONG LoaderThreads;
736 } RTL_USER_PROCESS_PARAMETERS64;
738 typedef struct _PEB_LDR_DATA32
740 ULONG Length;
741 BOOLEAN Initialized;
742 ULONG SsHandle;
743 LIST_ENTRY32 InLoadOrderModuleList;
744 LIST_ENTRY32 InMemoryOrderModuleList;
745 LIST_ENTRY32 InInitializationOrderModuleList;
746 ULONG EntryInProgress;
747 BOOLEAN ShutdownInProgress;
748 ULONG ShutdownThreadId;
749 } PEB_LDR_DATA32, *PPEB_LDR_DATA32;
751 typedef struct _PEB_LDR_DATA64
753 ULONG Length;
754 BOOLEAN Initialized;
755 ULONG64 SsHandle;
756 LIST_ENTRY64 InLoadOrderModuleList;
757 LIST_ENTRY64 InMemoryOrderModuleList;
758 LIST_ENTRY64 InInitializationOrderModuleList;
759 ULONG64 EntryInProgress;
760 BOOLEAN ShutdownInProgress;
761 ULONG64 ShutdownThreadId;
762 } PEB_LDR_DATA64, *PPEB_LDR_DATA64;
764 typedef struct _PEB32
766 BOOLEAN InheritedAddressSpace; /* 0000 */
767 BOOLEAN ReadImageFileExecOptions; /* 0001 */
768 BOOLEAN BeingDebugged; /* 0002 */
769 UCHAR ImageUsedLargePages : 1; /* 0003 */
770 UCHAR IsProtectedProcess : 1;
771 UCHAR IsImageDynamicallyRelocated : 1;
772 UCHAR SkipPatchingUser32Forwarders : 1;
773 UCHAR IsPackagedProcess : 1;
774 UCHAR IsAppContainer: 1;
775 UCHAR IsProtectedProcessLight : 1;
776 UCHAR IsLongPathAwareProcess : 1;
777 ULONG Mutant; /* 0004 */
778 ULONG ImageBaseAddress; /* 0008 */
779 ULONG LdrData; /* 000c */
780 ULONG ProcessParameters; /* 0010 */
781 ULONG SubSystemData; /* 0014 */
782 ULONG ProcessHeap; /* 0018 */
783 ULONG FastPebLock; /* 001c */
784 ULONG AtlThunkSListPtr; /* 0020 */
785 ULONG IFEOKey; /* 0024 */
786 ULONG ProcessInJob : 1; /* 0028 */
787 ULONG ProcessInitializing : 1;
788 ULONG ProcessUsingVEH : 1;
789 ULONG ProcessUsingVCH : 1;
790 ULONG ProcessUsingFTH : 1;
791 ULONG ProcessPreviouslyThrottled : 1;
792 ULONG ProcessCurrentlyThrottled : 1;
793 ULONG ProcessImagesHotPatched : 1;
794 ULONG ReservedBits0 : 24;
795 ULONG KernelCallbackTable; /* 002c */
796 ULONG Reserved; /* 0030 */
797 ULONG AtlThunkSListPtr32; /* 0034 */
798 ULONG ApiSetMap; /* 0038 */
799 ULONG TlsExpansionCounter; /* 003c */
800 ULONG TlsBitmap; /* 0040 */
801 ULONG TlsBitmapBits[2]; /* 0044 */
802 ULONG ReadOnlySharedMemoryBase; /* 004c */
803 ULONG SharedData; /* 0050 */
804 ULONG ReadOnlyStaticServerData; /* 0054 */
805 ULONG AnsiCodePageData; /* 0058 */
806 ULONG OemCodePageData; /* 005c */
807 ULONG UnicodeCaseTableData; /* 0060 */
808 ULONG NumberOfProcessors; /* 0064 */
809 ULONG NtGlobalFlag; /* 0068 */
810 LARGE_INTEGER CriticalSectionTimeout; /* 0070 */
811 ULONG HeapSegmentReserve; /* 0078 */
812 ULONG HeapSegmentCommit; /* 007c */
813 ULONG HeapDeCommitTotalFreeThreshold; /* 0080 */
814 ULONG HeapDeCommitFreeBlockThreshold; /* 0084 */
815 ULONG NumberOfHeaps; /* 0088 */
816 ULONG MaximumNumberOfHeaps; /* 008c */
817 ULONG ProcessHeaps; /* 0090 */
818 ULONG GdiSharedHandleTable; /* 0094 */
819 ULONG ProcessStarterHelper; /* 0098 */
820 ULONG GdiDCAttributeList; /* 009c */
821 ULONG LoaderLock; /* 00a0 */
822 ULONG OSMajorVersion; /* 00a4 */
823 ULONG OSMinorVersion; /* 00a8 */
824 ULONG OSBuildNumber; /* 00ac */
825 ULONG OSPlatformId; /* 00b0 */
826 ULONG ImageSubSystem; /* 00b4 */
827 ULONG ImageSubSystemMajorVersion; /* 00b8 */
828 ULONG ImageSubSystemMinorVersion; /* 00bc */
829 ULONG ActiveProcessAffinityMask; /* 00c0 */
830 ULONG GdiHandleBuffer[34]; /* 00c4 */
831 ULONG PostProcessInitRoutine; /* 014c */
832 ULONG TlsExpansionBitmap; /* 0150 */
833 ULONG TlsExpansionBitmapBits[32]; /* 0154 */
834 ULONG SessionId; /* 01d4 */
835 ULARGE_INTEGER AppCompatFlags; /* 01d8 */
836 ULARGE_INTEGER AppCompatFlagsUser; /* 01e0 */
837 ULONG ShimData; /* 01e8 */
838 ULONG AppCompatInfo; /* 01ec */
839 UNICODE_STRING32 CSDVersion; /* 01f0 */
840 ULONG ActivationContextData; /* 01f8 */
841 ULONG ProcessAssemblyStorageMap; /* 01fc */
842 ULONG SystemDefaultActivationData; /* 0200 */
843 ULONG SystemAssemblyStorageMap; /* 0204 */
844 ULONG MinimumStackCommit; /* 0208 */
845 ULONG FlsCallback; /* 020c */
846 LIST_ENTRY32 FlsListHead; /* 0210 */
847 ULONG FlsBitmap; /* 0218 */
848 ULONG FlsBitmapBits[4]; /* 021c */
849 ULONG FlsHighIndex; /* 022c */
850 ULONG WerRegistrationData; /* 0230 */
851 ULONG WerShipAssertPtr; /* 0234 */
852 ULONG pUnused; /* 0238 */
853 ULONG pImageHeaderHash; /* 023c */
854 ULONG HeapTracingEnabled : 1; /* 0240 */
855 ULONG CritSecTracingEnabled : 1;
856 ULONG LibLoaderTracingEnabled : 1;
857 ULONG SpareTracingBits : 29;
858 ULONGLONG CsrServerReadOnlySharedMemoryBase; /* 0248 */
859 ULONG TppWorkerpListLock; /* 0250 */
860 LIST_ENTRY32 TppWorkerpList; /* 0254 */
861 ULONG WaitOnAddressHashTable [0x80]; /* 025c */
862 ULONG TelemetryCoverageHeader; /* 045c */
863 ULONG CloudFileFlags; /* 0460 */
864 ULONG CloudFileDiagFlags; /* 0464 */
865 CHAR PlaceholderCompatibilityMode; /* 0468 */
866 CHAR PlaceholderCompatibilityModeReserved[7]; /* 0469 */
867 ULONG LeapSecondData; /* 0470 */
868 ULONG LeapSecondFlags; /* 0474 */
869 ULONG NtGlobalFlag2; /* 0478 */
870 } PEB32;
872 C_ASSERT( sizeof(PEB32) == 0x480 );
874 typedef struct _PEB64
876 BOOLEAN InheritedAddressSpace; /* 0000 */
877 BOOLEAN ReadImageFileExecOptions; /* 0001 */
878 BOOLEAN BeingDebugged; /* 0002 */
879 UCHAR ImageUsedLargePages : 1; /* 0003 */
880 UCHAR IsProtectedProcess : 1;
881 UCHAR IsImageDynamicallyRelocated : 1;
882 UCHAR SkipPatchingUser32Forwarders : 1;
883 UCHAR IsPackagedProcess : 1;
884 UCHAR IsAppContainer: 1;
885 UCHAR IsProtectedProcessLight : 1;
886 UCHAR IsLongPathAwareProcess : 1;
887 ULONG64 Mutant; /* 0008 */
888 ULONG64 ImageBaseAddress; /* 0010 */
889 ULONG64 LdrData; /* 0018 */
890 ULONG64 ProcessParameters; /* 0020 */
891 ULONG64 SubSystemData; /* 0028 */
892 ULONG64 ProcessHeap; /* 0030 */
893 ULONG64 FastPebLock; /* 0038 */
894 ULONG64 AtlThunkSListPtr; /* 0040 */
895 ULONG64 IFEOKey; /* 0048 */
896 ULONG ProcessInJob : 1; /* 0050 */
897 ULONG ProcessInitializing : 1;
898 ULONG ProcessUsingVEH : 1;
899 ULONG ProcessUsingVCH : 1;
900 ULONG ProcessUsingFTH : 1;
901 ULONG ProcessPreviouslyThrottled : 1;
902 ULONG ProcessCurrentlyThrottled : 1;
903 ULONG ProcessImagesHotPatched : 1;
904 ULONG ReservedBits0 : 24;
905 ULONG64 KernelCallbackTable; /* 0058 */
906 ULONG Reserved; /* 0060 */
907 ULONG AtlThunkSListPtr32; /* 0064 */
908 ULONG64 ApiSetMap; /* 0068 */
909 ULONG TlsExpansionCounter; /* 0070 */
910 ULONG64 TlsBitmap; /* 0078 */
911 ULONG TlsBitmapBits[2]; /* 0080 */
912 ULONG64 ReadOnlySharedMemoryBase; /* 0088 */
913 ULONG64 SharedData; /* 0090 */
914 ULONG64 ReadOnlyStaticServerData; /* 0098 */
915 ULONG64 AnsiCodePageData; /* 00a0 */
916 ULONG64 OemCodePageData; /* 00a8 */
917 ULONG64 UnicodeCaseTableData; /* 00b0 */
918 ULONG NumberOfProcessors; /* 00b8 */
919 ULONG NtGlobalFlag; /* 00bc */
920 LARGE_INTEGER CriticalSectionTimeout; /* 00c0 */
921 ULONG64 HeapSegmentReserve; /* 00c8 */
922 ULONG64 HeapSegmentCommit; /* 00d0 */
923 ULONG64 HeapDeCommitTotalFreeThreshold; /* 00d8 */
924 ULONG64 HeapDeCommitFreeBlockThreshold; /* 00e0 */
925 ULONG NumberOfHeaps; /* 00e8 */
926 ULONG MaximumNumberOfHeaps; /* 00ec */
927 ULONG64 ProcessHeaps; /* 00f0 */
928 ULONG64 GdiSharedHandleTable; /* 00f8 */
929 ULONG64 ProcessStarterHelper; /* 0100 */
930 ULONG64 GdiDCAttributeList; /* 0108 */
931 ULONG64 LoaderLock; /* 0110 */
932 ULONG OSMajorVersion; /* 0118 */
933 ULONG OSMinorVersion; /* 011c */
934 ULONG OSBuildNumber; /* 0120 */
935 ULONG OSPlatformId; /* 0124 */
936 ULONG ImageSubSystem; /* 0128 */
937 ULONG ImageSubSystemMajorVersion; /* 012c */
938 ULONG ImageSubSystemMinorVersion; /* 0130 */
939 ULONG64 ActiveProcessAffinityMask; /* 0138 */
940 ULONG GdiHandleBuffer[60]; /* 0140 */
941 ULONG64 PostProcessInitRoutine; /* 0230 */
942 ULONG64 TlsExpansionBitmap; /* 0238 */
943 ULONG TlsExpansionBitmapBits[32]; /* 0240 */
944 ULONG SessionId; /* 02c0 */
945 ULARGE_INTEGER AppCompatFlags; /* 02c8 */
946 ULARGE_INTEGER AppCompatFlagsUser; /* 02d0 */
947 ULONG64 ShimData; /* 02d8 */
948 ULONG64 AppCompatInfo; /* 02e0 */
949 UNICODE_STRING64 CSDVersion; /* 02e8 */
950 ULONG64 ActivationContextData; /* 02f8 */
951 ULONG64 ProcessAssemblyStorageMap; /* 0300 */
952 ULONG64 SystemDefaultActivationData; /* 0308 */
953 ULONG64 SystemAssemblyStorageMap; /* 0310 */
954 ULONG64 MinimumStackCommit; /* 0318 */
955 ULONG64 FlsCallback; /* 0320 */
956 LIST_ENTRY64 FlsListHead; /* 0328 */
957 ULONG64 FlsBitmap; /* 0338 */
958 ULONG FlsBitmapBits[4]; /* 0340 */
959 ULONG FlsHighIndex; /* 0350 */
960 ULONG64 WerRegistrationData; /* 0358 */
961 ULONG64 WerShipAssertPtr; /* 0360 */
962 ULONG64 pUnused; /* 0368 */
963 ULONG64 pImageHeaderHash; /* 0370 */
964 ULONG HeapTracingEnabled : 1; /* 0378 */
965 ULONG CritSecTracingEnabled : 1;
966 ULONG LibLoaderTracingEnabled : 1;
967 ULONG SpareTracingBits : 29;
968 ULONGLONG CsrServerReadOnlySharedMemoryBase; /* 0380 */
969 ULONG TppWorkerpListLock; /* 0388 */
970 LIST_ENTRY64 TppWorkerpList; /* 0390 */
971 ULONG64 WaitOnAddressHashTable [0x80]; /* 03a0 */
972 ULONG64 TelemetryCoverageHeader; /* 07a0 */
973 ULONG CloudFileFlags; /* 07a8 */
974 ULONG CloudFileDiagFlags; /* 07ac */
975 CHAR PlaceholderCompatibilityMode; /* 07b0 */
976 CHAR PlaceholderCompatibilityModeReserved[7]; /* 07b1 */
977 ULONG64 LeapSecondData; /* 07b8 */
978 ULONG LeapSecondFlags; /* 07c0 */
979 ULONG NtGlobalFlag2; /* 07c4 */
980 } PEB64;
982 C_ASSERT( sizeof(PEB64) == 0x7c8 );
984 typedef struct _TEB32
986 NT_TIB32 Tib; /* 0000 */
987 ULONG EnvironmentPointer; /* 001c */
988 CLIENT_ID32 ClientId; /* 0020 */
989 ULONG ActiveRpcHandle; /* 0028 */
990 ULONG ThreadLocalStoragePointer; /* 002c */
991 ULONG Peb; /* 0030 */
992 ULONG LastErrorValue; /* 0034 */
993 ULONG CountOfOwnedCriticalSections; /* 0038 */
994 ULONG CsrClientThread; /* 003c */
995 ULONG Win32ThreadInfo; /* 0040 */
996 ULONG User32Reserved[26]; /* 0044 */
997 ULONG UserReserved[5]; /* 00ac */
998 ULONG WOW32Reserved; /* 00c0 */
999 ULONG CurrentLocale; /* 00c4 */
1000 ULONG FpSoftwareStatusRegister; /* 00c8 */
1001 ULONG ReservedForDebuggerInstrumentation[16]; /* 00cc */
1002 ULONG SystemReserved1[26]; /* 010c */
1003 char PlaceholderCompatibilityMode; /* 0174 */
1004 BOOLEAN PlaceholderHydrationAlwaysExplicit;/* 0175 */
1005 char PlaceholderReserved[10]; /* 0176 */
1006 DWORD ProxiedProcessId; /* 0180 */
1007 ACTIVATION_CONTEXT_STACK32 ActivationContextStack; /* 0184 */
1008 UCHAR WorkingOnBehalfOfTicket[8]; /* 019c */
1009 LONG ExceptionCode; /* 01a4 */
1010 ULONG ActivationContextStackPointer; /* 01a8 */
1011 ULONG InstrumentationCallbackSp; /* 01ac */
1012 ULONG InstrumentationCallbackPreviousPc; /* 01b0 */
1013 ULONG InstrumentationCallbackPreviousSp; /* 01b4 */
1014 BOOLEAN InstrumentationCallbackDisabled; /* 01b8 */
1015 BYTE SpareBytes1[23]; /* 01b9 */
1016 ULONG TxFsContext; /* 01d0 */
1017 ULONG GdiTebBatch[0x138]; /* 01d4 */
1018 CLIENT_ID32 RealClientId; /* 06b4 */
1019 ULONG GdiCachedProcessHandle; /* 06bc */
1020 ULONG GdiClientPID; /* 06c0 */
1021 ULONG GdiClientTID; /* 06c4 */
1022 ULONG GdiThreadLocaleInfo; /* 06c8 */
1023 ULONG Win32ClientInfo[62]; /* 06cc */
1024 ULONG glDispatchTable[233]; /* 07c4 */
1025 ULONG glReserved1[29]; /* 0b68 */
1026 ULONG glReserved2; /* 0bdc */
1027 ULONG glSectionInfo; /* 0be0 */
1028 ULONG glSection; /* 0be4 */
1029 ULONG glTable; /* 0be8 */
1030 ULONG glCurrentRC; /* 0bec */
1031 ULONG glContext; /* 0bf0 */
1032 ULONG LastStatusValue; /* 0bf4 */
1033 UNICODE_STRING32 StaticUnicodeString; /* 0bf8 */
1034 WCHAR StaticUnicodeBuffer[261]; /* 0c00 */
1035 ULONG DeallocationStack; /* 0e0c */
1036 ULONG TlsSlots[64]; /* 0e10 */
1037 LIST_ENTRY32 TlsLinks; /* 0f10 */
1038 ULONG Vdm; /* 0f18 */
1039 ULONG ReservedForNtRpc; /* 0f1c */
1040 ULONG DbgSsReserved[2]; /* 0f20 */
1041 ULONG HardErrorMode; /* 0f28 */
1042 ULONG Instrumentation[9]; /* 0f2c */
1043 GUID ActivityId; /* 0f50 */
1044 ULONG SubProcessTag; /* 0f60 */
1045 ULONG PerflibData; /* 0f64 */
1046 ULONG EtwTraceData; /* 0f68 */
1047 ULONG WinSockData; /* 0f6c */
1048 ULONG GdiBatchCount; /* 0f70 */
1049 ULONG IdealProcessorValue; /* 0f74 */
1050 ULONG GuaranteedStackBytes; /* 0f78 */
1051 ULONG ReservedForPerf; /* 0f7c */
1052 ULONG ReservedForOle; /* 0f80 */
1053 ULONG WaitingOnLoaderLock; /* 0f84 */
1054 ULONG SavedPriorityState; /* 0f88 */
1055 ULONG ReservedForCodeCoverage; /* 0f8c */
1056 ULONG ThreadPoolData; /* 0f90 */
1057 ULONG TlsExpansionSlots; /* 0f94 */
1058 ULONG MuiGeneration; /* 0f98 */
1059 ULONG IsImpersonating; /* 0f9c */
1060 ULONG NlsCache; /* 0fa0 */
1061 ULONG ShimData; /* 0fa4 */
1062 ULONG HeapVirtualAffinity; /* 0fa8 */
1063 ULONG CurrentTransactionHandle; /* 0fac */
1064 ULONG ActiveFrame; /* 0fb0 */
1065 ULONG FlsSlots; /* 0fb4 */
1066 ULONG PreferredLanguages; /* 0fb8 */
1067 ULONG UserPrefLanguages; /* 0fbc */
1068 ULONG MergedPrefLanguages; /* 0fc0 */
1069 ULONG MuiImpersonation; /* 0fc4 */
1070 USHORT CrossTebFlags; /* 0fc8 */
1071 USHORT SameTebFlags; /* 0fca */
1072 ULONG TxnScopeEnterCallback; /* 0fcc */
1073 ULONG TxnScopeExitCallback; /* 0fd0 */
1074 ULONG TxnScopeContext; /* 0fd4 */
1075 ULONG LockCount; /* 0fd8 */
1076 LONG WowTebOffset; /* 0fdc */
1077 ULONG ResourceRetValue; /* 0fe0 */
1078 ULONG ReservedForWdf; /* 0fe4 */
1079 ULONGLONG ReservedForCrt; /* 0fe8 */
1080 GUID EffectiveContainerId; /* 0ff0 */
1081 } TEB32;
1083 C_ASSERT( sizeof(TEB32) == 0x1000 );
1085 typedef struct _TEB64
1087 NT_TIB64 Tib; /* 0000 */
1088 ULONG64 EnvironmentPointer; /* 0038 */
1089 CLIENT_ID64 ClientId; /* 0040 */
1090 ULONG64 ActiveRpcHandle; /* 0050 */
1091 ULONG64 ThreadLocalStoragePointer; /* 0058 */
1092 ULONG64 Peb; /* 0060 */
1093 ULONG LastErrorValue; /* 0068 */
1094 ULONG CountOfOwnedCriticalSections; /* 006c */
1095 ULONG64 CsrClientThread; /* 0070 */
1096 ULONG64 Win32ThreadInfo; /* 0078 */
1097 ULONG User32Reserved[26]; /* 0080 */
1098 ULONG UserReserved[5]; /* 00e8 */
1099 ULONG64 WOW32Reserved; /* 0100 */
1100 ULONG CurrentLocale; /* 0108 */
1101 ULONG FpSoftwareStatusRegister; /* 010c */
1102 ULONG64 ReservedForDebuggerInstrumentation[16]; /* 0110 */
1103 ULONG64 SystemReserved1[30]; /* 0190 */
1104 char PlaceholderCompatibilityMode; /* 0280 */
1105 BOOLEAN PlaceholderHydrationAlwaysExplicit;/* 0281 */
1106 char PlaceholderReserved[10]; /* 0282 */
1107 DWORD ProxiedProcessId; /* 028c */
1108 ACTIVATION_CONTEXT_STACK64 ActivationContextStack; /* 0290 */
1109 UCHAR WorkingOnBehalfOfTicket[8]; /* 02b8 */
1110 LONG ExceptionCode; /* 02c0 */
1111 ULONG64 ActivationContextStackPointer; /* 02c8 */
1112 ULONG64 InstrumentationCallbackSp; /* 02d0 */
1113 ULONG64 InstrumentationCallbackPreviousPc; /* 02d8 */
1114 ULONG64 InstrumentationCallbackPreviousSp; /* 02e0 */
1115 ULONG TxFsContext; /* 02e8 */
1116 BOOLEAN InstrumentationCallbackDisabled; /* 02ec */
1117 BOOLEAN UnalignedLoadStoreExceptions; /* 02ed */
1118 ULONG64 GdiTebBatch[0x9d]; /* 02f0 */
1119 CLIENT_ID64 RealClientId; /* 07d8 */
1120 ULONG64 GdiCachedProcessHandle; /* 07e8 */
1121 ULONG GdiClientPID; /* 07f0 */
1122 ULONG GdiClientTID; /* 07f4 */
1123 ULONG64 GdiThreadLocaleInfo; /* 07f8 */
1124 ULONG64 Win32ClientInfo[62]; /* 0800 */
1125 ULONG64 glDispatchTable[233]; /* 09f0 */
1126 ULONG64 glReserved1[29]; /* 1138 */
1127 ULONG64 glReserved2; /* 1220 */
1128 ULONG64 glSectionInfo; /* 1228 */
1129 ULONG64 glSection; /* 1230 */
1130 ULONG64 glTable; /* 1238 */
1131 ULONG64 glCurrentRC; /* 1240 */
1132 ULONG64 glContext; /* 1248 */
1133 ULONG LastStatusValue; /* 1250 */
1134 UNICODE_STRING64 StaticUnicodeString; /* 1258 */
1135 WCHAR StaticUnicodeBuffer[261]; /* 1268 */
1136 ULONG64 DeallocationStack; /* 1478 */
1137 ULONG64 TlsSlots[64]; /* 1480 */
1138 LIST_ENTRY64 TlsLinks; /* 1680 */
1139 ULONG64 Vdm; /* 1690 */
1140 ULONG64 ReservedForNtRpc; /* 1698 */
1141 ULONG64 DbgSsReserved[2]; /* 16a0 */
1142 ULONG HardErrorMode; /* 16b0 */
1143 ULONG64 Instrumentation[11]; /* 16b8 */
1144 GUID ActivityId; /* 1710 */
1145 ULONG64 SubProcessTag; /* 1720 */
1146 ULONG64 PerflibData; /* 1728 */
1147 ULONG64 EtwTraceData; /* 1730 */
1148 ULONG64 WinSockData; /* 1738 */
1149 ULONG GdiBatchCount; /* 1740 */
1150 ULONG IdealProcessorValue; /* 1744 */
1151 ULONG GuaranteedStackBytes; /* 1748 */
1152 ULONG64 ReservedForPerf; /* 1750 */
1153 ULONG64 ReservedForOle; /* 1758 */
1154 ULONG WaitingOnLoaderLock; /* 1760 */
1155 ULONG64 SavedPriorityState; /* 1768 */
1156 ULONG64 ReservedForCodeCoverage; /* 1770 */
1157 ULONG64 ThreadPoolData; /* 1778 */
1158 ULONG64 TlsExpansionSlots; /* 1780 */
1159 union {
1160 ULONG64 DeallocationBStore; /* 1788 */
1161 ULONG64 ChpeV2CpuAreaInfo; /* 1788 */
1162 } DUMMYUNIONNAME;
1163 ULONG64 BStoreLimit; /* 1790 */
1164 ULONG MuiGeneration; /* 1798 */
1165 ULONG IsImpersonating; /* 179c */
1166 ULONG64 NlsCache; /* 17a0 */
1167 ULONG64 ShimData; /* 17a8 */
1168 ULONG HeapVirtualAffinity; /* 17b0 */
1169 ULONG64 CurrentTransactionHandle; /* 17b8 */
1170 ULONG64 ActiveFrame; /* 17c0 */
1171 ULONG64 FlsSlots; /* 17c8 */
1172 ULONG64 PreferredLanguages; /* 17d0 */
1173 ULONG64 UserPrefLanguages; /* 17d8 */
1174 ULONG64 MergedPrefLanguages; /* 17e0 */
1175 ULONG MuiImpersonation; /* 17e8 */
1176 USHORT CrossTebFlags; /* 17ec */
1177 USHORT SameTebFlags; /* 17ee */
1178 ULONG64 TxnScopeEnterCallback; /* 17f0 */
1179 ULONG64 TxnScopeExitCallback; /* 17f8 */
1180 ULONG64 TxnScopeContext; /* 1800 */
1181 ULONG LockCount; /* 1808 */
1182 LONG WowTebOffset; /* 180c */
1183 ULONG64 ResourceRetValue; /* 1810 */
1184 ULONG64 ReservedForWdf; /* 1818 */
1185 ULONGLONG ReservedForCrt; /* 1820 */
1186 GUID EffectiveContainerId; /* 1828 */
1187 } TEB64;
1189 C_ASSERT( sizeof(TEB64) == 0x1838 );
1191 #ifdef _WIN64
1192 C_ASSERT( sizeof(PEB) == sizeof(PEB64) );
1193 C_ASSERT( sizeof(TEB) == sizeof(TEB64) );
1194 #else
1195 C_ASSERT( sizeof(PEB) == sizeof(PEB32) );
1196 C_ASSERT( sizeof(TEB) == sizeof(TEB32) );
1197 #endif
1199 /* reserved TEB64 TLS slots for Wow64 */
1200 #define WOW64_TLS_CPURESERVED 1
1201 #define WOW64_TLS_TEMPLIST 3
1202 #define WOW64_TLS_USERCALLBACKDATA 5
1203 #define WOW64_TLS_APCLIST 7
1204 #define WOW64_TLS_FILESYSREDIR 8
1205 #define WOW64_TLS_WOW64INFO 10
1206 #define WOW64_TLS_MAX_NUMBER 19
1209 /***********************************************************************
1210 * Enums
1213 typedef enum _FILE_INFORMATION_CLASS {
1214 FileDirectoryInformation = 1,
1215 FileFullDirectoryInformation,
1216 FileBothDirectoryInformation,
1217 FileBasicInformation,
1218 FileStandardInformation,
1219 FileInternalInformation,
1220 FileEaInformation,
1221 FileAccessInformation,
1222 FileNameInformation,
1223 FileRenameInformation,
1224 FileLinkInformation,
1225 FileNamesInformation,
1226 FileDispositionInformation,
1227 FilePositionInformation,
1228 FileFullEaInformation,
1229 FileModeInformation,
1230 FileAlignmentInformation,
1231 FileAllInformation,
1232 FileAllocationInformation,
1233 FileEndOfFileInformation,
1234 FileAlternateNameInformation,
1235 FileStreamInformation,
1236 FilePipeInformation,
1237 FilePipeLocalInformation,
1238 FilePipeRemoteInformation,
1239 FileMailslotQueryInformation,
1240 FileMailslotSetInformation,
1241 FileCompressionInformation,
1242 FileObjectIdInformation,
1243 FileCompletionInformation,
1244 FileMoveClusterInformation,
1245 FileQuotaInformation,
1246 FileReparsePointInformation,
1247 FileNetworkOpenInformation,
1248 FileAttributeTagInformation,
1249 FileTrackingInformation,
1250 FileIdBothDirectoryInformation,
1251 FileIdFullDirectoryInformation,
1252 FileValidDataLengthInformation,
1253 FileShortNameInformation,
1254 FileIoCompletionNotificationInformation,
1255 FileIoStatusBlockRangeInformation,
1256 FileIoPriorityHintInformation,
1257 FileSfioReserveInformation,
1258 FileSfioVolumeInformation,
1259 FileHardLinkInformation,
1260 FileProcessIdsUsingFileInformation,
1261 FileNormalizedNameInformation,
1262 FileNetworkPhysicalNameInformation,
1263 FileIdGlobalTxDirectoryInformation,
1264 FileIsRemoteDeviceInformation,
1265 FileAttributeCacheInformation,
1266 FileNumaNodeInformation,
1267 FileStandardLinkInformation,
1268 FileRemoteProtocolInformation,
1269 FileRenameInformationBypassAccessCheck,
1270 FileLinkInformationBypassAccessCheck,
1271 FileVolumeNameInformation,
1272 FileIdInformation,
1273 FileIdExtdDirectoryInformation,
1274 FileReplaceCompletionInformation,
1275 FileHardLinkFullIdInformation,
1276 FileIdExtdBothDirectoryInformation,
1277 FileDispositionInformationEx,
1278 FileRenameInformationEx,
1279 FileRenameInformationExBypassAccessCheck,
1280 FileDesiredStorageClassInformation,
1281 FileStatInformation,
1282 FileMemoryPartitionInformation,
1283 FileStatLxInformation,
1284 FileCaseSensitiveInformation,
1285 FileLinkInformationEx,
1286 FileLinkInformationExBypassAccessCheck,
1287 FileStorageReserveIdInformation,
1288 FileCaseSensitiveInformationForceAccessCheck,
1289 FileKnownFolderInformation,
1290 FileMaximumInformation
1291 } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
1293 typedef struct _FILE_DIRECTORY_INFORMATION {
1294 ULONG NextEntryOffset;
1295 ULONG FileIndex;
1296 LARGE_INTEGER CreationTime;
1297 LARGE_INTEGER LastAccessTime;
1298 LARGE_INTEGER LastWriteTime;
1299 LARGE_INTEGER ChangeTime;
1300 LARGE_INTEGER EndOfFile;
1301 LARGE_INTEGER AllocationSize;
1302 ULONG FileAttributes;
1303 ULONG FileNameLength;
1304 WCHAR FileName[ANYSIZE_ARRAY];
1305 } FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION;
1307 typedef struct _FILE_FULL_DIRECTORY_INFORMATION {
1308 ULONG NextEntryOffset;
1309 ULONG FileIndex;
1310 LARGE_INTEGER CreationTime;
1311 LARGE_INTEGER LastAccessTime;
1312 LARGE_INTEGER LastWriteTime;
1313 LARGE_INTEGER ChangeTime;
1314 LARGE_INTEGER EndOfFile;
1315 LARGE_INTEGER AllocationSize;
1316 ULONG FileAttributes;
1317 ULONG FileNameLength;
1318 ULONG EaSize;
1319 WCHAR FileName[ANYSIZE_ARRAY];
1320 } FILE_FULL_DIRECTORY_INFORMATION, *PFILE_FULL_DIRECTORY_INFORMATION,
1321 FILE_FULL_DIR_INFORMATION, *PFILE_FULL_DIR_INFORMATION;
1323 typedef struct _FILE_ID_FULL_DIRECTORY_INFORMATION {
1324 ULONG NextEntryOffset;
1325 ULONG FileIndex;
1326 LARGE_INTEGER CreationTime;
1327 LARGE_INTEGER LastAccessTime;
1328 LARGE_INTEGER LastWriteTime;
1329 LARGE_INTEGER ChangeTime;
1330 LARGE_INTEGER EndOfFile;
1331 LARGE_INTEGER AllocationSize;
1332 ULONG FileAttributes;
1333 ULONG FileNameLength;
1334 ULONG EaSize;
1335 LARGE_INTEGER FileId;
1336 WCHAR FileName[ANYSIZE_ARRAY];
1337 } FILE_ID_FULL_DIRECTORY_INFORMATION, *PFILE_ID_FULL_DIRECTORY_INFORMATION;
1339 typedef struct _FILE_BOTH_DIRECTORY_INFORMATION {
1340 ULONG NextEntryOffset;
1341 ULONG FileIndex;
1342 LARGE_INTEGER CreationTime;
1343 LARGE_INTEGER LastAccessTime;
1344 LARGE_INTEGER LastWriteTime;
1345 LARGE_INTEGER ChangeTime;
1346 LARGE_INTEGER EndOfFile;
1347 LARGE_INTEGER AllocationSize;
1348 ULONG FileAttributes;
1349 ULONG FileNameLength;
1350 ULONG EaSize;
1351 CHAR ShortNameLength;
1352 WCHAR ShortName[12];
1353 WCHAR FileName[ANYSIZE_ARRAY];
1354 } FILE_BOTH_DIRECTORY_INFORMATION, *PFILE_BOTH_DIRECTORY_INFORMATION,
1355 FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;
1357 typedef struct _FILE_ID_BOTH_DIRECTORY_INFORMATION {
1358 ULONG NextEntryOffset;
1359 ULONG FileIndex;
1360 LARGE_INTEGER CreationTime;
1361 LARGE_INTEGER LastAccessTime;
1362 LARGE_INTEGER LastWriteTime;
1363 LARGE_INTEGER ChangeTime;
1364 LARGE_INTEGER EndOfFile;
1365 LARGE_INTEGER AllocationSize;
1366 ULONG FileAttributes;
1367 ULONG FileNameLength;
1368 ULONG EaSize;
1369 CHAR ShortNameLength;
1370 WCHAR ShortName[12];
1371 LARGE_INTEGER FileId;
1372 WCHAR FileName[ANYSIZE_ARRAY];
1373 } FILE_ID_BOTH_DIRECTORY_INFORMATION, *PFILE_ID_BOTH_DIRECTORY_INFORMATION;
1375 typedef struct _FILE_ID_GLOBAL_TX_DIR_INFORMATION {
1376 ULONG NextEntryOffset;
1377 ULONG FileIndex;
1378 LARGE_INTEGER CreationTime;
1379 LARGE_INTEGER LastAccessTime;
1380 LARGE_INTEGER LastWriteTime;
1381 LARGE_INTEGER ChangeTime;
1382 LARGE_INTEGER EndOfFile;
1383 LARGE_INTEGER AllocationSize;
1384 ULONG FileAttributes;
1385 ULONG FileNameLength;
1386 LARGE_INTEGER FileId;
1387 GUID LockingTransactionId;
1388 ULONG TxInfoFlags;
1389 WCHAR FileName[ANYSIZE_ARRAY];
1390 } FILE_ID_GLOBAL_TX_DIR_INFORMATION, *PFILE_ID_GLOBAL_TX_DIR_INFORMATION;
1392 typedef struct _FILE_BASIC_INFORMATION {
1393 LARGE_INTEGER CreationTime;
1394 LARGE_INTEGER LastAccessTime;
1395 LARGE_INTEGER LastWriteTime;
1396 LARGE_INTEGER ChangeTime;
1397 ULONG FileAttributes;
1398 } FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
1400 typedef struct _FILE_STANDARD_INFORMATION {
1401 LARGE_INTEGER AllocationSize;
1402 LARGE_INTEGER EndOfFile;
1403 ULONG NumberOfLinks;
1404 BOOLEAN DeletePending;
1405 BOOLEAN Directory;
1406 } FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;
1408 typedef struct _FILE_INTERNAL_INFORMATION {
1409 LARGE_INTEGER IndexNumber;
1410 } FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;
1412 typedef struct _FILE_ID_128 {
1413 UCHAR Identifier[16];
1414 } FILE_ID_128, *PFILE_ID_128;
1416 typedef struct _FILE_ID_INFORMATION {
1417 ULONGLONG VolumeSerialNumber;
1418 FILE_ID_128 FileId;
1419 } FILE_ID_INFORMATION, *PFILE_ID_INFORMATION;
1421 typedef struct _FILE_EA_INFORMATION {
1422 ULONG EaSize;
1423 } FILE_EA_INFORMATION, *PFILE_EA_INFORMATION;
1425 typedef struct _FILE_ACCESS_INFORMATION {
1426 ACCESS_MASK AccessFlags;
1427 } FILE_ACCESS_INFORMATION, *PFILE_ACCESS_INFORMATION;
1429 typedef struct _FILE_NAME_INFORMATION {
1430 ULONG FileNameLength;
1431 WCHAR FileName[1];
1432 } FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
1434 typedef struct _FILE_RENAME_INFORMATION {
1435 union {
1436 BOOLEAN ReplaceIfExists;
1437 ULONG Flags;
1438 } DUMMYUNIONNAME;
1439 HANDLE RootDirectory;
1440 ULONG FileNameLength;
1441 WCHAR FileName[1];
1442 } FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;
1444 #define FILE_RENAME_REPLACE_IF_EXISTS 0x00000001
1445 #define FILE_RENAME_POSIX_SEMANTICS 0x00000002
1446 #define FILE_RENAME_SUPPRESS_PIN_STATE_INHERITANCE 0x00000004
1447 #define FILE_RENAME_SUPPRESS_STORAGE_RESERVE_INHERITANCE 0x00000008
1448 #define FILE_RENAME_NO_INCREASE_AVAILABLE_SPACE 0x00000010
1449 #define FILE_RENAME_NO_DECREASE_AVAILABLE_SPACE 0x00000020
1450 #define FILE_RENAME_PRESERVE_AVAILABLE_SPACE 0x00000030
1451 #define FILE_RENAME_IGNORE_READONLY_ATTRIBUTE 0x00000040
1453 typedef struct _FILE_LINK_INFORMATION {
1454 union {
1455 BOOLEAN ReplaceIfExists;
1456 ULONG Flags;
1457 } DUMMYUNIONNAME;
1458 HANDLE RootDirectory;
1459 ULONG FileNameLength;
1460 WCHAR FileName[1];
1461 } FILE_LINK_INFORMATION, *PFILE_LINK_INFORMATION;
1463 #define FILE_LINK_REPLACE_IF_EXISTS 0x00000001
1464 #define FILE_LINK_POSIX_SEMANTICS 0x00000002
1465 #define FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE 0x00000008
1466 #define FILE_LINK_NO_INCREASE_AVAILABLE_SPACE 0x00000010
1467 #define FILE_LINK_NO_DECREASE_AVAILABLE_SPACE 0x00000020
1468 #define FILE_LINK_PRESERVE_AVAILABLE_SPACE 0x00000030
1469 #define FILE_LINK_IGNORE_READONLY_ATTRIBUTE 0x00000040
1470 #define FILE_LINK_FORCE_RESIZE_TARGET_SR 0x00000080
1471 #define FILE_LINK_FORCE_RESIZE_SOURCE_SR 0x00000100
1472 #define FILE_LINK_FORCE_RESIZE_SR 0x00000180
1474 typedef struct _FILE_NAMES_INFORMATION {
1475 ULONG NextEntryOffset;
1476 ULONG FileIndex;
1477 ULONG FileNameLength;
1478 WCHAR FileName[1];
1479 } FILE_NAMES_INFORMATION, *PFILE_NAMES_INFORMATION;
1481 typedef struct _FILE_DISPOSITION_INFORMATION {
1482 BOOLEAN DoDeleteFile;
1483 } FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION;
1485 typedef struct _FILE_DISPOSITION_INFORMATION_EX {
1486 ULONG Flags;
1487 } FILE_DISPOSITION_INFORMATION_EX, *PFILE_DISPOSITION_INFORMATION_EX;
1489 #define FILE_DISPOSITION_DO_NOT_DELETE 0x00000000
1490 #define FILE_DISPOSITION_DELETE 0x00000001
1491 #define FILE_DISPOSITION_POSIX_SEMANTICS 0x00000002
1492 #define FILE_DISPOSITION_FORCE_IMAGE_SECTION_CHECK 0x00000004
1493 #define FILE_DISPOSITION_ON_CLOSE 0x00000008
1494 #define FILE_DISPOSITION_IGNORE_READONLY_ATTRIBUTE 0x00000010
1496 typedef struct _FILE_POSITION_INFORMATION {
1497 LARGE_INTEGER CurrentByteOffset;
1498 } FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;
1500 typedef struct _FILE_ALIGNMENT_INFORMATION {
1501 ULONG AlignmentRequirement;
1502 } FILE_ALIGNMENT_INFORMATION, *PFILE_ALIGNMENT_INFORMATION;
1504 typedef struct _FILE_ALLOCATION_INFORMATION {
1505 LARGE_INTEGER AllocationSize;
1506 } FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION;
1508 typedef struct _FILE_END_OF_FILE_INFORMATION {
1509 LARGE_INTEGER EndOfFile;
1510 } FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;
1512 typedef struct _FILE_NETWORK_OPEN_INFORMATION {
1513 LARGE_INTEGER CreationTime;
1514 LARGE_INTEGER LastAccessTime;
1515 LARGE_INTEGER LastWriteTime;
1516 LARGE_INTEGER ChangeTime;
1517 LARGE_INTEGER AllocationSize;
1518 LARGE_INTEGER EndOfFile;
1519 ULONG FileAttributes;
1520 } FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;
1522 typedef struct _FILE_FULL_EA_INFORMATION {
1523 ULONG NextEntryOffset;
1524 UCHAR Flags;
1525 UCHAR EaNameLength;
1526 USHORT EaValueLength;
1527 CHAR EaName[1];
1528 } FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
1530 typedef struct _FILE_MODE_INFORMATION {
1531 ULONG Mode;
1532 } FILE_MODE_INFORMATION, *PFILE_MODE_INFORMATION;
1534 typedef struct _FILE_STREAM_INFORMATION
1536 ULONG NextEntryOffset;
1537 ULONG StreamNameLength;
1538 LARGE_INTEGER StreamSize;
1539 LARGE_INTEGER StreamAllocationSize;
1540 WCHAR StreamName[1];
1541 } FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
1543 typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION
1545 ULONG FileAttributes;
1546 ULONG ReparseTag;
1547 } FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION;
1549 typedef struct _FILE_MAILSLOT_QUERY_INFORMATION {
1550 ULONG MaximumMessageSize;
1551 ULONG MailslotQuota;
1552 ULONG NextMessageSize;
1553 ULONG MessagesAvailable;
1554 LARGE_INTEGER ReadTimeout;
1555 } FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION;
1557 typedef struct _FILE_MAILSLOT_SET_INFORMATION {
1558 LARGE_INTEGER ReadTimeout;
1559 } FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION;
1561 typedef struct _FILE_PIPE_INFORMATION {
1562 ULONG ReadMode;
1563 ULONG CompletionMode;
1564 } FILE_PIPE_INFORMATION, *PFILE_PIPE_INFORMATION;
1566 typedef struct _FILE_PIPE_LOCAL_INFORMATION {
1567 ULONG NamedPipeType;
1568 ULONG NamedPipeConfiguration;
1569 ULONG MaximumInstances;
1570 ULONG CurrentInstances;
1571 ULONG InboundQuota;
1572 ULONG ReadDataAvailable;
1573 ULONG OutboundQuota;
1574 ULONG WriteQuotaAvailable;
1575 ULONG NamedPipeState;
1576 ULONG NamedPipeEnd;
1577 } FILE_PIPE_LOCAL_INFORMATION, *PFILE_PIPE_LOCAL_INFORMATION;
1579 #define FILE_PIPE_DISCONNECTED_STATE 0x00000001
1580 #define FILE_PIPE_LISTENING_STATE 0x00000002
1581 #define FILE_PIPE_CONNECTED_STATE 0x00000003
1582 #define FILE_PIPE_CLOSING_STATE 0x00000004
1584 typedef struct _FILE_OBJECTID_BUFFER
1586 BYTE ObjectId[16];
1587 union
1589 struct
1591 BYTE BirthVolumeId[16];
1592 BYTE BirthObjectId[16];
1593 BYTE DomainId[16];
1594 } DUMMYSTRUCTNAME;
1595 BYTE ExtendedInfo[48];
1596 } DUMMYUNIONNAME;
1597 } FILE_OBJECTID_BUFFER, *PFILE_OBJECTID_BUFFER;
1599 typedef struct _FILE_OBJECTID_INFORMATION {
1600 LONGLONG FileReference;
1601 UCHAR ObjectId[16];
1602 union {
1603 struct {
1604 UCHAR BirthVolumeId[16];
1605 UCHAR BirthObjectId[16];
1606 UCHAR DomainId[16];
1607 } DUMMYSTRUCTNAME;
1608 UCHAR ExtendedInfo[48];
1609 } DUMMYUNIONNAME;
1610 } FILE_OBJECTID_INFORMATION, *PFILE_OBJECTID_INFORMATION;
1612 typedef struct _FILE_QUOTA_INFORMATION {
1613 ULONG NextEntryOffset;
1614 ULONG SidLength;
1615 LARGE_INTEGER ChangeTime;
1616 LARGE_INTEGER QuotaUsed;
1617 LARGE_INTEGER QuotaThreshold;
1618 LARGE_INTEGER QuotaLimit;
1619 SID Sid;
1620 } FILE_QUOTA_INFORMATION, *PFILE_QUOTA_INFORMATION;
1622 typedef struct _FILE_REPARSE_POINT_INFORMATION {
1623 LONGLONG FileReference;
1624 ULONG Tag;
1625 } FILE_REPARSE_POINT_INFORMATION, *PFILE_REPARSE_POINT_INFORMATION;
1627 typedef struct _FILE_ALL_INFORMATION {
1628 FILE_BASIC_INFORMATION BasicInformation;
1629 FILE_STANDARD_INFORMATION StandardInformation;
1630 FILE_INTERNAL_INFORMATION InternalInformation;
1631 FILE_EA_INFORMATION EaInformation;
1632 FILE_ACCESS_INFORMATION AccessInformation;
1633 FILE_POSITION_INFORMATION PositionInformation;
1634 FILE_MODE_INFORMATION ModeInformation;
1635 FILE_ALIGNMENT_INFORMATION AlignmentInformation;
1636 FILE_NAME_INFORMATION NameInformation;
1637 } FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION;
1639 typedef struct _FILE_IO_COMPLETION_NOTIFICATION_INFORMATION {
1640 ULONG Flags;
1641 } FILE_IO_COMPLETION_NOTIFICATION_INFORMATION, *PFILE_IO_COMPLETION_NOTIFICATION_INFORMATION;
1643 #define FILE_SKIP_COMPLETION_PORT_ON_SUCCESS 0x1
1644 #define FILE_SKIP_SET_EVENT_ON_HANDLE 0x2
1645 #define FILE_SKIP_SET_USER_EVENT_ON_FAST_IO 0x4
1647 typedef struct _PROCESS_INSTRUMENTATION_CALLBACK_INFORMATION
1649 ULONG Version;
1650 ULONG Reserved;
1651 VOID *Callback;
1652 } PROCESS_INSTRUMENTATION_CALLBACK_INFORMATION, *PPROCESS_INSTRUMENTATION_CALLBACK_INFORMATION;
1654 typedef enum _FSINFOCLASS {
1655 FileFsVolumeInformation = 1,
1656 FileFsLabelInformation,
1657 FileFsSizeInformation,
1658 FileFsDeviceInformation,
1659 FileFsAttributeInformation,
1660 FileFsControlInformation,
1661 FileFsFullSizeInformation,
1662 FileFsObjectIdInformation,
1663 FileFsDriverPathInformation,
1664 FileFsVolumeFlagsInformation,
1665 FileFsSectorSizeInformation,
1666 FileFsDataCopyInformation,
1667 FileFsMetadataSizeInformation,
1668 FileFsFullSizeInformationEx,
1669 FileFsMaximumInformation
1670 } FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
1672 typedef enum _KEY_INFORMATION_CLASS {
1673 KeyBasicInformation,
1674 KeyNodeInformation,
1675 KeyFullInformation,
1676 KeyNameInformation,
1677 KeyCachedInformation,
1678 KeyFlagsInformation,
1679 KeyVirtualizationInformation,
1680 KeyHandleTagsInformation,
1681 KeyTrustInformation,
1682 KeyLayerInformation,
1683 MaxKeyInfoClass
1684 } KEY_INFORMATION_CLASS;
1686 typedef enum _KEY_VALUE_INFORMATION_CLASS {
1687 KeyValueBasicInformation,
1688 KeyValueFullInformation,
1689 KeyValuePartialInformation,
1690 KeyValueFullInformationAlign64,
1691 KeyValuePartialInformationAlign64,
1692 KeyValueLayerInformation,
1693 } KEY_VALUE_INFORMATION_CLASS;
1695 typedef enum _OBJECT_INFORMATION_CLASS {
1696 ObjectBasicInformation,
1697 ObjectNameInformation,
1698 ObjectTypeInformation,
1699 ObjectTypesInformation,
1700 ObjectHandleFlagInformation,
1701 ObjectSessionInformation,
1702 ObjectSessionObjectInformation,
1703 } OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS;
1705 typedef enum _PROCESSINFOCLASS {
1706 ProcessBasicInformation = 0,
1707 ProcessQuotaLimits = 1,
1708 ProcessIoCounters = 2,
1709 ProcessVmCounters = 3,
1710 ProcessTimes = 4,
1711 ProcessBasePriority = 5,
1712 ProcessRaisePriority = 6,
1713 ProcessDebugPort = 7,
1714 ProcessExceptionPort = 8,
1715 ProcessAccessToken = 9,
1716 ProcessLdtInformation = 10,
1717 ProcessLdtSize = 11,
1718 ProcessDefaultHardErrorMode = 12,
1719 ProcessIoPortHandlers = 13,
1720 ProcessPooledUsageAndLimits = 14,
1721 ProcessWorkingSetWatch = 15,
1722 ProcessUserModeIOPL = 16,
1723 ProcessEnableAlignmentFaultFixup = 17,
1724 ProcessPriorityClass = 18,
1725 ProcessWx86Information = 19,
1726 ProcessHandleCount = 20,
1727 ProcessAffinityMask = 21,
1728 ProcessPriorityBoost = 22,
1729 ProcessDeviceMap = 23,
1730 ProcessSessionInformation = 24,
1731 ProcessForegroundInformation = 25,
1732 ProcessWow64Information = 26,
1733 ProcessImageFileName = 27,
1734 ProcessLUIDDeviceMapsEnabled = 28,
1735 ProcessBreakOnTermination = 29,
1736 ProcessDebugObjectHandle = 30,
1737 ProcessDebugFlags = 31,
1738 ProcessHandleTracing = 32,
1739 ProcessIoPriority = 33,
1740 ProcessExecuteFlags = 34,
1741 ProcessTlsInformation = 35,
1742 ProcessCookie = 36,
1743 ProcessImageInformation = 37,
1744 ProcessCycleTime = 38,
1745 ProcessPagePriority = 39,
1746 ProcessInstrumentationCallback = 40,
1747 ProcessThreadStackAllocation = 41,
1748 ProcessWorkingSetWatchEx = 42,
1749 ProcessImageFileNameWin32 = 43,
1750 ProcessImageFileMapping = 44,
1751 ProcessAffinityUpdateMode = 45,
1752 ProcessMemoryAllocationMode = 46,
1753 ProcessGroupInformation = 47,
1754 ProcessTokenVirtualizationEnabled = 48,
1755 ProcessConsoleHostProcess = 49,
1756 ProcessWindowInformation = 50,
1757 ProcessHandleInformation = 51,
1758 ProcessMitigationPolicy = 52,
1759 ProcessDynamicFunctionTableInformation = 53,
1760 ProcessHandleCheckingMode = 54,
1761 ProcessKeepAliveCount = 55,
1762 ProcessRevokeFileHandles = 56,
1763 ProcessWorkingSetControl = 57,
1764 ProcessHandleTable = 58,
1765 ProcessCheckStackExtentsMode = 59,
1766 ProcessCommandLineInformation = 60,
1767 ProcessProtectionInformation = 61,
1768 ProcessMemoryExhaustion = 62,
1769 ProcessFaultInformation = 63,
1770 ProcessTelemetryIdInformation = 64,
1771 ProcessCommitReleaseInformation = 65,
1772 ProcessDefaultCpuSetsInformation = 66,
1773 ProcessAllowedCpuSetsInformation = 67,
1774 ProcessSubsystemProcess = 68,
1775 ProcessJobMemoryInformation = 69,
1776 ProcessInPrivate = 70,
1777 ProcessRaiseUMExceptionOnInvalidHandleClose = 71,
1778 ProcessIumChallengeResponse = 72,
1779 ProcessChildProcessInformation = 73,
1780 ProcessHighGraphicsPriorityInformation = 74,
1781 ProcessSubsystemInformation = 75,
1782 ProcessEnergyValues = 76,
1783 ProcessPowerThrottlingState = 77,
1784 ProcessReserved3Information = 78,
1785 ProcessWin32kSyscallFilterInformation = 79,
1786 ProcessDisableSystemAllowedCpuSets = 80,
1787 ProcessWakeInformation = 81,
1788 ProcessEnergyTrackingState = 82,
1789 ProcessManageWritesToExecutableMemory = 83,
1790 ProcessCaptureTrustletLiveDump = 84,
1791 ProcessTelemetryCoverage = 85,
1792 ProcessEnclaveInformation = 86,
1793 ProcessEnableReadWriteVmLogging = 87,
1794 ProcessUptimeInformation = 88,
1795 ProcessImageSection = 89,
1796 ProcessDebugAuthInformation = 90,
1797 ProcessSystemResourceManagement = 91,
1798 ProcessSequenceNumber = 92,
1799 ProcessLoaderDetour = 93,
1800 ProcessSecurityDomainInformation = 94,
1801 ProcessCombineSecurityDomainsInformation = 95,
1802 ProcessEnableLogging = 96,
1803 ProcessLeapSecondInformation = 97,
1804 ProcessFiberShadowStackAllocation = 98,
1805 ProcessFreeFiberShadowStackAllocation = 99,
1806 ProcessAltSystemCallInformation = 100,
1807 ProcessDynamicEHContinuationTargets = 101,
1808 ProcessDynamicEnforcedCetCompatibleRanges = 102,
1809 ProcessCreateStateChange = 103,
1810 ProcessApplyStateChange = 104,
1811 ProcessEnableOptionalXStateFeatures = 105,
1812 ProcessAltPrefetchParam = 106,
1813 ProcessAssignCpuPartitions = 107,
1814 ProcessPriorityClassEx = 108,
1815 ProcessMembershipInformation = 109,
1816 ProcessEffectiveIoPriority = 110,
1817 ProcessEffectivePagePriority = 111,
1818 MaxProcessInfoClass,
1819 #ifdef __WINESRC__
1820 ProcessWineMakeProcessSystem = 1000,
1821 ProcessWineLdtCopy,
1822 #endif
1823 } PROCESSINFOCLASS;
1825 #define MEM_EXECUTE_OPTION_DISABLE 0x01
1826 #define MEM_EXECUTE_OPTION_ENABLE 0x02
1827 #define MEM_EXECUTE_OPTION_DISABLE_THUNK_EMULATION 0x04
1828 #define MEM_EXECUTE_OPTION_PERMANENT 0x08
1830 typedef enum _SECTION_INHERIT {
1831 ViewShare = 1,
1832 ViewUnmap = 2
1833 } SECTION_INHERIT;
1835 typedef enum _SYSTEM_INFORMATION_CLASS {
1836 SystemBasicInformation = 0,
1837 SystemCpuInformation = 1,
1838 SystemPerformanceInformation = 2,
1839 SystemTimeOfDayInformation = 3, /* was SystemTimeInformation */
1840 SystemPathInformation = 4,
1841 SystemProcessInformation = 5,
1842 SystemCallCountInformation = 6,
1843 SystemDeviceInformation = 7,
1844 SystemProcessorPerformanceInformation = 8,
1845 SystemFlagsInformation = 9,
1846 SystemCallTimeInformation = 10,
1847 SystemModuleInformation = 11,
1848 SystemLocksInformation = 12,
1849 SystemStackTraceInformation = 13,
1850 SystemPagedPoolInformation = 14,
1851 SystemNonPagedPoolInformation = 15,
1852 SystemHandleInformation = 16,
1853 SystemObjectInformation = 17,
1854 SystemPageFileInformation = 18,
1855 SystemVdmInstemulInformation = 19,
1856 SystemVdmBopInformation = 20,
1857 SystemFileCacheInformation = 21,
1858 SystemPoolTagInformation = 22,
1859 SystemInterruptInformation = 23,
1860 SystemDpcBehaviorInformation = 24,
1861 SystemFullMemoryInformation = 25,
1862 SystemNotImplemented6 = 25,
1863 SystemLoadGdiDriverInformation = 26,
1864 SystemUnloadGdiDriverInformation = 27,
1865 SystemTimeAdjustmentInformation = 28,
1866 SystemTimeAdjustment = 28,
1867 SystemSummaryMemoryInformation = 29,
1868 SystemMirrorMemoryInformation = 30,
1869 SystemPerformanceTraceInformation = 31,
1870 SystemObsolete0 = 32,
1871 SystemExceptionInformation = 33,
1872 SystemCrashDumpStateInformation = 34,
1873 SystemKernelDebuggerInformation = 35,
1874 SystemContextSwitchInformation = 36,
1875 SystemRegistryQuotaInformation = 37,
1876 SystemExtendServiceTableInformation = 38,
1877 SystemPrioritySeparation = 39,
1878 SystemVerifierAddDriverInformation = 40,
1879 SystemVerifierRemoveDriverInformation = 41,
1880 SystemProcessorIdleInformation = 42,
1881 SystemLegacyDriverInformation = 43,
1882 SystemCurrentTimeZoneInformation = 44,
1883 SystemLookasideInformation = 45,
1884 SystemTimeSlipNotification = 46,
1885 SystemSessionCreate = 47,
1886 SystemSessionDetach = 48,
1887 SystemSessionInformation = 49,
1888 SystemRangeStartInformation = 50,
1889 SystemVerifierInformation = 51,
1890 SystemVerifierThunkExtend = 52,
1891 SystemSessionProcessesInformation = 53,
1892 SystemLoadGdiDriverInSystemSpace = 54,
1893 SystemNumaProcessorMap = 55,
1894 SystemPrefetcherInformation = 56,
1895 SystemExtendedProcessInformation = 57,
1896 SystemRecommendedSharedDataAlignment = 58,
1897 SystemComPlusPackage = 59,
1898 SystemNumaAvailableMemory = 60,
1899 SystemProcessorPowerInformation = 61,
1900 SystemEmulationBasicInformation = 62,
1901 SystemEmulationProcessorInformation = 63,
1902 SystemExtendedHandleInformation = 64,
1903 SystemLostDelayedWriteInformation = 65,
1904 SystemBigPoolInformation = 66,
1905 SystemSessionPoolTagInformation = 67,
1906 SystemSessionMappedViewInformation = 68,
1907 SystemHotpatchInformation = 69,
1908 SystemObjectSecurityMode = 70,
1909 SystemWatchdogTimerHandler = 71,
1910 SystemWatchdogTimerInformation = 72,
1911 SystemLogicalProcessorInformation = 73,
1912 SystemWow64SharedInformationObsolete = 74,
1913 SystemRegisterFirmwareTableInformationHandler = 75,
1914 SystemFirmwareTableInformation = 76,
1915 SystemModuleInformationEx = 77,
1916 SystemVerifierTriageInformation = 78,
1917 SystemSuperfetchInformation = 79,
1918 SystemMemoryListInformation = 80,
1919 SystemFileCacheInformationEx = 81,
1920 SystemThreadPriorityClientIdInformation = 82,
1921 SystemProcessorIdleCycleTimeInformation = 83,
1922 SystemVerifierCancellationInformation = 84,
1923 SystemProcessorPowerInformationEx = 85,
1924 SystemRefTraceInformation = 86,
1925 SystemSpecialPoolInformation = 87,
1926 SystemProcessIdInformation = 88,
1927 SystemErrorPortInformation = 89,
1928 SystemBootEnvironmentInformation = 90,
1929 SystemHypervisorInformation = 91,
1930 SystemVerifierInformationEx = 92,
1931 SystemTimeZoneInformation = 93,
1932 SystemImageFileExecutionOptionsInformation = 94,
1933 SystemCoverageInformation = 95,
1934 SystemPrefetchPatchInformation = 96,
1935 SystemVerifierFaultsInformation = 97,
1936 SystemSystemPartitionInformation = 98,
1937 SystemSystemDiskInformation = 99,
1938 SystemProcessorPerformanceDistribution = 100,
1939 SystemNumaProximityNodeInformation = 101,
1940 SystemDynamicTimeZoneInformation = 102,
1941 SystemCodeIntegrityInformation = 103,
1942 SystemProcessorMicrocodeUpdateInformation = 104,
1943 SystemProcessorBrandString = 105,
1944 SystemVirtualAddressInformation = 106,
1945 SystemLogicalProcessorInformationEx = 107,
1946 SystemProcessorCycleTimeInformation = 108,
1947 SystemStoreInformation = 109,
1948 SystemRegistryAppendString = 110,
1949 SystemAitSamplingValue = 111,
1950 SystemVhdBootInformation = 112,
1951 SystemCpuQuotaInformation = 113,
1952 SystemNativeBasicInformation = 114,
1953 SystemErrorPortTimeouts = 115,
1954 SystemLowPriorityIoInformation = 116,
1955 SystemTpmBootEntropyInformation = 117,
1956 SystemVerifierCountersInformation = 118,
1957 SystemPagedPoolInformationEx = 119,
1958 SystemSystemPtesInformationEx = 120,
1959 SystemNodeDistanceInformation = 121,
1960 SystemAcpiAuditInformation = 122,
1961 SystemBasicPerformanceInformation = 123,
1962 SystemQueryPerformanceCounterInformation = 124,
1963 SystemSessionBigPoolInformation = 125,
1964 SystemBootGraphicsInformation = 126,
1965 SystemScrubPhysicalMemoryInformation = 127,
1966 SystemBadPageInformation = 128,
1967 SystemProcessorProfileControlArea = 129,
1968 SystemCombinePhysicalMemoryInformation = 130,
1969 SystemEntropyInterruptTimingInformation = 131,
1970 SystemConsoleInformation = 132,
1971 SystemPlatformBinaryInformation = 133,
1972 SystemPolicyInformation = 134,
1973 SystemHypervisorProcessorCountInformation = 135,
1974 SystemDeviceDataInformation = 136,
1975 SystemDeviceDataEnumerationInformation = 137,
1976 SystemMemoryTopologyInformation = 138,
1977 SystemMemoryChannelInformation = 139,
1978 SystemBootLogoInformation = 140,
1979 SystemProcessorPerformanceInformationEx = 141,
1980 SystemCriticalProcessErrorLogInformation = 142,
1981 SystemSecureBootPolicyInformation = 143,
1982 SystemPageFileInformationEx = 144,
1983 SystemSecureBootInformation = 145,
1984 SystemEntropyInterruptTimingRawInformation = 146,
1985 SystemPortableWorkspaceEfiLauncherInformation = 147,
1986 SystemFullProcessInformation = 148,
1987 SystemKernelDebuggerInformationEx = 149,
1988 SystemBootMetadataInformation = 150,
1989 SystemSoftRebootInformation = 151,
1990 SystemElamCertificateInformation = 152,
1991 SystemOfflineDumpConfigInformation = 153,
1992 SystemProcessorFeaturesInformation = 154,
1993 SystemRegistryReconciliationInformation = 155,
1994 SystemEdidInformation = 156,
1995 SystemManufacturingInformation = 157,
1996 SystemEnergyEstimationConfigInformation = 158,
1997 SystemHypervisorDetailInformation = 159,
1998 SystemProcessorCycleStatsInformation = 160,
1999 SystemVmGenerationCountInformation = 161,
2000 SystemTrustedPlatformModuleInformation = 162,
2001 SystemKernelDebuggerFlags = 163,
2002 SystemCodeIntegrityPolicyInformation = 164,
2003 SystemIsolatedUserModeInformation = 165,
2004 SystemHardwareSecurityTestInterfaceResultsInformation = 166,
2005 SystemSingleModuleInformation = 167,
2006 SystemAllowedCpuSetsInformation = 168,
2007 SystemVsmProtectionInformation = 169,
2008 SystemInterruptCpuSetsInformation = 170,
2009 SystemSecureBootPolicyFullInformation = 171,
2010 SystemCodeIntegrityPolicyFullInformation = 172,
2011 SystemAffinitizedInterruptProcessorInformation = 173,
2012 SystemRootSiloInformation = 174,
2013 SystemCpuSetInformation = 175,
2014 SystemCpuSetTagInformation = 176,
2015 SystemWin32WerStartCallout = 177,
2016 SystemSecureKernelProfileInformation = 178,
2017 SystemCodeIntegrityPlatformManifestInformation = 179,
2018 SystemInterruptSteeringInformation = 180,
2019 SystemSupportedProcessorArchitectures = 181,
2020 SystemMemoryUsageInformation = 182,
2021 SystemCodeIntegrityCertificateInformation = 183,
2022 SystemPhysicalMemoryInformation = 184,
2023 SystemControlFlowTransition = 185,
2024 SystemKernelDebuggingAllowed = 186,
2025 SystemActivityModerationExeState = 187,
2026 SystemActivityModerationUserSettings = 188,
2027 SystemCodeIntegrityPoliciesFullInformation = 189,
2028 SystemCodeIntegrityUnlockInformation = 190,
2029 SystemIntegrityQuotaInformation = 191,
2030 SystemFlushInformation = 192,
2031 SystemProcessorIdleMaskInformation = 193,
2032 SystemSecureDumpEncryptionInformation = 194,
2033 SystemWriteConstraintInformation = 195,
2034 SystemKernelVaShadowInformation = 196,
2035 SystemHypervisorSharedPageInformation = 197,
2036 SystemFirmwareBootPerformanceInformation = 198,
2037 SystemCodeIntegrityVerificationInformation = 199,
2038 SystemFirmwarePartitionInformation = 200,
2039 SystemSpeculationControlInformation = 201,
2040 SystemDmaGuardPolicyInformation = 202,
2041 SystemEnclaveLaunchControlInformation = 203,
2042 SystemWorkloadAllowedCpuSetsInformation = 204,
2043 SystemCodeIntegrityUnlockModeInformation = 205,
2044 SystemLeapSecondInformation = 206,
2045 SystemFlags2Information = 207,
2046 SystemSecurityModelInformation = 208,
2047 SystemCodeIntegritySyntheticCacheInformation = 209,
2048 SystemFeatureConfigurationInformation = 210,
2049 SystemFeatureConfigurationSectionInformation = 211,
2050 SystemFeatureUsageSubscriptionInformation = 212,
2051 SystemSecureSpeculationControlInformation = 213,
2052 SystemSpacesBootInformation = 214,
2053 SystemFwRamdiskInformation = 215,
2054 SystemWheaIpmiHardwareInformation = 216,
2055 SystemDifSetRuleClassInformation = 217,
2056 SystemDifClearRuleClassInformation = 218,
2057 SystemDifApplyPluginVerificationOnDriver = 219,
2058 SystemDifRemovePluginVerificationOnDriver = 220,
2059 SystemShadowStackInformation = 221,
2060 SystemBuildVersionInformation = 222,
2061 SystemPoolLimitInformation = 223,
2062 SystemCodeIntegrityAddDynamicStore = 224,
2063 SystemCodeIntegrityClearDynamicStores = 225,
2064 SystemDifPoolTrackingInformation = 226,
2065 SystemPoolZeroingInformation = 227,
2066 SystemDpcWatchdogInformation = 228,
2067 SystemDpcWatchdogInformation2 = 229,
2068 SystemSupportedProcessorArchitectures2 = 230,
2069 SystemSingleProcessorRelationshipInformation = 231,
2070 SystemXfgCheckFailureInformation = 232,
2071 SystemIommuStateInformation = 233,
2072 SystemHypervisorMinrootInformation = 234,
2073 SystemHypervisorBootPagesInformation = 235,
2074 SystemPointerAuthInformation = 236,
2075 SystemSecureKernelDebuggerInformation = 237,
2076 SystemOriginalImageFeatureInformation = 238,
2077 #ifdef __WINESRC__
2078 SystemWineVersionInformation = 1000,
2079 #endif
2080 } SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS;
2082 typedef struct _SYSTEM_CODEINTEGRITY_INFORMATION
2084 ULONG Length;
2085 ULONG CodeIntegrityOptions;
2086 } SYSTEM_CODEINTEGRITY_INFORMATION, *PSYSTEM_CODEINTEGRITY_INFORMATION;
2088 #define CODEINTEGRITY_OPTION_ENABLED 0x0001
2089 #define CODEINTEGRITY_OPTION_TESTSIGN 0x0002
2090 #define CODEINTEGRITY_OPTION_UMCI_ENABLED 0x0004
2091 #define CODEINTEGRITY_OPTION_UMCI_AUDITMODE_ENABLED 0x0008
2092 #define CODEINTEGRITY_OPTION_UMCI_EXCLUSIONPATHS_ENABLED 0x0010
2093 #define CODEINTEGRITY_OPTION_TEST_BUILD 0x0020
2094 #define CODEINTEGRITY_OPTION_PREPRODUCTION_BUILD 0x0040
2095 #define CODEINTEGRITY_OPTION_DEBUGMODE_ENABLED 0x0080
2096 #define CODEINTEGRITY_OPTION_FLIGHT_BUILD 0x0100
2097 #define CODEINTEGRITY_OPTION_FLIGHTING_ENABLED 0x0200
2098 #define CODEINTEGRITY_OPTION_HVCI_KMCI_ENABLED 0x0400
2099 #define CODEINTEGRITY_OPTION_HVCI_KMCI_AUDITMODE_ENABLED 0x0800
2100 #define CODEINTEGRITY_OPTION_HVCI_KMCI_STRICTMODE_ENABLED 0x1000
2101 #define CODEINTEGRITY_OPTION_HVCI_IUM_ENABLED 0x2000
2103 typedef enum _THREADINFOCLASS {
2104 ThreadBasicInformation = 0,
2105 ThreadTimes,
2106 ThreadPriority,
2107 ThreadBasePriority,
2108 ThreadAffinityMask,
2109 ThreadImpersonationToken,
2110 ThreadDescriptorTableEntry,
2111 ThreadEnableAlignmentFaultFixup,
2112 ThreadEventPair_Reusable,
2113 ThreadQuerySetWin32StartAddress,
2114 ThreadZeroTlsCell,
2115 ThreadPerformanceCount,
2116 ThreadAmILastThread,
2117 ThreadIdealProcessor,
2118 ThreadPriorityBoost,
2119 ThreadSetTlsArrayAddress,
2120 ThreadIsIoPending,
2121 ThreadHideFromDebugger,
2122 ThreadBreakOnTermination,
2123 ThreadSwitchLegacyState,
2124 ThreadIsTerminated,
2125 ThreadLastSystemCall,
2126 ThreadIoPriority,
2127 ThreadCycleTime,
2128 ThreadPagePriority,
2129 ThreadActualBasePriority,
2130 ThreadTebInformation,
2131 ThreadCSwitchMon,
2132 ThreadCSwitchPmu,
2133 ThreadWow64Context,
2134 ThreadGroupInformation,
2135 ThreadUmsInformation,
2136 ThreadCounterProfiling,
2137 ThreadIdealProcessorEx,
2138 ThreadCpuAccountingInformation,
2139 ThreadSuspendCount,
2140 ThreadHeterogeneousCpuPolicy,
2141 ThreadContainerId,
2142 ThreadNameInformation,
2143 ThreadSelectedCpuSets,
2144 ThreadSystemThreadInformation,
2145 ThreadActualGroupAffinity,
2146 ThreadDynamicCodePolicyInfo,
2147 ThreadExplicitCaseSensitivity,
2148 ThreadWorkOnBehalfTicket,
2149 ThreadSubsystemInformation,
2150 ThreadDbgkWerReportActive,
2151 ThreadAttachContainer,
2152 ThreadManageWritesToExecutableMemory,
2153 ThreadPowerThrottlingState,
2154 ThreadWorkloadClass,
2155 ThreadCreateStateChange,
2156 ThreadApplyStateChange,
2157 ThreadStrongerBadHandleChecks,
2158 ThreadEffectiveIoPriority,
2159 ThreadEffectivePagePriority,
2160 MaxThreadInfoClass,
2161 #ifdef __WINESRC__
2162 ThreadWineNativeThreadName = 1000,
2163 #endif
2164 } THREADINFOCLASS;
2166 typedef struct _THREAD_BASIC_INFORMATION
2168 NTSTATUS ExitStatus;
2169 PVOID TebBaseAddress;
2170 CLIENT_ID ClientId;
2171 ULONG_PTR AffinityMask;
2172 LONG Priority;
2173 LONG BasePriority;
2174 } THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION;
2176 typedef struct _THREAD_DESCRIPTOR_INFORMATION
2178 DWORD Selector;
2179 LDT_ENTRY Entry;
2180 } THREAD_DESCRIPTOR_INFORMATION, *PTHREAD_DESCRIPTOR_INFORMATION;
2182 typedef struct _THREAD_NAME_INFORMATION
2184 UNICODE_STRING ThreadName;
2185 } THREAD_NAME_INFORMATION, *PTHREAD_NAME_INFORMATION;
2187 typedef struct _KERNEL_USER_TIMES {
2188 LARGE_INTEGER CreateTime;
2189 LARGE_INTEGER ExitTime;
2190 LARGE_INTEGER KernelTime;
2191 LARGE_INTEGER UserTime;
2192 } KERNEL_USER_TIMES, *PKERNEL_USER_TIMES;
2194 typedef enum _WINSTATIONINFOCLASS {
2195 WinStationInformation = 8
2196 } WINSTATIONINFOCLASS;
2198 typedef enum _MEMORY_INFORMATION_CLASS {
2199 MemoryBasicInformation,
2200 MemoryWorkingSetInformation,
2201 MemoryMappedFilenameInformation,
2202 MemoryRegionInformation,
2203 MemoryWorkingSetExInformation,
2204 MemorySharedCommitInformation,
2205 MemoryImageInformation,
2206 MemoryRegionInformationEx,
2207 MemoryPrivilegedBasicInformation,
2208 MemoryEnclaveImageInformation,
2209 MemoryBasicInformationCapped,
2210 MemoryPhysicalContiguityInformation,
2211 MemoryBadInformation,
2212 MemoryBadInformationAllProcesses,
2213 #ifdef __WINESRC__
2214 MemoryWineUnixFuncs = 1000,
2215 MemoryWineUnixWow64Funcs,
2216 #endif
2217 } MEMORY_INFORMATION_CLASS;
2219 typedef struct _MEMORY_SECTION_NAME
2221 UNICODE_STRING SectionFileName;
2222 } MEMORY_SECTION_NAME, *PMEMORY_SECTION_NAME;
2224 typedef union _MEMORY_WORKING_SET_EX_BLOCK {
2225 ULONG_PTR Flags;
2226 struct {
2227 ULONG_PTR Valid : 1;
2228 ULONG_PTR ShareCount : 3;
2229 ULONG_PTR Win32Protection : 11;
2230 ULONG_PTR Shared : 1;
2231 ULONG_PTR Node : 6;
2232 ULONG_PTR Locked : 1;
2233 ULONG_PTR LargePage : 1;
2234 } DUMMYSTRUCTNAME;
2235 } MEMORY_WORKING_SET_EX_BLOCK, *PMEMORY_WORKING_SET_EX_BLOCK;
2237 typedef struct _MEMORY_WORKING_SET_EX_INFORMATION {
2238 PVOID VirtualAddress;
2239 MEMORY_WORKING_SET_EX_BLOCK VirtualAttributes;
2240 } MEMORY_WORKING_SET_EX_INFORMATION, *PMEMORY_WORKING_SET_EX_INFORMATION;
2242 typedef struct _MEMORY_REGION_INFORMATION
2244 PVOID AllocationBase;
2245 ULONG AllocationProtect;
2246 union
2248 ULONG RegionType;
2249 struct
2251 ULONG Private : 1;
2252 ULONG MappedDataFile : 1;
2253 ULONG MappedImage : 1;
2254 ULONG MappedPageFile : 1;
2255 ULONG MappedPhysical : 1;
2256 ULONG DirectMapped : 1;
2257 ULONG Reserved : 26;
2258 } DUMMYSTRUCTNAME;
2259 } DUMMYUNIONNAME;
2260 SIZE_T RegionSize;
2261 SIZE_T CommitSize;
2262 ULONG_PTR PartitionId;
2263 ULONG_PTR NodePreference;
2264 } MEMORY_REGION_INFORMATION, *PMEMORY_REGION_INFORMATION;
2266 typedef struct _MEMORY_IMAGE_INFORMATION
2268 PVOID ImageBase;
2269 SIZE_T SizeOfImage;
2270 union
2272 ULONG ImageFlags;
2273 struct
2275 ULONG ImagePartialMap : 1;
2276 ULONG ImageNotExecutable : 1;
2277 ULONG ImageSigningLevel : 4;
2278 ULONG Reserved : 26;
2281 } MEMORY_IMAGE_INFORMATION, *PMEMORY_IMAGE_INFORMATION;
2283 typedef enum _MUTANT_INFORMATION_CLASS
2285 MutantBasicInformation
2286 } MUTANT_INFORMATION_CLASS, *PMUTANT_INFORMATION_CLASS;
2288 typedef struct _MUTANT_BASIC_INFORMATION {
2289 LONG CurrentCount;
2290 BOOLEAN OwnedByCaller;
2291 BOOLEAN AbandonedState;
2292 } MUTANT_BASIC_INFORMATION, *PMUTANT_BASIC_INFORMATION;
2294 typedef enum _TIMER_INFORMATION_CLASS
2296 TimerBasicInformation = 0
2297 } TIMER_INFORMATION_CLASS;
2299 typedef struct _TIMER_BASIC_INFORMATION
2301 LARGE_INTEGER RemainingTime;
2302 BOOLEAN TimerState;
2303 } TIMER_BASIC_INFORMATION, *PTIMER_BASIC_INFORMATION;
2305 typedef enum
2307 VmPrefetchInformation,
2308 VmPagePriorityInformation,
2309 VmCfgCallTargetInformation,
2310 VmPageDirtyStateInformation,
2311 VmImageHotPatchInformation,
2312 VmPhysicalContiguityInformation,
2313 VmVirtualMachinePrepopulateInformation,
2314 VmRemoveFromWorkingSetInformation,
2315 } VIRTUAL_MEMORY_INFORMATION_CLASS, *PVIRTUAL_MEMORY_INFORMATION_CLASS;
2317 typedef struct _MEMORY_RANGE_ENTRY
2319 PVOID VirtualAddress;
2320 SIZE_T NumberOfBytes;
2321 } MEMORY_RANGE_ENTRY, *PMEMORY_RANGE_ENTRY;
2324 /* return type of RtlDetermineDosPathNameType_U (FIXME: not the correct names) */
2325 typedef enum
2327 INVALID_PATH = 0,
2328 UNC_PATH, /* "//foo" */
2329 ABSOLUTE_DRIVE_PATH, /* "c:/foo" */
2330 RELATIVE_DRIVE_PATH, /* "c:foo" */
2331 ABSOLUTE_PATH, /* "/foo" */
2332 RELATIVE_PATH, /* "foo" */
2333 DEVICE_PATH, /* "//./foo" */
2334 UNC_DOT_PATH /* "//." */
2335 } DOS_PATHNAME_TYPE;
2338 /***********************************************************************
2339 * Types and data structures
2342 /* This is used by NtQuerySystemInformation */
2343 typedef struct _SYSTEM_THREAD_INFORMATION
2344 { /* win32/win64 */
2345 LARGE_INTEGER KernelTime; /* 00/00 */
2346 LARGE_INTEGER UserTime; /* 08/08 */
2347 LARGE_INTEGER CreateTime; /* 10/10 */
2348 DWORD dwTickCount; /* 18/18 */
2349 LPVOID StartAddress; /* 1c/20 */
2350 CLIENT_ID ClientId; /* 20/28 */
2351 DWORD dwCurrentPriority; /* 28/38 */
2352 DWORD dwBasePriority; /* 2c/3c */
2353 DWORD dwContextSwitches; /* 30/40 */
2354 DWORD dwThreadState; /* 34/44 */
2355 DWORD dwWaitReason; /* 38/48 */
2356 DWORD dwUnknown; /* 3c/4c */
2357 } SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION;
2359 typedef struct _SYSTEM_EXTENDED_THREAD_INFORMATION
2361 SYSTEM_THREAD_INFORMATION ThreadInfo; /* 00/00 */
2362 void *StackBase; /* 40/50 */
2363 void *StackLimit; /* 44/58 */
2364 void *Win32StartAddress; /* 48/60 */
2365 void *TebBase; /* 4c/68 */
2366 ULONG_PTR Reserved2; /* 50/70 */
2367 ULONG_PTR Reserved3; /* 54/78 */
2368 ULONG_PTR Reserved4; /* 58/80 */
2369 } SYSTEM_EXTENDED_THREAD_INFORMATION, *PSYSTEM_EXTENDED_THREAD_INFORMATION;
2371 typedef struct _IO_STATUS_BLOCK {
2372 union {
2373 NTSTATUS Status;
2374 PVOID Pointer;
2375 } DUMMYUNIONNAME;
2377 ULONG_PTR Information;
2378 } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
2380 typedef void (WINAPI * PIO_APC_ROUTINE)(PVOID,PIO_STATUS_BLOCK,ULONG);
2382 typedef struct _KEY_BASIC_INFORMATION {
2383 LARGE_INTEGER LastWriteTime;
2384 ULONG TitleIndex;
2385 ULONG NameLength;
2386 WCHAR Name[1];
2387 } KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
2389 typedef struct _KEY_NODE_INFORMATION
2391 LARGE_INTEGER LastWriteTime;
2392 ULONG TitleIndex;
2393 ULONG ClassOffset;
2394 ULONG ClassLength;
2395 ULONG NameLength;
2396 WCHAR Name[1];
2397 /* Class[1]; */
2398 } KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
2400 typedef struct _KEY_FULL_INFORMATION
2402 LARGE_INTEGER LastWriteTime;
2403 ULONG TitleIndex;
2404 ULONG ClassOffset;
2405 ULONG ClassLength;
2406 ULONG SubKeys;
2407 ULONG MaxNameLen;
2408 ULONG MaxClassLen;
2409 ULONG Values;
2410 ULONG MaxValueNameLen;
2411 ULONG MaxValueDataLen;
2412 WCHAR Class[1];
2413 } KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
2415 typedef struct _KEY_NAME_INFORMATION {
2416 ULONG NameLength;
2417 WCHAR Name[1];
2418 } KEY_NAME_INFORMATION, *PKEY_NAME_INFORMATION;
2420 typedef struct _KEY_CACHED_INFORMATION
2422 LARGE_INTEGER LastWriteTime;
2423 ULONG TitleIndex;
2424 ULONG SubKeys;
2425 ULONG MaxNameLen;
2426 ULONG Values;
2427 ULONG MaxValueNameLen;
2428 ULONG MaxValueDataLen;
2429 ULONG NameLength;
2430 } KEY_CACHED_INFORMATION, *PKEY_CACHED_INFORMATION;
2432 typedef struct _KEY_VALUE_ENTRY
2434 PUNICODE_STRING ValueName;
2435 ULONG DataLength;
2436 ULONG DataOffset;
2437 ULONG Type;
2438 } KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
2440 typedef struct _KEY_VALUE_BASIC_INFORMATION {
2441 ULONG TitleIndex;
2442 ULONG Type;
2443 ULONG NameLength;
2444 WCHAR Name[1];
2445 } KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
2447 typedef struct _KEY_VALUE_FULL_INFORMATION {
2448 ULONG TitleIndex;
2449 ULONG Type;
2450 ULONG DataOffset;
2451 ULONG DataLength;
2452 ULONG NameLength;
2453 WCHAR Name[1];
2454 } KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
2456 typedef struct _KEY_VALUE_PARTIAL_INFORMATION {
2457 ULONG TitleIndex;
2458 ULONG Type;
2459 ULONG DataLength;
2460 UCHAR Data[1];
2461 } KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
2463 typedef struct _KEY_VALUE_PARTIAL_INFORMATION_ALIGN64 {
2464 ULONG Type;
2465 ULONG DataLength;
2466 UCHAR Data[1];
2467 } KEY_VALUE_PARTIAL_INFORMATION_ALIGN64, *PKEY_VALUE_PARTIAL_INFORMATION_ALIGN64;
2469 #ifndef __OBJECT_ATTRIBUTES_DEFINED__
2470 #define __OBJECT_ATTRIBUTES_DEFINED__
2471 typedef struct _OBJECT_ATTRIBUTES {
2472 ULONG Length;
2473 HANDLE RootDirectory;
2474 PUNICODE_STRING ObjectName;
2475 ULONG Attributes;
2476 PVOID SecurityDescriptor; /* type SECURITY_DESCRIPTOR */
2477 PVOID SecurityQualityOfService; /* type SECURITY_QUALITY_OF_SERVICE */
2478 } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
2479 #endif
2481 typedef struct _OBJECT_HANDLE_FLAG_INFORMATION {
2482 BOOLEAN Inherit;
2483 BOOLEAN ProtectFromClose;
2484 } OBJECT_HANDLE_FLAG_INFORMATION, *POBJECT_HANDLE_FLAG_INFORMATION;
2486 typedef struct _OBJECT_BASIC_INFORMATION {
2487 ULONG Attributes;
2488 ACCESS_MASK GrantedAccess;
2489 ULONG HandleCount;
2490 ULONG PointerCount;
2491 ULONG PagedPoolUsage;
2492 ULONG NonPagedPoolUsage;
2493 ULONG Reserved[3];
2494 ULONG NameInformationLength;
2495 ULONG TypeInformationLength;
2496 ULONG SecurityDescriptorLength;
2497 LARGE_INTEGER CreateTime;
2498 } OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION;
2500 typedef struct _OBJECT_NAME_INFORMATION {
2501 UNICODE_STRING Name;
2502 } OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
2504 typedef struct __OBJECT_TYPE_INFORMATION {
2505 UNICODE_STRING TypeName;
2506 ULONG TotalNumberOfObjects;
2507 ULONG TotalNumberOfHandles;
2508 ULONG TotalPagedPoolUsage;
2509 ULONG TotalNonPagedPoolUsage;
2510 ULONG TotalNamePoolUsage;
2511 ULONG TotalHandleTableUsage;
2512 ULONG HighWaterNumberOfObjects;
2513 ULONG HighWaterNumberOfHandles;
2514 ULONG HighWaterPagedPoolUsage;
2515 ULONG HighWaterNonPagedPoolUsage;
2516 ULONG HighWaterNamePoolUsage;
2517 ULONG HighWaterHandleTableUsage;
2518 ULONG InvalidAttributes;
2519 GENERIC_MAPPING GenericMapping;
2520 ULONG ValidAccessMask;
2521 BOOLEAN SecurityRequired;
2522 BOOLEAN MaintainHandleCount;
2523 UCHAR TypeIndex;
2524 CHAR ReservedByte;
2525 ULONG PoolType;
2526 ULONG DefaultPagedPoolCharge;
2527 ULONG DefaultNonPagedPoolCharge;
2528 } OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION;
2530 typedef struct _OBJECT_TYPES_INFORMATION
2532 ULONG NumberOfTypes;
2533 } OBJECT_TYPES_INFORMATION, *POBJECT_TYPES_INFORMATION;
2535 typedef struct _PROCESS_BASIC_INFORMATION {
2536 #ifdef __WINESRC__
2537 NTSTATUS ExitStatus;
2538 PEB *PebBaseAddress;
2539 ULONG_PTR AffinityMask;
2540 LONG BasePriority;
2541 ULONG_PTR UniqueProcessId;
2542 ULONG_PTR InheritedFromUniqueProcessId;
2543 #else
2544 PVOID Reserved1;
2545 PPEB PebBaseAddress;
2546 PVOID Reserved2[2];
2547 ULONG_PTR UniqueProcessId;
2548 PVOID Reserved3;
2549 #endif
2550 } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
2552 #define PROCESS_PRIOCLASS_IDLE 1
2553 #define PROCESS_PRIOCLASS_NORMAL 2
2554 #define PROCESS_PRIOCLASS_HIGH 3
2555 #define PROCESS_PRIOCLASS_REALTIME 4
2556 #define PROCESS_PRIOCLASS_BELOW_NORMAL 5
2557 #define PROCESS_PRIOCLASS_ABOVE_NORMAL 6
2559 typedef struct _PROCESS_PRIORITY_CLASS {
2560 BOOLEAN Foreground;
2561 UCHAR PriorityClass;
2562 } PROCESS_PRIORITY_CLASS, *PPROCESS_PRIORITY_CLASS;
2564 typedef struct _PROCESS_CYCLE_TIME_INFORMATION {
2565 ULONGLONG AccumulatedCycles;
2566 ULONGLONG CurrentCycleCount;
2567 } PROCESS_CYCLE_TIME_INFORMATION, *PPROCESS_CYCLE_TIME_INFORMATION;
2569 typedef struct _PROCESS_STACK_ALLOCATION_INFORMATION
2571 SIZE_T ReserveSize;
2572 SIZE_T ZeroBits;
2573 PVOID StackBase;
2574 } PROCESS_STACK_ALLOCATION_INFORMATION, *PPROCESS_STACK_ALLOCATION_INFORMATION;
2576 typedef struct _PROCESS_STACK_ALLOCATION_INFORMATION_EX
2578 ULONG PreferredNode;
2579 ULONG Reserved0;
2580 ULONG Reserved1;
2581 ULONG Reserved2;
2582 PROCESS_STACK_ALLOCATION_INFORMATION AllocInfo;
2583 } PROCESS_STACK_ALLOCATION_INFORMATION_EX, *PPROCESS_STACK_ALLOCATION_INFORMATION_EX;
2585 typedef struct _RTL_HEAP_DEFINITION {
2586 ULONG Length; /* = sizeof(RTL_HEAP_DEFINITION) */
2588 ULONG Unknown[11];
2589 } RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION;
2591 typedef struct _RTL_RWLOCK {
2592 RTL_CRITICAL_SECTION rtlCS;
2594 HANDLE hSharedReleaseSemaphore;
2595 UINT uSharedWaiters;
2597 HANDLE hExclusiveReleaseSemaphore;
2598 UINT uExclusiveWaiters;
2600 INT iNumberActive;
2601 HANDLE hOwningThreadId;
2602 DWORD dwTimeoutBoost;
2603 PVOID pDebugInfo;
2604 } RTL_RWLOCK, *LPRTL_RWLOCK;
2606 /* System Information Class 0x00 */
2608 typedef struct _SYSTEM_BASIC_INFORMATION {
2609 #ifdef __WINESRC__
2610 DWORD unknown;
2611 ULONG KeMaximumIncrement;
2612 ULONG PageSize;
2613 ULONG MmNumberOfPhysicalPages;
2614 ULONG MmLowestPhysicalPage;
2615 ULONG MmHighestPhysicalPage;
2616 ULONG_PTR AllocationGranularity;
2617 PVOID LowestUserAddress;
2618 PVOID HighestUserAddress;
2619 ULONG_PTR ActiveProcessorsAffinityMask;
2620 BYTE NumberOfProcessors;
2621 #else
2622 BYTE Reserved1[24];
2623 PVOID Reserved2[4];
2624 CCHAR NumberOfProcessors;
2625 #endif
2626 } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
2628 /* System Information Class 0x01 */
2630 typedef struct _SYSTEM_CPU_INFORMATION {
2631 USHORT ProcessorArchitecture;
2632 USHORT ProcessorLevel;
2633 USHORT ProcessorRevision;
2634 USHORT MaximumProcessors;
2635 ULONG ProcessorFeatureBits;
2636 } SYSTEM_CPU_INFORMATION, *PSYSTEM_CPU_INFORMATION;
2638 /* definitions of bits in the Feature set for the x86 processors */
2639 #define CPU_FEATURE_VME 0x00000005 /* Virtual 86 Mode Extensions */
2640 #define CPU_FEATURE_TSC 0x00000002 /* Time Stamp Counter available */
2641 #define CPU_FEATURE_CMOV 0x00000008 /* Conditional Move instruction*/
2642 #define CPU_FEATURE_PGE 0x00000014 /* Page table Entry Global bit */
2643 #define CPU_FEATURE_PSE 0x00000024 /* Page Size Extension */
2644 #define CPU_FEATURE_MTRR 0x00000040 /* Memory Type Range Registers */
2645 #define CPU_FEATURE_CX8 0x00000080 /* Compare and eXchange 8 byte instr. */
2646 #define CPU_FEATURE_MMX 0x00000100 /* Multi Media eXtensions */
2647 #define CPU_FEATURE_X86 0x00000200 /* seems to be always ON, on the '86 */
2648 #define CPU_FEATURE_PAT 0x00000400 /* Page Attribute Table */
2649 #define CPU_FEATURE_FXSR 0x00000800 /* FXSAVE and FXSTORE instructions */
2650 #define CPU_FEATURE_SEP 0x00001000 /* SYSENTER and SYSEXIT instructions */
2651 #define CPU_FEATURE_SSE 0x00002000 /* SSE extensions (ext. MMX) */
2652 #define CPU_FEATURE_3DNOW 0x00004000 /* 3DNOW instructions available */
2653 #define CPU_FEATURE_SSE2 0x00010000 /* SSE2 extensions (XMMI64) */
2654 #define CPU_FEATURE_DS 0x00020000 /* Debug Store */
2655 #define CPU_FEATURE_HTT 0x00040000 /* Hyper Threading Technology */
2656 #define CPU_FEATURE_SSE3 0x00080000 /* SSE3 extensions */
2657 #define CPU_FEATURE_CX128 0x00100000 /* cmpxchg16b instruction */
2658 #define CPU_FEATURE_XSAVE 0x00800000 /* XSAVE instructions */
2659 #define CPU_FEATURE_2NDLEV 0x04000000 /* Second-level address translation */
2660 #define CPU_FEATURE_VIRT 0x08000000 /* Virtualization support */
2661 #define CPU_FEATURE_RDFS 0x10000000 /* RDFSBASE etc. instructions */
2662 #define CPU_FEATURE_NX 0x20000000 /* Data execution prevention */
2664 /* FIXME: following values are made up, actual flags are unknown */
2665 #define CPU_FEATURE_SSSE3 0x00008000 /* SSSE3 instructions */
2666 #define CPU_FEATURE_SSE41 0x01000000 /* SSE41 instructions */
2667 #define CPU_FEATURE_SSE42 0x02000000 /* SSE42 instructions */
2668 #define CPU_FEATURE_AVX 0x40000000 /* AVX instructions */
2669 #define CPU_FEATURE_AVX2 0x80000000 /* AVX2 instructions */
2670 #define CPU_FEATURE_PAE 0x00200000
2671 #define CPU_FEATURE_DAZ 0x00400000
2673 #define CPU_FEATURE_ARM_VFP_32 0x00000001
2674 #define CPU_FEATURE_ARM_NEON 0x00000002
2675 #define CPU_FEATURE_ARM_V8_CRC32 0x00000004
2676 #define CPU_FEATURE_ARM_V8_CRYPTO 0x00000008
2678 typedef struct _SYSTEM_PROCESSOR_FEATURES_INFORMATION
2680 ULONGLONG ProcessorFeatureBits;
2681 ULONGLONG Reserved[3];
2682 } SYSTEM_PROCESSOR_FEATURES_INFORMATION, *PSYSTEM_PROCESSOR_FEATURES_INFORMATION;
2684 /* System Information Class 0x02 */
2686 /* Documented in "Windows NT/2000 Native API Reference" by Gary Nebbett. */
2687 typedef struct _SYSTEM_PERFORMANCE_INFORMATION {
2688 LARGE_INTEGER IdleTime;
2689 LARGE_INTEGER ReadTransferCount;
2690 LARGE_INTEGER WriteTransferCount;
2691 LARGE_INTEGER OtherTransferCount;
2692 ULONG ReadOperationCount;
2693 ULONG WriteOperationCount;
2694 ULONG OtherOperationCount;
2695 ULONG AvailablePages;
2696 ULONG TotalCommittedPages;
2697 ULONG TotalCommitLimit;
2698 ULONG PeakCommitment;
2699 ULONG PageFaults;
2700 ULONG WriteCopyFaults;
2701 ULONG TransitionFaults;
2702 ULONG Reserved1;
2703 ULONG DemandZeroFaults;
2704 ULONG PagesRead;
2705 ULONG PageReadIos;
2706 ULONG Reserved2[2];
2707 ULONG PagefilePagesWritten;
2708 ULONG PagefilePageWriteIos;
2709 ULONG MappedFilePagesWritten;
2710 ULONG MappedFilePageWriteIos;
2711 ULONG PagedPoolUsage;
2712 ULONG NonPagedPoolUsage;
2713 ULONG PagedPoolAllocs;
2714 ULONG PagedPoolFrees;
2715 ULONG NonPagedPoolAllocs;
2716 ULONG NonPagedPoolFrees;
2717 ULONG TotalFreeSystemPtes;
2718 ULONG SystemCodePage;
2719 ULONG TotalSystemDriverPages;
2720 ULONG TotalSystemCodePages;
2721 ULONG SmallNonPagedLookasideListAllocateHits;
2722 ULONG SmallPagedLookasideListAllocateHits;
2723 ULONG Reserved3;
2724 ULONG MmSystemCachePage;
2725 ULONG PagedPoolPage;
2726 ULONG SystemDriverPage;
2727 ULONG FastReadNoWait;
2728 ULONG FastReadWait;
2729 ULONG FastReadResourceMiss;
2730 ULONG FastReadNotPossible;
2731 ULONG FastMdlReadNoWait;
2732 ULONG FastMdlReadWait;
2733 ULONG FastMdlReadResourceMiss;
2734 ULONG FastMdlReadNotPossible;
2735 ULONG MapDataNoWait;
2736 ULONG MapDataWait;
2737 ULONG MapDataNoWaitMiss;
2738 ULONG MapDataWaitMiss;
2739 ULONG PinMappedDataCount;
2740 ULONG PinReadNoWait;
2741 ULONG PinReadWait;
2742 ULONG PinReadNoWaitMiss;
2743 ULONG PinReadWaitMiss;
2744 ULONG CopyReadNoWait;
2745 ULONG CopyReadWait;
2746 ULONG CopyReadNoWaitMiss;
2747 ULONG CopyReadWaitMiss;
2748 ULONG MdlReadNoWait;
2749 ULONG MdlReadWait;
2750 ULONG MdlReadNoWaitMiss;
2751 ULONG MdlReadWaitMiss;
2752 ULONG ReadAheadIos;
2753 ULONG LazyWriteIos;
2754 ULONG LazyWritePages;
2755 ULONG DataFlushes;
2756 ULONG DataPages;
2757 ULONG ContextSwitches;
2758 ULONG FirstLevelTbFills;
2759 ULONG SecondLevelTbFills;
2760 ULONG SystemCalls;
2761 } SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
2763 /* System Information Class 0x03 */
2765 typedef struct _SYSTEM_TIMEOFDAY_INFORMATION {
2766 #ifdef __WINESRC__
2767 LARGE_INTEGER BootTime;
2768 LARGE_INTEGER SystemTime;
2769 LARGE_INTEGER TimeZoneBias;
2770 ULONG TimeZoneId;
2771 ULONG Reserved;
2772 ULONGLONG BootTimeBias;
2773 ULONGLONG SleepTimeBias;
2774 #else
2775 BYTE Reserved1[48];
2776 #endif
2777 } SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION; /* was SYSTEM_TIME_INFORMATION */
2779 /* System Information Class 0x08 */
2781 typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION {
2782 LARGE_INTEGER IdleTime;
2783 LARGE_INTEGER KernelTime;
2784 LARGE_INTEGER UserTime;
2785 LARGE_INTEGER Reserved1[2];
2786 ULONG Reserved2;
2787 } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
2789 /* System Information Class 0x0b */
2791 typedef struct _SYSTEM_DRIVER_INFORMATION {
2792 PVOID pvAddress;
2793 DWORD dwUnknown1;
2794 DWORD dwUnknown2;
2795 DWORD dwEntryIndex;
2796 DWORD dwUnknown3;
2797 char szName[MAX_PATH + 1];
2798 } SYSTEM_DRIVER_INFORMATION, *PSYSTEM_DRIVER_INFORMATION;
2800 /* System Information Class 0x10 */
2802 typedef struct _SYSTEM_HANDLE_ENTRY {
2803 ULONG OwnerPid;
2804 BYTE ObjectType;
2805 BYTE HandleFlags;
2806 USHORT HandleValue;
2807 PVOID ObjectPointer;
2808 ULONG AccessMask;
2809 } SYSTEM_HANDLE_ENTRY, *PSYSTEM_HANDLE_ENTRY;
2811 typedef struct _SYSTEM_HANDLE_INFORMATION {
2812 ULONG Count;
2813 SYSTEM_HANDLE_ENTRY Handle[1];
2814 } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
2816 typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX
2818 void *Object;
2819 ULONG_PTR UniqueProcessId;
2820 ULONG_PTR HandleValue;
2821 ULONG GrantedAccess;
2822 USHORT CreatorBackTraceIndex;
2823 USHORT ObjectTypeIndex;
2824 ULONG HandleAttributes;
2825 ULONG Reserved;
2826 } SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX;
2828 typedef struct _SYSTEM_HANDLE_INFORMATION_EX
2830 ULONG_PTR NumberOfHandles;
2831 ULONG_PTR Reserved;
2832 SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX Handles[1];
2833 } SYSTEM_HANDLE_INFORMATION_EX;
2835 /* System Information Class 0x15 */
2837 typedef struct _SYSTEM_CACHE_INFORMATION {
2838 SIZE_T CurrentSize;
2839 SIZE_T PeakSize;
2840 ULONG PageFaultCount;
2841 SIZE_T MinimumWorkingSet;
2842 SIZE_T MaximumWorkingSet;
2843 SIZE_T CurrentSizeIncludingTransitionInPages;
2844 SIZE_T PeakSizeIncludingTransitionInPages;
2845 ULONG TransitionRePurposeCount;
2846 ULONG Flags;
2847 } SYSTEM_CACHE_INFORMATION, *PSYSTEM_CACHE_INFORMATION;
2849 /* System Information Class 0x17 */
2851 typedef struct _SYSTEM_INTERRUPT_INFORMATION {
2852 ULONG ContextSwitches;
2853 ULONG DpcCount;
2854 ULONG DpcRate;
2855 ULONG TimeIncrement;
2856 ULONG DpcBypassCount;
2857 ULONG ApcBypassCount;
2858 } SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION;
2860 typedef struct _SYSTEM_CONFIGURATION_INFO {
2861 union {
2862 ULONG OemId;
2863 struct {
2864 WORD ProcessorArchitecture;
2865 WORD Reserved;
2866 } tag1;
2867 } tag2;
2868 ULONG PageSize;
2869 PVOID MinimumApplicationAddress;
2870 PVOID MaximumApplicationAddress;
2871 ULONG ActiveProcessorMask;
2872 ULONG NumberOfProcessors;
2873 ULONG ProcessorType;
2874 ULONG AllocationGranularity;
2875 WORD ProcessorLevel;
2876 WORD ProcessorRevision;
2877 } SYSTEM_CONFIGURATION_INFO, *PSYSTEM_CONFIGURATION_INFO;
2879 typedef struct _SYSTEM_EXCEPTION_INFORMATION {
2880 BYTE Reserved1[16];
2881 } SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION;
2883 typedef struct _SYSTEM_LOOKASIDE_INFORMATION {
2884 BYTE Reserved1[32];
2885 } SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION;
2887 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION {
2888 BOOLEAN DebuggerEnabled;
2889 BOOLEAN DebuggerNotPresent;
2890 } SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION;
2892 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION_EX {
2893 BOOLEAN DebuggerAllowed;
2894 BOOLEAN DebuggerEnabled;
2895 BOOLEAN DebuggerPresent;
2896 } SYSTEM_KERNEL_DEBUGGER_INFORMATION_EX, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION_EX;
2898 typedef struct _VM_COUNTERS
2900 SIZE_T PeakVirtualSize;
2901 SIZE_T VirtualSize;
2902 ULONG PageFaultCount;
2903 SIZE_T PeakWorkingSetSize;
2904 SIZE_T WorkingSetSize;
2905 SIZE_T QuotaPeakPagedPoolUsage;
2906 SIZE_T QuotaPagedPoolUsage;
2907 SIZE_T QuotaPeakNonPagedPoolUsage;
2908 SIZE_T QuotaNonPagedPoolUsage;
2909 SIZE_T PagefileUsage;
2910 SIZE_T PeakPagefileUsage;
2911 } VM_COUNTERS, *PVM_COUNTERS;
2913 typedef struct _VM_COUNTERS_EX
2915 SIZE_T PeakVirtualSize;
2916 SIZE_T VirtualSize;
2917 ULONG PageFaultCount;
2918 SIZE_T PeakWorkingSetSize;
2919 SIZE_T WorkingSetSize;
2920 SIZE_T QuotaPeakPagedPoolUsage;
2921 SIZE_T QuotaPagedPoolUsage;
2922 SIZE_T QuotaPeakNonPagedPoolUsage;
2923 SIZE_T QuotaNonPagedPoolUsage;
2924 SIZE_T PagefileUsage;
2925 SIZE_T PeakPagefileUsage;
2926 SIZE_T PrivateUsage;
2927 } VM_COUNTERS_EX, *PVM_COUNTERS_EX;
2929 typedef struct _SYSTEM_PROCESS_INFORMATION {
2930 #ifdef __WINESRC__ /* win32/win64 */
2931 ULONG NextEntryOffset; /* 00/00 */
2932 DWORD dwThreadCount; /* 04/04 */
2933 LARGE_INTEGER WorkingSetPrivateSize; /* 08/08 */
2934 ULONG HardFaultCount; /* 10/10 */
2935 ULONG NumberOfThreadsHighWatermark;/* 14/14 */
2936 ULONGLONG CycleTime; /* 18/18 */
2937 LARGE_INTEGER CreationTime; /* 20/20 */
2938 LARGE_INTEGER UserTime; /* 28/28 */
2939 LARGE_INTEGER KernelTime; /* 30/30 */
2940 UNICODE_STRING ProcessName; /* 38/38 */
2941 DWORD dwBasePriority; /* 40/48 */
2942 HANDLE UniqueProcessId; /* 44/50 */
2943 HANDLE ParentProcessId; /* 48/58 */
2944 ULONG HandleCount; /* 4c/60 */
2945 ULONG SessionId; /* 50/64 */
2946 ULONG_PTR UniqueProcessKey; /* 54/68 */
2947 VM_COUNTERS_EX vmCounters; /* 58/70 */
2948 IO_COUNTERS ioCounters; /* 88/d0 */
2949 SYSTEM_THREAD_INFORMATION ti[1]; /* b8/100 */
2950 #else
2951 ULONG NextEntryOffset; /* 00/00 */
2952 BYTE Reserved1[52]; /* 04/04 */
2953 PVOID Reserved2[3]; /* 38/38 */
2954 HANDLE UniqueProcessId; /* 44/50 */
2955 PVOID Reserved3; /* 48/58 */
2956 ULONG HandleCount; /* 4c/60 */
2957 BYTE Reserved4[4]; /* 50/64 */
2958 PVOID Reserved5[11]; /* 54/68 */
2959 SIZE_T PeakPagefileUsage; /* 80/c0 */
2960 SIZE_T PrivatePageCount; /* 84/c8 */
2961 LARGE_INTEGER Reserved6[6]; /* 88/d0 */
2962 #endif
2963 } SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
2965 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION {
2966 ULONG RegistryQuotaAllowed;
2967 ULONG RegistryQuotaUsed;
2968 PVOID Reserved1;
2969 } SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION;
2971 typedef struct _SYSTEM_TIME_ADJUSTMENT_QUERY {
2972 ULONG TimeAdjustment;
2973 ULONG TimeIncrement;
2974 BOOLEAN TimeAdjustmentDisabled;
2975 } SYSTEM_TIME_ADJUSTMENT_QUERY, *PSYSTEM_TIME_ADJUSTMENT_QUERY;
2977 typedef struct _SYSTEM_TIME_ADJUSTMENT {
2978 ULONG TimeAdjustment;
2979 BOOLEAN TimeAdjustmentDisabled;
2980 } SYSTEM_TIME_ADJUSTMENT, *PSYSTEM_TIME_ADJUSTMENT;
2982 typedef enum _SYSTEM_FIRMWARE_TABLE_ACTION
2984 SystemFirmwareTable_Enumerate = 0,
2985 SystemFirmwareTable_Get = 1
2986 } SYSTEM_FIRMWARE_TABLE_ACTION, *PSYSTEM_FIRMWARE_TABLE_ACTION;
2988 /* System Information Class 0x4C */
2990 typedef struct _SYSTEM_FIRMWARE_TABLE_INFORMATION
2992 ULONG ProviderSignature;
2993 SYSTEM_FIRMWARE_TABLE_ACTION Action;
2994 ULONG TableID;
2995 ULONG TableBufferLength;
2996 UCHAR TableBuffer[1];
2997 } SYSTEM_FIRMWARE_TABLE_INFORMATION, *PSYSTEM_FIRMWARE_TABLE_INFORMATION;
2999 typedef struct _TIME_FIELDS
3000 { CSHORT Year;
3001 CSHORT Month;
3002 CSHORT Day;
3003 CSHORT Hour;
3004 CSHORT Minute;
3005 CSHORT Second;
3006 CSHORT Milliseconds;
3007 CSHORT Weekday;
3008 } TIME_FIELDS, *PTIME_FIELDS;
3010 typedef struct _WINSTATIONINFORMATIONW {
3011 BYTE Reserved2[70];
3012 ULONG LogonId;
3013 BYTE Reserved3[1140];
3014 } WINSTATIONINFORMATIONW, *PWINSTATIONINFORMATIONW;
3016 typedef BOOLEAN (WINAPI * PWINSTATIONQUERYINFORMATIONW)(HANDLE,ULONG,WINSTATIONINFOCLASS,PVOID,ULONG,PULONG);
3018 typedef struct _LDR_RESOURCE_INFO
3020 ULONG_PTR Type;
3021 ULONG_PTR Name;
3022 ULONG Language;
3023 } LDR_RESOURCE_INFO, *PLDR_RESOURCE_INFO;
3026 /* debug buffer definitions */
3028 typedef struct _DEBUG_BUFFER {
3029 HANDLE SectionHandle;
3030 PVOID SectionBase;
3031 PVOID RemoteSectionBase;
3032 ULONG SectionBaseDelta;
3033 HANDLE EventPairHandle;
3034 ULONG Unknown[2];
3035 HANDLE RemoteThreadHandle;
3036 ULONG InfoClassMask;
3037 ULONG SizeOfInfo;
3038 ULONG AllocatedSize;
3039 ULONG SectionSize;
3040 PVOID ModuleInformation;
3041 PVOID BackTraceInformation;
3042 PVOID HeapInformation;
3043 PVOID LockInformation;
3044 PVOID Reserved[8];
3045 } DEBUG_BUFFER, *PDEBUG_BUFFER;
3047 #define PDI_MODULES 0x01
3048 #define PDI_BACKTRACE 0x02
3049 #define PDI_HEAPS 0x04
3050 #define PDI_HEAP_TAGS 0x08
3051 #define PDI_HEAP_BLOCKS 0x10
3052 #define PDI_LOCKS 0x20
3054 typedef struct _DEBUG_MODULE_INFORMATION {
3055 ULONG Reserved[2];
3056 ULONG Base;
3057 ULONG Size;
3058 ULONG Flags;
3059 USHORT Index;
3060 USHORT Unknown;
3061 USHORT LoadCount;
3062 USHORT ModuleNameOffset;
3063 CHAR ImageName[256];
3064 } DEBUG_MODULE_INFORMATION, *PDEBUG_MODULE_INFORMATION;
3066 typedef struct _DEBUG_HEAP_INFORMATION {
3067 ULONG Base;
3068 ULONG Flags;
3069 USHORT Granularity;
3070 USHORT Unknown;
3071 ULONG Allocated;
3072 ULONG Committed;
3073 ULONG TagCount;
3074 ULONG BlockCount;
3075 ULONG Reserved[7];
3076 PVOID Tags;
3077 PVOID Blocks;
3078 } DEBUG_HEAP_INFORMATION, *PDEBUG_HEAP_INFORMATION;
3080 typedef struct _DEBUG_LOCK_INFORMATION {
3081 PVOID Address;
3082 USHORT Type;
3083 USHORT CreatorBackTraceIndex;
3084 ULONG OwnerThreadId;
3085 ULONG ActiveCount;
3086 ULONG ContentionCount;
3087 ULONG EntryCount;
3088 ULONG RecursionCount;
3089 ULONG NumberOfSharedWaiters;
3090 ULONG NumberOfExclusiveWaiters;
3091 } DEBUG_LOCK_INFORMATION, *PDEBUG_LOCK_INFORMATION;
3093 typedef struct _PORT_MESSAGE_HEADER {
3094 USHORT DataSize;
3095 USHORT MessageSize;
3096 USHORT MessageType;
3097 USHORT VirtualRangesOffset;
3098 CLIENT_ID ClientId;
3099 ULONG MessageId;
3100 ULONG SectionSize;
3101 } PORT_MESSAGE_HEADER, *PPORT_MESSAGE_HEADER, PORT_MESSAGE, *PPORT_MESSAGE;
3103 typedef unsigned short RTL_ATOM, *PRTL_ATOM;
3105 typedef enum _ATOM_INFORMATION_CLASS {
3106 AtomBasicInformation = 0,
3107 AtomTableInformation = 1,
3108 } ATOM_INFORMATION_CLASS;
3110 typedef struct _ATOM_BASIC_INFORMATION {
3111 USHORT ReferenceCount;
3112 USHORT Pinned;
3113 USHORT NameLength;
3114 WCHAR Name[1];
3115 } ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION;
3117 /* FIXME: names probably not correct */
3118 typedef struct _RTL_HANDLE
3120 struct _RTL_HANDLE * Next;
3121 } RTL_HANDLE;
3123 /* FIXME: names probably not correct */
3124 typedef struct _RTL_HANDLE_TABLE
3126 ULONG MaxHandleCount; /* 0x00 */
3127 ULONG HandleSize; /* 0x04 */
3128 ULONG Unused[2]; /* 0x08-0x0c */
3129 PVOID NextFree; /* 0x10 */
3130 PVOID FirstHandle; /* 0x14 */
3131 PVOID ReservedMemory; /* 0x18 */
3132 PVOID MaxHandle; /* 0x1c */
3133 } RTL_HANDLE_TABLE;
3135 typedef struct _RTL_ATOM_TABLE_ENTRY
3137 struct _RTL_ATOM_TABLE_ENTRY *HashLink;
3138 WORD HandleIndex;
3139 WORD Atom;
3140 WORD ReferenceCount;
3141 UCHAR Flags;
3142 UCHAR NameLength;
3143 WCHAR Name[1];
3144 } RTL_ATOM_TABLE_ENTRY, *PRTL_ATOM_TABLE_ENTRY;
3146 typedef struct _RTL_ATOM_TABLE
3148 ULONG Signature;
3149 RTL_CRITICAL_SECTION CriticalSection;
3150 RTL_HANDLE_TABLE HandleTable;
3151 ULONG NumberOfBuckets;
3152 RTL_ATOM_TABLE_ENTRY *Buckets[1];
3153 } *RTL_ATOM_TABLE, **PRTL_ATOM_TABLE;
3155 /***********************************************************************
3156 * Defines
3159 /* flags for NtCreateFile and NtOpenFile */
3160 #define FILE_DIRECTORY_FILE 0x00000001
3161 #define FILE_WRITE_THROUGH 0x00000002
3162 #define FILE_SEQUENTIAL_ONLY 0x00000004
3163 #define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
3164 #define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
3165 #define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
3166 #define FILE_NON_DIRECTORY_FILE 0x00000040
3167 #define FILE_CREATE_TREE_CONNECTION 0x00000080
3168 #define FILE_COMPLETE_IF_OPLOCKED 0x00000100
3169 #define FILE_NO_EA_KNOWLEDGE 0x00000200
3170 #define FILE_OPEN_FOR_RECOVERY 0x00000400
3171 #define FILE_RANDOM_ACCESS 0x00000800
3172 #define FILE_DELETE_ON_CLOSE 0x00001000
3173 #define FILE_OPEN_BY_FILE_ID 0x00002000
3174 #define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
3175 #define FILE_NO_COMPRESSION 0x00008000
3176 #define FILE_RESERVE_OPFILTER 0x00100000
3177 #define FILE_OPEN_REPARSE_POINT 0x00200000
3178 #define FILE_OPEN_OFFLINE_FILE 0x00400000
3179 #define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000
3181 #define FILE_ATTRIBUTE_VALID_FLAGS 0x00007fb7
3182 #define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7
3184 /* status for NtCreateFile or NtOpenFile */
3185 #define FILE_SUPERSEDED 0
3186 #define FILE_OPENED 1
3187 #define FILE_CREATED 2
3188 #define FILE_OVERWRITTEN 3
3189 #define FILE_EXISTS 4
3190 #define FILE_DOES_NOT_EXIST 5
3192 /* disposition for NtCreateFile */
3193 #define FILE_SUPERSEDE 0
3194 #define FILE_OPEN 1
3195 #define FILE_CREATE 2
3196 #define FILE_OPEN_IF 3
3197 #define FILE_OVERWRITE 4
3198 #define FILE_OVERWRITE_IF 5
3199 #define FILE_MAXIMUM_DISPOSITION 5
3201 /* Characteristics of a File System */
3202 #define FILE_REMOVABLE_MEDIA 0x00000001
3203 #define FILE_READ_ONLY_DEVICE 0x00000002
3204 #define FILE_FLOPPY_DISKETTE 0x00000004
3205 #define FILE_WRITE_ONE_MEDIA 0x00000008
3206 #define FILE_REMOTE_DEVICE 0x00000010
3207 #define FILE_DEVICE_IS_MOUNTED 0x00000020
3208 #define FILE_VIRTUAL_VOLUME 0x00000040
3209 #define FILE_AUTOGENERATED_DEVICE_NAME 0x00000080
3210 #define FILE_DEVICE_SECURE_OPEN 0x00000100
3211 #define FILE_CHARACTERISTIC_PNP_DEVICE 0x00000800
3212 #define FILE_CHARACTERISTIC_TS_DEVICE 0x00001000
3213 #define FILE_CHARACTERISTIC_WEBDAV_DEVICE 0x00002000
3214 #define FILE_CHARACTERISTIC_CSV 0x00010000
3215 #define FILE_DEVICE_ALLOW_APPCONTAINER_TRAVERSAL 0x00020000
3216 #define FILE_PORTABLE_DEVICE 0x00040000
3218 /* options for NtCreateNamedPipeFile */
3219 #define FILE_PIPE_INBOUND 0x00000000
3220 #define FILE_PIPE_OUTBOUND 0x00000001
3221 #define FILE_PIPE_FULL_DUPLEX 0x00000002
3223 /* options for pipe's type */
3224 #define FILE_PIPE_TYPE_MESSAGE 0x00000001
3225 #define FILE_PIPE_TYPE_BYTE 0x00000000
3226 /* options for pipe's message mode */
3227 #define FILE_PIPE_MESSAGE_MODE 0x00000001
3228 #define FILE_PIPE_BYTE_STREAM_MODE 0x00000000
3229 /* options for pipe's blocking mode */
3230 #define FILE_PIPE_COMPLETE_OPERATION 0x00000001
3231 #define FILE_PIPE_QUEUE_OPERATION 0x00000000
3232 /* and client / server end */
3233 #define FILE_PIPE_SERVER_END 0x00000001
3234 #define FILE_PIPE_CLIENT_END 0x00000000
3236 #define INTERNAL_TS_ACTIVE_CONSOLE_ID ( *((volatile ULONG*)(0x7ffe02d8)) )
3238 #define LOGONID_CURRENT ((ULONG)-1)
3240 #define OBJ_PROTECT_CLOSE 0x00000001
3241 #define OBJ_INHERIT 0x00000002
3242 #define OBJ_PERMANENT 0x00000010
3243 #define OBJ_EXCLUSIVE 0x00000020
3244 #define OBJ_CASE_INSENSITIVE 0x00000040
3245 #define OBJ_OPENIF 0x00000080
3246 #define OBJ_OPENLINK 0x00000100
3247 #define OBJ_KERNEL_HANDLE 0x00000200
3248 #define OBJ_VALID_ATTRIBUTES 0x000003F2
3250 #define SERVERNAME_CURRENT ((HANDLE)NULL)
3252 typedef void (CALLBACK *PNTAPCFUNC)(ULONG_PTR,ULONG_PTR,ULONG_PTR); /* FIXME: not the right name */
3253 typedef void (CALLBACK *PRTL_THREAD_START_ROUTINE)(LPVOID); /* FIXME: not the right name */
3254 typedef DWORD (CALLBACK *PRTL_WORK_ITEM_ROUTINE)(LPVOID); /* FIXME: not the right name */
3255 typedef void (NTAPI *RTL_WAITORTIMERCALLBACKFUNC)(PVOID,BOOLEAN); /* FIXME: not the right name */
3258 /* DbgPrintEx default levels */
3259 #define DPFLTR_ERROR_LEVEL 0
3260 #define DPFLTR_WARNING_LEVEL 1
3261 #define DPFLTR_TRACE_LEVEL 2
3262 #define DPFLTR_INFO_LEVEL 3
3263 #define DPFLTR_MASK 0x8000000
3265 /* Well-known LUID values */
3266 #define SE_MIN_WELL_KNOWN_PRIVILEGE 2
3267 #define SE_CREATE_TOKEN_PRIVILEGE 2
3268 #define SE_ASSIGNPRIMARYTOKEN_PRIVILEGE 3
3269 #define SE_LOCK_MEMORY_PRIVILEGE 4
3270 #define SE_INCREASE_QUOTA_PRIVILEGE 5
3271 #define SE_UNSOLICITED_INPUT_PRIVILEGE 6 /* obsolete */
3272 #define SE_MACHINE_ACCOUNT_PRIVILEGE 6
3273 #define SE_TCB_PRIVILEGE 7
3274 #define SE_SECURITY_PRIVILEGE 8
3275 #define SE_TAKE_OWNERSHIP_PRIVILEGE 9
3276 #define SE_LOAD_DRIVER_PRIVILEGE 10
3277 #define SE_SYSTEM_PROFILE_PRIVILEGE 11
3278 #define SE_SYSTEMTIME_PRIVILEGE 12
3279 #define SE_PROF_SINGLE_PROCESS_PRIVILEGE 13
3280 #define SE_INC_BASE_PRIORITY_PRIVILEGE 14
3281 #define SE_CREATE_PAGEFILE_PRIVILEGE 15
3282 #define SE_CREATE_PERMANENT_PRIVILEGE 16
3283 #define SE_BACKUP_PRIVILEGE 17
3284 #define SE_RESTORE_PRIVILEGE 18
3285 #define SE_SHUTDOWN_PRIVILEGE 19
3286 #define SE_DEBUG_PRIVILEGE 20
3287 #define SE_AUDIT_PRIVILEGE 21
3288 #define SE_SYSTEM_ENVIRONMENT_PRIVILEGE 22
3289 #define SE_CHANGE_NOTIFY_PRIVILEGE 23
3290 #define SE_REMOTE_SHUTDOWN_PRIVILEGE 24
3291 #define SE_UNDOCK_PRIVILEGE 25
3292 #define SE_SYNC_AGENT_PRIVILEGE 26
3293 #define SE_ENABLE_DELEGATION_PRIVILEGE 27
3294 #define SE_MANAGE_VOLUME_PRIVILEGE 28
3295 #define SE_IMPERSONATE_PRIVILEGE 29
3296 #define SE_CREATE_GLOBAL_PRIVILEGE 30
3297 #define SE_MAX_WELL_KNOWN_PRIVILEGE SE_CREATE_GLOBAL_PRIVILEGE
3299 /* NtGlobalFlag bits */
3300 #define FLG_STOP_ON_EXCEPTION 0x00000001
3301 #define FLG_SHOW_LDR_SNAPS 0x00000002
3302 #define FLG_DEBUG_INITIAL_COMMAND 0x00000004
3303 #define FLG_STOP_ON_HUNG_GUI 0x00000008
3304 #define FLG_HEAP_ENABLE_TAIL_CHECK 0x00000010
3305 #define FLG_HEAP_ENABLE_FREE_CHECK 0x00000020
3306 #define FLG_HEAP_VALIDATE_PARAMETERS 0x00000040
3307 #define FLG_HEAP_VALIDATE_ALL 0x00000080
3308 #define FLG_APPLICATION_VERIFIER 0x00000100
3309 #define FLG_POOL_ENABLE_TAGGING 0x00000400
3310 #define FLG_HEAP_ENABLE_TAGGING 0x00000800
3311 #define FLG_USER_STACK_TRACE_DB 0x00001000
3312 #define FLG_KERNEL_STACK_TRACE_DB 0x00002000
3313 #define FLG_MAINTAIN_OBJECT_TYPELIST 0x00004000
3314 #define FLG_HEAP_ENABLE_TAG_BY_DLL 0x00008000
3315 #define FLG_DISABLE_STACK_EXTENSION 0x00010000
3316 #define FLG_ENABLE_CSRDEBUG 0x00020000
3317 #define FLG_ENABLE_KDEBUG_SYMBOL_LOAD 0x00040000
3318 #define FLG_DISABLE_PAGE_KERNEL_STACKS 0x00080000
3319 #define FLG_ENABLE_SYSTEM_CRIT_BREAKS 0x00100000
3320 #define FLG_HEAP_DISABLE_COALESCING 0x00200000
3321 #define FLG_ENABLE_CLOSE_EXCEPTIONS 0x00400000
3322 #define FLG_ENABLE_EXCEPTION_LOGGING 0x00800000
3323 #define FLG_ENABLE_HANDLE_TYPE_TAGGING 0x01000000
3324 #define FLG_HEAP_PAGE_ALLOCS 0x02000000
3325 #define FLG_DEBUG_INITIAL_COMMAND_EX 0x04000000
3326 #define FLG_DISABLE_DBGPRINT 0x08000000
3327 #define FLG_CRITSEC_EVENT_CREATION 0x10000000
3328 #define FLG_LDR_TOP_DOWN 0x20000000
3329 #define FLG_ENABLE_HANDLE_EXCEPTIONS 0x40000000
3330 #define FLG_DISABLE_PROTDLLS 0x80000000
3332 /* Rtl*Registry* functions structs and defines */
3333 #define RTL_REGISTRY_ABSOLUTE 0
3334 #define RTL_REGISTRY_SERVICES 1
3335 #define RTL_REGISTRY_CONTROL 2
3336 #define RTL_REGISTRY_WINDOWS_NT 3
3337 #define RTL_REGISTRY_DEVICEMAP 4
3338 #define RTL_REGISTRY_USER 5
3340 #define RTL_REGISTRY_HANDLE 0x40000000
3341 #define RTL_REGISTRY_OPTIONAL 0x80000000
3343 #define RTL_QUERY_REGISTRY_SUBKEY 0x00000001
3344 #define RTL_QUERY_REGISTRY_TOPKEY 0x00000002
3345 #define RTL_QUERY_REGISTRY_REQUIRED 0x00000004
3346 #define RTL_QUERY_REGISTRY_NOVALUE 0x00000008
3347 #define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010
3348 #define RTL_QUERY_REGISTRY_DIRECT 0x00000020
3349 #define RTL_QUERY_REGISTRY_DELETE 0x00000040
3350 #define RTL_QUERY_REGISTRY_TYPECHECK 0x00000100
3352 #define RTL_QUERY_REGISTRY_TYPECHECK_SHIFT 24
3354 typedef NTSTATUS (WINAPI *PRTL_QUERY_REGISTRY_ROUTINE)( PCWSTR ValueName,
3355 ULONG ValueType,
3356 PVOID ValueData,
3357 ULONG ValueLength,
3358 PVOID Context,
3359 PVOID EntryContext);
3361 typedef struct _RTL_QUERY_REGISTRY_TABLE
3363 PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;
3364 ULONG Flags;
3365 PWSTR Name;
3366 PVOID EntryContext;
3367 ULONG DefaultType;
3368 PVOID DefaultData;
3369 ULONG DefaultLength;
3370 } RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
3372 typedef struct _KEY_MULTIPLE_VALUE_INFORMATION
3374 PUNICODE_STRING ValueName;
3375 ULONG DataLength;
3376 ULONG DataOffset;
3377 ULONG Type;
3378 } KEY_MULTIPLE_VALUE_INFORMATION, *PKEY_MULTIPLE_VALUE_INFORMATION;
3380 typedef VOID (CALLBACK *PRTL_OVERLAPPED_COMPLETION_ROUTINE)(DWORD,DWORD,LPVOID);
3382 typedef VOID (CALLBACK *PTIMER_APC_ROUTINE) ( PVOID, ULONG, LONG );
3384 typedef enum _EVENT_INFORMATION_CLASS {
3385 EventBasicInformation
3386 } EVENT_INFORMATION_CLASS, *PEVENT_INFORMATION_CLASS;
3388 typedef struct _EVENT_BASIC_INFORMATION {
3389 EVENT_TYPE EventType;
3390 LONG EventState;
3391 } EVENT_BASIC_INFORMATION, *PEVENT_BASIC_INFORMATION;
3393 typedef enum _SEMAPHORE_INFORMATION_CLASS {
3394 SemaphoreBasicInformation
3395 } SEMAPHORE_INFORMATION_CLASS, *PSEMAPHORE_INFORMATION_CLASS;
3397 typedef struct _SEMAPHORE_BASIC_INFORMATION {
3398 ULONG CurrentCount;
3399 ULONG MaximumCount;
3400 } SEMAPHORE_BASIC_INFORMATION, *PSEMAPHORE_BASIC_INFORMATION;
3402 typedef enum _SECTION_INFORMATION_CLASS
3404 SectionBasicInformation,
3405 SectionImageInformation,
3406 SectionRelocationInformation,
3407 SectionOriginalBaseInformation,
3408 SectionInternalImageInformation
3409 } SECTION_INFORMATION_CLASS;
3411 typedef struct _SECTION_BASIC_INFORMATION {
3412 PVOID BaseAddress;
3413 ULONG Attributes;
3414 LARGE_INTEGER Size;
3415 } SECTION_BASIC_INFORMATION, *PSECTION_BASIC_INFORMATION;
3417 typedef struct _SECTION_IMAGE_INFORMATION {
3418 PVOID TransferAddress;
3419 ULONG ZeroBits;
3420 SIZE_T MaximumStackSize;
3421 SIZE_T CommittedStackSize;
3422 ULONG SubSystemType;
3423 USHORT MinorSubsystemVersion;
3424 USHORT MajorSubsystemVersion;
3425 USHORT MajorOperatingSystemVersion;
3426 USHORT MinorOperatingSystemVersion;
3427 USHORT ImageCharacteristics;
3428 USHORT DllCharacteristics;
3429 USHORT Machine;
3430 BOOLEAN ImageContainsCode;
3431 union
3433 UCHAR ImageFlags;
3434 struct
3436 UCHAR ComPlusNativeReady : 1;
3437 UCHAR ComPlusILOnly : 1;
3438 UCHAR ImageDynamicallyRelocated : 1;
3439 UCHAR ImageMappedFlat : 1;
3440 UCHAR BaseBelow4gb : 1;
3441 UCHAR ComPlusPrefer32bit : 1;
3442 UCHAR Reserved : 2;
3443 } DUMMYSTRUCTNAME;
3444 } DUMMYUNIONNAME;
3445 ULONG LoaderFlags;
3446 ULONG ImageFileSize;
3447 ULONG CheckSum;
3448 } SECTION_IMAGE_INFORMATION, *PSECTION_IMAGE_INFORMATION;
3450 typedef struct _LPC_SECTION_WRITE {
3451 ULONG Length;
3452 HANDLE SectionHandle;
3453 ULONG SectionOffset;
3454 ULONG ViewSize;
3455 PVOID ViewBase;
3456 PVOID TargetViewBase;
3457 } LPC_SECTION_WRITE, *PLPC_SECTION_WRITE;
3459 typedef struct _LPC_SECTION_READ {
3460 ULONG Length;
3461 ULONG ViewSize;
3462 PVOID ViewBase;
3463 } LPC_SECTION_READ, *PLPC_SECTION_READ;
3465 typedef struct _LPC_MESSAGE {
3466 USHORT DataSize;
3467 USHORT MessageSize;
3468 USHORT MessageType;
3469 USHORT VirtualRangesOffset;
3470 CLIENT_ID ClientId;
3471 ULONG_PTR MessageId;
3472 ULONG_PTR SectionSize;
3473 UCHAR Data[ANYSIZE_ARRAY];
3474 } LPC_MESSAGE, *PLPC_MESSAGE;
3476 typedef struct _RTL_USER_PROCESS_INFORMATION
3478 ULONG Length;
3479 HANDLE Process;
3480 HANDLE Thread;
3481 CLIENT_ID ClientId;
3482 SECTION_IMAGE_INFORMATION ImageInformation;
3483 } RTL_USER_PROCESS_INFORMATION, *PRTL_USER_PROCESS_INFORMATION;
3485 typedef enum _SHUTDOWN_ACTION {
3486 ShutdownNoReboot,
3487 ShutdownReboot,
3488 ShutdownPowerOff
3489 } SHUTDOWN_ACTION, *PSHUTDOWN_ACTION;
3491 typedef enum _KPROFILE_SOURCE {
3492 ProfileTime,
3493 ProfileAlignmentFixup,
3494 ProfileTotalIssues,
3495 ProfilePipelineDry,
3496 ProfileLoadInstructions,
3497 ProfilePipelineFrozen,
3498 ProfileBranchInstructions,
3499 ProfileTotalNonissues,
3500 ProfileDcacheMisses,
3501 ProfileIcacheMisses,
3502 ProfileCacheMisses,
3503 ProfileBranchMispredictions,
3504 ProfileStoreInstructions,
3505 ProfileFpInstructions,
3506 ProfileIntegerInstructions,
3507 Profile2Issue,
3508 Profile3Issue,
3509 Profile4Issue,
3510 ProfileSpecialInstructions,
3511 ProfileTotalCycles,
3512 ProfileIcacheIssues,
3513 ProfileDcacheAccesses,
3514 ProfileMemoryBarrierCycles,
3515 ProfileLoadLinkedIssues,
3516 ProfileMaximum
3517 } KPROFILE_SOURCE, *PKPROFILE_SOURCE;
3519 typedef struct _DIRECTORY_BASIC_INFORMATION {
3520 UNICODE_STRING ObjectName;
3521 UNICODE_STRING ObjectTypeName;
3522 } DIRECTORY_BASIC_INFORMATION, *PDIRECTORY_BASIC_INFORMATION;
3524 typedef struct _INITIAL_TEB {
3525 void *OldStackBase;
3526 void *OldStackLimit;
3527 void *StackBase;
3528 void *StackLimit;
3529 void *DeallocationStack;
3530 } INITIAL_TEB, *PINITIAL_TEB;
3532 typedef enum _PORT_INFORMATION_CLASS {
3533 PortNoInformation
3534 } PORT_INFORMATION_CLASS, *PPORT_INFORMATION_CLASS;
3536 typedef enum _IO_COMPLETION_INFORMATION_CLASS {
3537 IoCompletionBasicInformation
3538 } IO_COMPLETION_INFORMATION_CLASS, *PIO_COMPLETION_INFORMATION_CLASS;
3540 typedef struct _FILE_COMPLETION_INFORMATION {
3541 HANDLE CompletionPort;
3542 ULONG_PTR CompletionKey;
3543 } FILE_COMPLETION_INFORMATION, *PFILE_COMPLETION_INFORMATION;
3545 #define IO_COMPLETION_QUERY_STATE 0x0001
3546 #define IO_COMPLETION_MODIFY_STATE 0x0002
3547 #define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
3549 typedef struct _FILE_IO_COMPLETION_INFORMATION {
3550 ULONG_PTR CompletionKey;
3551 ULONG_PTR CompletionValue;
3552 IO_STATUS_BLOCK IoStatusBlock;
3553 } FILE_IO_COMPLETION_INFORMATION, *PFILE_IO_COMPLETION_INFORMATION;
3555 typedef enum _HARDERROR_RESPONSE_OPTION {
3556 OptionAbortRetryIgnore,
3557 OptionOk,
3558 OptionOkCancel,
3559 OptionRetryCancel,
3560 OptionYesNo,
3561 OptionYesNoCancel,
3562 OptionShutdownSystem
3563 } HARDERROR_RESPONSE_OPTION, *PHARDERROR_RESPONSE_OPTION;
3565 typedef enum _HARDERROR_RESPONSE {
3566 ResponseReturnToCaller,
3567 ResponseNotHandled,
3568 ResponseAbort,
3569 ResponseCancel,
3570 ResponseIgnore,
3571 ResponseNo,
3572 ResponseOk,
3573 ResponseRetry,
3574 ResponseYes
3575 } HARDERROR_RESPONSE, *PHARDERROR_RESPONSE;
3577 typedef enum _SYSDBG_COMMAND {
3578 SysDbgQueryModuleInformation,
3579 SysDbgQueryTraceInformation,
3580 SysDbgSetTracepoint,
3581 SysDbgSetSpecialCall,
3582 SysDbgClearSpecialCalls,
3583 SysDbgQuerySpecialCalls,
3584 SysDbgBreakPoint,
3585 SysDbgQueryVersion,
3586 SysDbgReadVirtual,
3587 SysDbgWriteVirtual,
3588 SysDbgReadPhysical,
3589 SysDbgWritePhysical,
3590 SysDbgReadControlSpace,
3591 SysDbgWriteControlSpace,
3592 SysDbgReadIoSpace,
3593 SysDbgWriteIoSpace,
3594 SysDbgReadMsr,
3595 SysDbgWriteMsr,
3596 SysDbgReadBusData,
3597 SysDbgWriteBusData
3598 } SYSDBG_COMMAND, *PSYSDBG_COMMAND;
3600 typedef struct _CPTABLEINFO
3602 USHORT CodePage;
3603 USHORT MaximumCharacterSize;
3604 USHORT DefaultChar;
3605 USHORT UniDefaultChar;
3606 USHORT TransDefaultChar;
3607 USHORT TransUniDefaultChar;
3608 USHORT DBCSCodePage;
3609 UCHAR LeadByte[12];
3610 USHORT *MultiByteTable;
3611 void *WideCharTable;
3612 USHORT *DBCSRanges;
3613 USHORT *DBCSOffsets;
3614 } CPTABLEINFO, *PCPTABLEINFO;
3616 typedef struct _NLSTABLEINFO
3618 CPTABLEINFO OemTableInfo;
3619 CPTABLEINFO AnsiTableInfo;
3620 USHORT *UpperCaseTable;
3621 USHORT *LowerCaseTable;
3622 } NLSTABLEINFO, *PNLSTABLEINFO;
3624 /*************************************************************************
3625 * Loader structures
3627 * Those are not part of standard Winternl.h
3630 typedef struct _LDR_SERVICE_TAG_RECORD
3632 struct _LDR_SERVICE_TAG_RECORD *Next;
3633 ULONG ServiceTag;
3634 } LDR_SERVICE_TAG_RECORD, *PLDR_SERVICE_TAG_RECORD;
3636 typedef struct _LDRP_CSLIST
3638 SINGLE_LIST_ENTRY *Tail;
3639 } LDRP_CSLIST, *PLDRP_CSLIST;
3641 typedef struct _LDR_DEPENDENCY
3643 SINGLE_LIST_ENTRY dependency_to_entry;
3644 struct _LDR_DDAG_NODE *dependency_to;
3645 SINGLE_LIST_ENTRY dependency_from_entry;
3646 struct _LDR_DDAG_NODE *dependency_from;
3647 } LDR_DEPENDENCY, *PLDR_DEPENDENCY;
3649 typedef enum _LDR_DDAG_STATE
3651 LdrModulesMerged = -5,
3652 LdrModulesInitError = -4,
3653 LdrModulesSnapError = -3,
3654 LdrModulesUnloaded = -2,
3655 LdrModulesUnloading = -1,
3656 LdrModulesPlaceHolder = 0,
3657 LdrModulesMapping = 1,
3658 LdrModulesMapped = 2,
3659 LdrModulesWaitingForDependencies = 3,
3660 LdrModulesSnapping = 4,
3661 LdrModulesSnapped = 5,
3662 LdrModulesCondensed = 6,
3663 LdrModulesReadyToInit = 7,
3664 LdrModulesInitializing = 8,
3665 LdrModulesReadyToRun = 9,
3666 } LDR_DDAG_STATE;
3668 typedef struct _LDR_DDAG_NODE
3670 LIST_ENTRY Modules;
3671 LDR_SERVICE_TAG_RECORD *ServiceTagList;
3672 LONG LoadCount;
3673 ULONG LoadWhileUnloadingCount;
3674 ULONG LowestLink;
3675 LDRP_CSLIST Dependencies;
3676 LDRP_CSLIST IncomingDependencies;
3677 LDR_DDAG_STATE State;
3678 SINGLE_LIST_ENTRY CondenseLink;
3679 ULONG PreorderNumber;
3680 } LDR_DDAG_NODE, *PLDR_DDAG_NODE;
3682 typedef enum _LDR_DLL_LOAD_REASON
3684 LoadReasonStaticDependency,
3685 LoadReasonStaticForwarderDependency,
3686 LoadReasonDynamicForwarderDependency,
3687 LoadReasonDelayloadDependency,
3688 LoadReasonDynamicLoad,
3689 LoadReasonAsImageLoad,
3690 LoadReasonAsDataLoad,
3691 LoadReasonUnknown = -1
3692 } LDR_DLL_LOAD_REASON, *PLDR_DLL_LOAD_REASON;
3694 typedef struct _LDR_DATA_TABLE_ENTRY
3696 LIST_ENTRY InLoadOrderLinks;
3697 LIST_ENTRY InMemoryOrderLinks;
3698 LIST_ENTRY InInitializationOrderLinks;
3699 void* DllBase;
3700 void* EntryPoint;
3701 ULONG SizeOfImage;
3702 UNICODE_STRING FullDllName;
3703 UNICODE_STRING BaseDllName;
3704 ULONG Flags;
3705 SHORT LoadCount;
3706 SHORT TlsIndex;
3707 LIST_ENTRY HashLinks;
3708 ULONG TimeDateStamp;
3709 HANDLE ActivationContext;
3710 void* Lock;
3711 LDR_DDAG_NODE* DdagNode;
3712 LIST_ENTRY NodeModuleLink;
3713 struct _LDRP_LOAD_CONTEXT *LoadContext;
3714 void* ParentDllBase;
3715 void* SwitchBackContext;
3716 RTL_BALANCED_NODE BaseAddressIndexNode;
3717 RTL_BALANCED_NODE MappingInfoIndexNode;
3718 ULONG_PTR OriginalBase;
3719 LARGE_INTEGER LoadTime;
3720 ULONG BaseNameHashValue;
3721 LDR_DLL_LOAD_REASON LoadReason;
3722 ULONG ImplicitPathOptions;
3723 ULONG ReferenceCount;
3724 } LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY;
3726 typedef struct _LDR_DLL_LOADED_NOTIFICATION_DATA
3728 ULONG Flags;
3729 const UNICODE_STRING *FullDllName;
3730 const UNICODE_STRING *BaseDllName;
3731 void *DllBase;
3732 ULONG SizeOfImage;
3733 } LDR_DLL_LOADED_NOTIFICATION_DATA, *PLDR_DLL_LOADED_NOTIFICATION_DATA;
3735 typedef struct _LDR_DLL_UNLOADED_NOTIFICATION_DATA
3737 ULONG Flags;
3738 const UNICODE_STRING *FullDllName;
3739 const UNICODE_STRING *BaseDllName;
3740 void *DllBase;
3741 ULONG SizeOfImage;
3742 } LDR_DLL_UNLOADED_NOTIFICATION_DATA, *PLDR_DLL_UNLOADED_NOTIFICATION_DATA;
3744 typedef union _LDR_DLL_NOTIFICATION_DATA
3746 LDR_DLL_LOADED_NOTIFICATION_DATA Loaded;
3747 LDR_DLL_UNLOADED_NOTIFICATION_DATA Unloaded;
3748 } LDR_DLL_NOTIFICATION_DATA, *PLDR_DLL_NOTIFICATION_DATA;
3750 typedef void (CALLBACK *PLDR_DLL_NOTIFICATION_FUNCTION)(ULONG, LDR_DLL_NOTIFICATION_DATA*, void*);
3752 /* those defines are (some of the) regular LDR_DATA_TABLE_ENTRY.Flags values */
3753 #define LDR_IMAGE_IS_DLL 0x00000004
3754 #define LDR_LOAD_IN_PROGRESS 0x00001000
3755 #define LDR_UNLOAD_IN_PROGRESS 0x00002000
3756 #define LDR_NO_DLL_CALLS 0x00040000
3757 #define LDR_PROCESS_ATTACHED 0x00080000
3758 #define LDR_COR_IMAGE 0x00400000
3759 #define LDR_COR_ILONLY 0x01000000
3761 /* these ones is Wine specific */
3762 #define LDR_DONT_RESOLVE_REFS 0x40000000
3763 #define LDR_WINE_INTERNAL 0x80000000
3765 /* flag for LdrAddRefDll */
3766 #define LDR_ADDREF_DLL_PIN 0x00000001
3768 /* flags for LdrGetDllHandleEx */
3769 #define LDR_GET_DLL_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT 0x00000001
3770 #define LDR_GET_DLL_HANDLE_EX_FLAG_PIN 0x00000002
3772 #define LDR_DLL_NOTIFICATION_REASON_LOADED 1
3773 #define LDR_DLL_NOTIFICATION_REASON_UNLOADED 2
3775 /* FIXME: to be checked */
3776 #define MAXIMUM_FILENAME_LENGTH 256
3778 typedef struct _RTL_PROCESS_MODULE_INFORMATION
3780 PVOID Section; /* 00/00 */
3781 PVOID MappedBaseAddress; /* 04/08 */
3782 PVOID ImageBaseAddress; /* 08/10 */
3783 ULONG ImageSize; /* 0c/18 */
3784 ULONG Flags; /* 10/1c */
3785 WORD LoadOrderIndex; /* 14/20 */
3786 WORD InitOrderIndex; /* 16/22 */
3787 WORD LoadCount; /* 18/24 */
3788 WORD NameOffset; /* 1a/26 */
3789 BYTE Name[MAXIMUM_FILENAME_LENGTH]; /* 1c/28 */
3790 } RTL_PROCESS_MODULE_INFORMATION, *PRTL_PROCESS_MODULE_INFORMATION;
3792 typedef struct _RTL_PROCESS_MODULES
3794 ULONG ModulesCount;
3795 RTL_PROCESS_MODULE_INFORMATION Modules[1]; /* FIXME: should be Modules[0] */
3796 } RTL_PROCESS_MODULES, *PRTL_PROCESS_MODULES;
3798 #define PROCESS_CREATE_FLAGS_BREAKAWAY 0x00000001
3799 #define PROCESS_CREATE_FLAGS_NO_DEBUG_INHERIT 0x00000002
3800 #define PROCESS_CREATE_FLAGS_INHERIT_HANDLES 0x00000004
3801 #define PROCESS_CREATE_FLAGS_OVERRIDE_ADDRESS_SPACE 0x00000008
3802 #define PROCESS_CREATE_FLAGS_LARGE_PAGES 0x00000010
3803 #define PROCESS_CREATE_FLAGS_LARGE_PAGE_SYSTEM_DLL 0x00000020
3804 #define PROCESS_CREATE_FLAGS_PROTECTED_PROCESS 0x00000040
3805 #define PROCESS_CREATE_FLAGS_CREATE_SESSION 0x00000080
3806 #define PROCESS_CREATE_FLAGS_INHERIT_FROM_PARENT 0x00000100
3807 #define PROCESS_CREATE_FLAGS_SUSPENDED 0x00000200
3808 #define PROCESS_CREATE_FLAGS_EXTENDED_UNKNOWN 0x00000400
3810 typedef struct _RTL_PROCESS_MODULE_INFORMATION_EX
3812 USHORT NextOffset;
3813 RTL_PROCESS_MODULE_INFORMATION BaseInfo;
3814 ULONG ImageCheckSum;
3815 ULONG TimeDateStamp;
3816 void *DefaultBase;
3817 } RTL_PROCESS_MODULE_INFORMATION_EX;
3819 #define THREAD_CREATE_FLAGS_CREATE_SUSPENDED 0x00000001
3820 #define THREAD_CREATE_FLAGS_SKIP_THREAD_ATTACH 0x00000002
3821 #define THREAD_CREATE_FLAGS_HIDE_FROM_DEBUGGER 0x00000004
3822 #define THREAD_CREATE_FLAGS_HAS_SECURITY_DESCRIPTOR 0x00000010
3823 #define THREAD_CREATE_FLAGS_ACCESS_CHECK_IN_TARGET 0x00000020
3824 #define THREAD_CREATE_FLAGS_INITIAL_THREAD 0x00000080
3826 #define EH_NONCONTINUABLE 0x01
3827 #define EH_UNWINDING 0x02
3828 #define EH_EXIT_UNWIND 0x04
3829 #define EH_STACK_INVALID 0x08
3830 #define EH_NESTED_CALL 0x10
3831 #define EH_TARGET_UNWIND 0x20
3832 #define EH_COLLIDED_UNWIND 0x40
3834 #ifdef __WINESRC__
3836 /* Wine-specific exceptions codes */
3838 #define EXCEPTION_WINE_STUB 0x80000100 /* stub entry point called */
3839 #define EXCEPTION_WINE_ASSERTION 0x80000101 /* assertion failed */
3841 /* Wine extension; Windows doesn't have a name for this code. This is an
3842 undocumented exception understood by MS VC debugger, allowing the program
3843 to name a particular thread. */
3844 #define EXCEPTION_WINE_NAME_THREAD 0x406D1388
3846 /* used for C++ exceptions in msvcrt
3847 * parameters:
3848 * [0] CXX_FRAME_MAGIC
3849 * [1] pointer to exception object
3850 * [2] pointer to type
3852 #define EXCEPTION_WINE_CXX_EXCEPTION 0xe06d7363
3853 #define EXCEPTION_WINE_CXX_FRAME_MAGIC 0x19930520
3855 #endif
3857 typedef LONG (CALLBACK *PRTL_EXCEPTION_FILTER)(PEXCEPTION_POINTERS);
3859 typedef void (CALLBACK *PTP_IO_CALLBACK)(PTP_CALLBACK_INSTANCE,void*,void*,IO_STATUS_BLOCK*,PTP_IO);
3861 #define PS_ATTRIBUTE_THREAD 0x00010000
3862 #define PS_ATTRIBUTE_INPUT 0x00020000
3863 #define PS_ATTRIBUTE_ADDITIVE 0x00040000
3865 typedef enum _PS_ATTRIBUTE_NUM
3867 PsAttributeParentProcess,
3868 PsAttributeDebugPort,
3869 PsAttributeToken,
3870 PsAttributeClientId,
3871 PsAttributeTebAddress,
3872 PsAttributeImageName,
3873 PsAttributeImageInfo,
3874 PsAttributeMemoryReserve,
3875 PsAttributePriorityClass,
3876 PsAttributeErrorMode,
3877 PsAttributeStdHandleInfo,
3878 PsAttributeHandleList,
3879 PsAttributeGroupAffinity,
3880 PsAttributePreferredNode,
3881 PsAttributeIdealProcessor,
3882 PsAttributeUmsThread,
3883 PsAttributeMitigationOptions,
3884 PsAttributeProtectionLevel,
3885 PsAttributeSecureProcess,
3886 PsAttributeJobList,
3887 PsAttributeChildProcessPolicy,
3888 PsAttributeAllApplicationPackagesPolicy,
3889 PsAttributeWin32kFilter,
3890 PsAttributeSafeOpenPromptOriginClaim,
3891 PsAttributeBnoIsolation,
3892 PsAttributeDesktopAppPolicy,
3893 PsAttributeChpe,
3894 PsAttributeMitigationAuditOptions,
3895 PsAttributeMachineType,
3896 PsAttributeComponentFilter,
3897 PsAttributeEnableOptionalXStateFeatures,
3898 PsAttributeMax
3899 } PS_ATTRIBUTE_NUM;
3901 #define PS_ATTRIBUTE_PARENT_PROCESS (PsAttributeParentProcess | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE)
3902 #define PS_ATTRIBUTE_DEBUG_PORT (PsAttributeDebugPort | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE)
3903 #define PS_ATTRIBUTE_TOKEN (PsAttributeToken | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE)
3904 #define PS_ATTRIBUTE_CLIENT_ID (PsAttributeClientId | PS_ATTRIBUTE_THREAD)
3905 #define PS_ATTRIBUTE_TEB_ADDRESS (PsAttributeTebAddress | PS_ATTRIBUTE_THREAD)
3906 #define PS_ATTRIBUTE_IMAGE_NAME (PsAttributeImageName | PS_ATTRIBUTE_INPUT)
3907 #define PS_ATTRIBUTE_IMAGE_INFO (PsAttributeImageInfo)
3908 #define PS_ATTRIBUTE_MEMORY_RESERVE (PsAttributeMemoryReserve | PS_ATTRIBUTE_INPUT)
3909 #define PS_ATTRIBUTE_PRIORITY_CLASS (PsAttributePriorityClass | PS_ATTRIBUTE_INPUT)
3910 #define PS_ATTRIBUTE_ERROR_MODE (PsAttributeErrorMode | PS_ATTRIBUTE_INPUT)
3911 #define PS_ATTRIBUTE_STD_HANDLE_INFO (PsAttributeStdHandleInfo | PS_ATTRIBUTE_INPUT)
3912 #define PS_ATTRIBUTE_HANDLE_LIST (PsAttributeHandleList | PS_ATTRIBUTE_INPUT)
3913 #define PS_ATTRIBUTE_GROUP_AFFINITY (PsAttributeGroupAffinity | PS_ATTRIBUTE_THREAD | PS_ATTRIBUTE_INPUT)
3914 #define PS_ATTRIBUTE_PREFERRED_NODE (PsAttributePreferredNode | PS_ATTRIBUTE_INPUT)
3915 #define PS_ATTRIBUTE_IDEAL_PROCESSOR (PsAttributeIdealProcessor | PS_ATTRIBUTE_THREAD | PS_ATTRIBUTE_INPUT)
3916 #define PS_ATTRIBUTE_MITIGATION_OPTIONS (PsAttributeMitigationOptions | PS_ATTRIBUTE_INPUT)
3917 #define PS_ATTRIBUTE_PROTECTION_LEVEL (PsAttributeProtectionLevel | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE)
3918 #define PS_ATTRIBUTE_SECURE_PROCESS (PsAttributeSecureProcess | PS_ATTRIBUTE_INPUT)
3919 #define PS_ATTRIBUTE_JOB_LIST (PsAttributeJobList | PS_ATTRIBUTE_INPUT)
3920 #define PS_ATTRIBUTE_CHILD_PROCESS_POLICY (PsAttributeChildProcessPolicy | PS_ATTRIBUTE_INPUT)
3921 #define PS_ATTRIBUTE_ALL_APPLICATION_PACKAGES_POLICY (PsAttributeAllApplicationPackagesPolicy | PS_ATTRIBUTE_INPUT)
3922 #define PS_ATTRIBUTE_WIN32K_FILTER (PsAttributeWin32kFilter | PS_ATTRIBUTE_INPUT)
3923 #define PS_ATTRIBUTE_SAFE_OPEN_PROMPT_ORIGIN_CLAIM (PsAttributeSafeOpenPromptOriginClaim | PS_ATTRIBUTE_INPUT)
3924 #define PS_ATTRIBUTE_BNO_ISOLATION (PsAttributeBnoIsolation | PS_ATTRIBUTE_INPUT)
3925 #define PS_ATTRIBUTE_DESKTOP_APP_POLICY (PsAttributeDesktopAppPolicy | PS_ATTRIBUTE_INPUT)
3926 #define PS_ATTRIBUTE_CHPE (PsAttributeChpe | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE)
3927 #define PS_ATTRIBUTE_MITIGATION_AUDIT_OPTIONS (PsAttributeMitigationAuditOptions | PS_ATTRIBUTE_INPUT)
3928 #define PS_ATTRIBUTE_MACHINE_TYPE (PsAttributeMachineType | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE)
3929 #define PS_ATTRIBUTE_COMPONENT_FILTER (PsAttributeComponentFilter | PS_ATTRIBUTE_INPUT)
3930 #define PS_ATTRIBUTE_ENABLE_OPTIONAL_XSTATE_FEATURES (PsAttributeEnableOptionalXStateFeatures | PS_ATTRIBUTE_THREAD | PS_ATTRIBUTE_INPUT)
3932 typedef struct _PS_ATTRIBUTE
3934 ULONG_PTR Attribute;
3935 SIZE_T Size;
3936 union
3938 ULONG_PTR Value;
3939 void *ValuePtr;
3941 SIZE_T *ReturnLength;
3942 } PS_ATTRIBUTE;
3944 typedef struct _PS_ATTRIBUTE_LIST
3946 SIZE_T TotalLength;
3947 PS_ATTRIBUTE Attributes[1];
3948 } PS_ATTRIBUTE_LIST, *PPS_ATTRIBUTE_LIST;
3950 typedef enum _PS_CREATE_STATE
3952 PsCreateInitialState,
3953 PsCreateFailOnFileOpen,
3954 PsCreateFailOnSectionCreate,
3955 PsCreateFailExeFormat,
3956 PsCreateFailMachineMismatch,
3957 PsCreateFailExeName,
3958 PsCreateSuccess,
3959 PsCreateMaximumStates
3960 } PS_CREATE_STATE;
3962 typedef struct _PS_CREATE_INFO
3964 SIZE_T Size;
3965 PS_CREATE_STATE State;
3966 union
3968 struct
3970 union
3972 ULONG InitFlags;
3973 struct
3975 UCHAR WriteOutputOnExit : 1;
3976 UCHAR DetectManifest : 1;
3977 UCHAR IFEOSkipDebugger : 1;
3978 UCHAR IFEODoNotPropagateKeyState : 1;
3979 UCHAR SpareBits1 : 4;
3980 UCHAR SpareBits2 : 8;
3981 USHORT ProhibitedImageCharacteristics : 16;
3984 ACCESS_MASK AdditionalFileAccess;
3985 } InitState;
3986 struct
3988 HANDLE FileHandle;
3989 } FailSection;
3990 struct
3992 USHORT DllCharacteristics;
3993 } ExeFormat;
3994 struct
3996 HANDLE IFEOKey;
3997 } ExeName;
3998 struct
4000 union
4002 ULONG OutputFlags;
4003 struct
4005 UCHAR ProtectedProcess : 1;
4006 UCHAR AddressSpaceOverride : 1;
4007 UCHAR DevOverrideEnabled : 1;
4008 UCHAR ManifestDetected : 1;
4009 UCHAR ProtectedProcessLight : 1;
4010 UCHAR SpareBits1 : 3;
4011 UCHAR SpareBits2 : 8;
4012 USHORT SpareBits3 : 16;
4015 HANDLE FileHandle;
4016 HANDLE SectionHandle;
4017 ULONGLONG UserProcessParametersNative;
4018 ULONG UserProcessParametersWow64;
4019 ULONG CurrentParameterFlags;
4020 ULONGLONG PebAddressNative;
4021 ULONG PebAddressWow64;
4022 ULONGLONG ManifestAddress;
4023 ULONG ManifestSize;
4024 } SuccessState;
4026 } PS_CREATE_INFO, *PPS_CREATE_INFO;
4028 typedef struct _DBGKM_EXCEPTION
4030 EXCEPTION_RECORD ExceptionRecord;
4031 ULONG FirstChance;
4032 } DBGKM_EXCEPTION, *PDBGKM_EXCEPTION;
4034 typedef struct _DBGKM_CREATE_THREAD
4036 ULONG SubSystemKey;
4037 PVOID StartAddress;
4038 } DBGKM_CREATE_THREAD, *PDBGKM_CREATE_THREAD;
4040 typedef struct _DBGKM_CREATE_PROCESS
4042 ULONG SubSystemKey;
4043 HANDLE FileHandle;
4044 PVOID BaseOfImage;
4045 ULONG DebugInfoFileOffset;
4046 ULONG DebugInfoSize;
4047 DBGKM_CREATE_THREAD InitialThread;
4048 } DBGKM_CREATE_PROCESS, *PDBGKM_CREATE_PROCESS;
4050 typedef struct _DBGKM_EXIT_THREAD
4052 NTSTATUS ExitStatus;
4053 } DBGKM_EXIT_THREAD, *PDBGKM_EXIT_THREAD;
4055 typedef struct _DBGKM_EXIT_PROCESS
4057 NTSTATUS ExitStatus;
4058 } DBGKM_EXIT_PROCESS, *PDBGKM_EXIT_PROCESS;
4060 typedef struct _DBGKM_LOAD_DLL
4062 HANDLE FileHandle;
4063 PVOID BaseOfDll;
4064 ULONG DebugInfoFileOffset;
4065 ULONG DebugInfoSize;
4066 PVOID NamePointer;
4067 } DBGKM_LOAD_DLL, *PDBGKM_LOAD_DLL;
4069 typedef struct _DBGKM_UNLOAD_DLL
4071 PVOID BaseAddress;
4072 } DBGKM_UNLOAD_DLL, *PDBGKM_UNLOAD_DLL;
4074 typedef enum _DBG_STATE
4076 DbgIdle,
4077 DbgReplyPending,
4078 DbgCreateThreadStateChange,
4079 DbgCreateProcessStateChange,
4080 DbgExitThreadStateChange,
4081 DbgExitProcessStateChange,
4082 DbgExceptionStateChange,
4083 DbgBreakpointStateChange,
4084 DbgSingleStepStateChange,
4085 DbgLoadDllStateChange,
4086 DbgUnloadDllStateChange
4087 } DBG_STATE, *PDBG_STATE;
4089 typedef struct _DBGUI_CREATE_THREAD
4091 HANDLE HandleToThread;
4092 DBGKM_CREATE_THREAD NewThread;
4093 } DBGUI_CREATE_THREAD, *PDBGUI_CREATE_THREAD;
4095 typedef struct _DBGUI_CREATE_PROCESS
4097 HANDLE HandleToProcess;
4098 HANDLE HandleToThread;
4099 DBGKM_CREATE_PROCESS NewProcess;
4100 } DBGUI_CREATE_PROCESS, *PDBGUI_CREATE_PROCESS;
4102 typedef struct _DBGUI_WAIT_STATE_CHANGE
4104 DBG_STATE NewState;
4105 CLIENT_ID AppClientId;
4106 union
4108 DBGKM_EXCEPTION Exception;
4109 DBGUI_CREATE_THREAD CreateThread;
4110 DBGUI_CREATE_PROCESS CreateProcessInfo;
4111 DBGKM_EXIT_THREAD ExitThread;
4112 DBGKM_EXIT_PROCESS ExitProcess;
4113 DBGKM_LOAD_DLL LoadDll;
4114 DBGKM_UNLOAD_DLL UnloadDll;
4115 } StateInfo;
4116 } DBGUI_WAIT_STATE_CHANGE, *PDBGUI_WAIT_STATE_CHANGE;
4118 struct _DEBUG_EVENT;
4120 #define DEBUG_READ_EVENT 0x0001
4121 #define DEBUG_PROCESS_ASSIGN 0x0002
4122 #define DEBUG_SET_INFORMATION 0x0004
4123 #define DEBUG_QUERY_INFORMATION 0x0008
4124 #define DEBUG_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x0f)
4126 #define DEBUG_KILL_ON_CLOSE 0x1
4128 typedef enum _DEBUGOBJECTINFOCLASS
4130 DebugObjectKillProcessOnExitInformation = 1,
4131 MaxDebugObjectInfoClass
4132 } DEBUGOBJECTINFOCLASS, *PDEBUGOBJECTINFOCLASS;
4135 typedef struct _WOW64_CPURESERVED
4137 USHORT Flags;
4138 USHORT Machine;
4139 /* CONTEXT context */
4140 /* CONTEXT_EX *context_ex */
4141 } WOW64_CPURESERVED, *PWOW64_CPURESERVED;
4143 #define WOW64_CPURESERVED_FLAG_RESET_STATE 1
4145 typedef struct _WOW64_CPU_AREA_INFO
4147 void *Context;
4148 void *ContextEx;
4149 void *ContextFlagsLocation;
4150 WOW64_CPURESERVED *CpuReserved;
4151 ULONG ContextFlag;
4152 USHORT Machine;
4153 } WOW64_CPU_AREA_INFO, *PWOW64_CPU_AREA_INFO;
4155 typedef struct _WOW64INFO
4157 ULONG NativeSystemPageSize;
4158 ULONG CpuFlags;
4159 ULONG Wow64ExecuteFlags;
4160 ULONG unknown;
4161 ULONGLONG SectionHandle;
4162 ULONGLONG CrossProcessWorkList;
4163 USHORT NativeMachineType;
4164 USHORT EmulatedMachineType;
4165 } WOW64INFO;
4166 C_ASSERT( sizeof(WOW64INFO) == 40 );
4168 #define WOW64_CPUFLAGS_MSFT64 0x01
4169 #define WOW64_CPUFLAGS_SOFTWARE 0x02
4171 /* undocumented layout of WOW64INFO.CrossProcessWorkList */
4173 typedef struct
4175 UINT next;
4176 UINT id;
4177 ULONGLONG addr;
4178 ULONGLONG size;
4179 UINT args[4];
4180 } CROSS_PROCESS_WORK_ENTRY;
4182 typedef union
4184 struct
4186 UINT first;
4187 UINT counter;
4189 volatile LONGLONG hdr;
4190 } CROSS_PROCESS_WORK_HDR;
4192 typedef struct
4194 CROSS_PROCESS_WORK_HDR free_list;
4195 CROSS_PROCESS_WORK_HDR work_list;
4196 ULONGLONG unknown[4];
4197 CROSS_PROCESS_WORK_ENTRY entries[1];
4198 } CROSS_PROCESS_WORK_LIST;
4200 typedef enum
4202 CrossProcessPreVirtualAlloc = 0,
4203 CrossProcessPostVirtualAlloc = 1,
4204 CrossProcessPreVirtualFree = 2,
4205 CrossProcessPostVirtualFree = 3,
4206 CrossProcessPreVirtualProtect = 4,
4207 CrossProcessPostVirtualProtect = 5,
4208 CrossProcessFlushCache = 6,
4209 } CROSS_PROCESS_NOTIFICATION;
4211 #define CROSS_PROCESS_LIST_FLUSH 0x80000000
4212 #define CROSS_PROCESS_LIST_ENTRY(list,pos) \
4213 ((CROSS_PROCESS_WORK_ENTRY *)((char *)(list) + ((pos) & ~CROSS_PROCESS_LIST_FLUSH)))
4215 /* wow64.dll functions */
4216 void * WINAPI Wow64AllocateTemp(SIZE_T);
4217 void WINAPI Wow64ApcRoutine(ULONG_PTR,ULONG_PTR,ULONG_PTR,CONTEXT*);
4218 NTSTATUS WINAPI Wow64KiUserCallbackDispatcher(ULONG,void*,ULONG,void**,ULONG*);
4219 void WINAPI Wow64PassExceptionToGuest(EXCEPTION_POINTERS*);
4220 void WINAPI Wow64PrepareForException(EXCEPTION_RECORD*,CONTEXT*);
4221 void WINAPI Wow64ProcessPendingCrossProcessItems(void);
4222 NTSTATUS WINAPI Wow64RaiseException(int,EXCEPTION_RECORD*);
4223 NTSTATUS WINAPI Wow64SystemServiceEx(UINT,UINT*);
4225 #ifdef __WINESRC__
4226 /* undocumented layout of LdrSystemDllInitBlock */
4227 /* this varies across Windows version; we are using the win10-2004 layout */
4228 typedef struct
4230 ULONG version;
4231 ULONG unknown1[3];
4232 ULONG64 unknown2;
4233 ULONG64 pLdrInitializeThunk;
4234 ULONG64 pKiUserExceptionDispatcher;
4235 ULONG64 pKiUserApcDispatcher;
4236 ULONG64 pKiUserCallbackDispatcher;
4237 ULONG64 pRtlUserThreadStart;
4238 ULONG64 pRtlpQueryProcessDebugInformationRemote;
4239 ULONG64 ntdll_handle;
4240 ULONG64 pLdrSystemDllInitBlock;
4241 ULONG64 pRtlpFreezeTimeBias;
4242 } SYSTEM_DLL_INIT_BLOCK;
4243 #endif
4245 typedef struct
4247 ULONG_PTR *ServiceTable;
4248 ULONG_PTR *CounterTable;
4249 ULONG_PTR ServiceLimit;
4250 BYTE *ArgumentTable;
4251 } SYSTEM_SERVICE_TABLE;
4253 /* ApiSet structures (format for version 6) */
4255 typedef struct _API_SET_NAMESPACE
4257 ULONG Version;
4258 ULONG Size;
4259 ULONG Flags;
4260 ULONG Count;
4261 ULONG EntryOffset;
4262 ULONG HashOffset;
4263 ULONG HashFactor;
4264 } API_SET_NAMESPACE;
4266 typedef struct _API_SET_HASH_ENTRY
4268 ULONG Hash;
4269 ULONG Index;
4270 } API_SET_HASH_ENTRY;
4272 typedef struct _API_SET_NAMESPACE_ENTRY
4274 ULONG Flags;
4275 ULONG NameOffset;
4276 ULONG NameLength;
4277 ULONG HashedLength;
4278 ULONG ValueOffset;
4279 ULONG ValueCount;
4280 } API_SET_NAMESPACE_ENTRY;
4282 typedef struct _API_SET_VALUE_ENTRY
4284 ULONG Flags;
4285 ULONG NameOffset;
4286 ULONG NameLength;
4287 ULONG ValueOffset;
4288 ULONG ValueLength;
4289 } API_SET_VALUE_ENTRY;
4291 /***********************************************************************
4292 * Function declarations
4295 NTSYSAPI NTSTATUS WINAPI ApiSetQueryApiSetPresence(const UNICODE_STRING*,BOOLEAN*);
4296 NTSYSAPI NTSTATUS WINAPI ApiSetQueryApiSetPresenceEx(const UNICODE_STRING*,BOOLEAN*,BOOLEAN*);
4297 NTSYSAPI void WINAPI DbgBreakPoint(void);
4298 NTSYSAPI NTSTATUS WINAPIV DbgPrint(LPCSTR fmt, ...);
4299 NTSYSAPI NTSTATUS WINAPIV DbgPrintEx(ULONG iComponentId, ULONG Level, LPCSTR fmt, ...);
4300 NTSYSAPI NTSTATUS WINAPI DbgUiConnectToDbg(void);
4301 NTSYSAPI NTSTATUS WINAPI DbgUiContinue(CLIENT_ID*,NTSTATUS);
4302 NTSYSAPI NTSTATUS WINAPI DbgUiConvertStateChangeStructure(DBGUI_WAIT_STATE_CHANGE*,struct _DEBUG_EVENT*);
4303 NTSYSAPI NTSTATUS WINAPI DbgUiDebugActiveProcess(HANDLE);
4304 NTSYSAPI HANDLE WINAPI DbgUiGetThreadDebugObject(void);
4305 NTSYSAPI NTSTATUS WINAPI DbgUiIssueRemoteBreakin(HANDLE);
4306 NTSYSAPI void WINAPI DbgUiRemoteBreakin(void*);
4307 NTSYSAPI void WINAPI DbgUiSetThreadDebugObject(HANDLE);
4308 NTSYSAPI NTSTATUS WINAPI DbgUiStopDebugging(HANDLE);
4309 NTSYSAPI NTSTATUS WINAPI DbgUiWaitStateChange(DBGUI_WAIT_STATE_CHANGE*,LARGE_INTEGER*);
4310 NTSYSAPI void WINAPI DbgUserBreakPoint(void);
4311 NTSYSAPI NTSTATUS WINAPI LdrAccessResource(HMODULE,const IMAGE_RESOURCE_DATA_ENTRY*,void**,PULONG);
4312 NTSYSAPI NTSTATUS WINAPI LdrAddDllDirectory(const UNICODE_STRING*,void**);
4313 NTSYSAPI NTSTATUS WINAPI LdrAddRefDll(ULONG,HMODULE);
4314 NTSYSAPI NTSTATUS WINAPI LdrDisableThreadCalloutsForDll(HMODULE);
4315 NTSYSAPI NTSTATUS WINAPI LdrFindEntryForAddress(const void*, PLDR_DATA_TABLE_ENTRY*);
4316 NTSYSAPI NTSTATUS WINAPI LdrFindResourceDirectory_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DIRECTORY**);
4317 NTSYSAPI NTSTATUS WINAPI LdrFindResource_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DATA_ENTRY**);
4318 NTSYSAPI NTSTATUS WINAPI LdrGetDllDirectory(UNICODE_STRING*);
4319 NTSYSAPI NTSTATUS WINAPI LdrGetDllFullName(HMODULE, UNICODE_STRING*);
4320 NTSYSAPI NTSTATUS WINAPI LdrGetDllHandle(LPCWSTR, ULONG, const UNICODE_STRING*, HMODULE*);
4321 NTSYSAPI NTSTATUS WINAPI LdrGetDllHandleEx(ULONG, LPCWSTR, ULONG *, const UNICODE_STRING*, HMODULE*);
4322 NTSYSAPI NTSTATUS WINAPI LdrGetDllPath(PCWSTR,ULONG,PWSTR*,PWSTR*);
4323 NTSYSAPI NTSTATUS WINAPI LdrGetProcedureAddress(HMODULE, const ANSI_STRING*, ULONG, void**);
4324 NTSYSAPI NTSTATUS WINAPI LdrLoadDll(LPCWSTR, DWORD, const UNICODE_STRING*, HMODULE*);
4325 NTSYSAPI NTSTATUS WINAPI LdrLockLoaderLock(ULONG,ULONG*,ULONG_PTR*);
4326 IMAGE_BASE_RELOCATION * WINAPI LdrProcessRelocationBlock(void*,UINT,USHORT*,INT_PTR);
4327 NTSYSAPI NTSTATUS WINAPI LdrQueryImageFileExecutionOptions(const UNICODE_STRING*,LPCWSTR,ULONG,void*,ULONG,ULONG*);
4328 NTSYSAPI NTSTATUS WINAPI LdrQueryProcessModuleInformation(RTL_PROCESS_MODULES*, ULONG, ULONG*);
4329 NTSYSAPI NTSTATUS WINAPI LdrRegisterDllNotification(ULONG,PLDR_DLL_NOTIFICATION_FUNCTION,void*,void**);
4330 NTSYSAPI NTSTATUS WINAPI LdrRemoveDllDirectory(void*);
4331 NTSYSAPI NTSTATUS WINAPI LdrSetDefaultDllDirectories(ULONG);
4332 NTSYSAPI NTSTATUS WINAPI LdrSetDllDirectory(const UNICODE_STRING*);
4333 NTSYSAPI void WINAPI LdrShutdownProcess(void);
4334 NTSYSAPI void WINAPI LdrShutdownThread(void);
4335 NTSYSAPI NTSTATUS WINAPI LdrUnloadDll(HMODULE);
4336 NTSYSAPI NTSTATUS WINAPI LdrUnlockLoaderLock(ULONG,ULONG_PTR);
4337 NTSYSAPI NTSTATUS WINAPI LdrUnregisterDllNotification(void*);
4338 NTSYSAPI NTSTATUS WINAPI NtAcceptConnectPort(PHANDLE,ULONG,PLPC_MESSAGE,BOOLEAN,PLPC_SECTION_WRITE,PLPC_SECTION_READ);
4339 NTSYSAPI NTSTATUS WINAPI NtAccessCheck(PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,PGENERIC_MAPPING,PPRIVILEGE_SET,PULONG,PULONG,NTSTATUS*);
4340 NTSYSAPI NTSTATUS WINAPI NtAccessCheckAndAuditAlarm(PUNICODE_STRING,HANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,ACCESS_MASK,PGENERIC_MAPPING,BOOLEAN,PACCESS_MASK,PBOOLEAN,PBOOLEAN);
4341 NTSYSAPI NTSTATUS WINAPI NtAddAtom(const WCHAR*,ULONG,RTL_ATOM*);
4342 NTSYSAPI NTSTATUS WINAPI NtAdjustGroupsToken(HANDLE,BOOLEAN,PTOKEN_GROUPS,ULONG,PTOKEN_GROUPS,PULONG);
4343 NTSYSAPI NTSTATUS WINAPI NtAdjustPrivilegesToken(HANDLE,BOOLEAN,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD);
4344 NTSYSAPI NTSTATUS WINAPI NtAlertResumeThread(HANDLE,PULONG);
4345 NTSYSAPI NTSTATUS WINAPI NtAlertThread(HANDLE ThreadHandle);
4346 NTSYSAPI NTSTATUS WINAPI NtAlertThreadByThreadId(HANDLE);
4347 NTSYSAPI NTSTATUS WINAPI NtAllocateLocallyUniqueId(PLUID lpLuid);
4348 NTSYSAPI NTSTATUS WINAPI NtAllocateUuids(PULARGE_INTEGER,PULONG,PULONG,PUCHAR);
4349 NTSYSAPI NTSTATUS WINAPI NtAllocateVirtualMemory(HANDLE,PVOID*,ULONG_PTR,SIZE_T*,ULONG,ULONG);
4350 NTSYSAPI NTSTATUS WINAPI NtAllocateVirtualMemoryEx(HANDLE,PVOID*,SIZE_T*,ULONG,ULONG,MEM_EXTENDED_PARAMETER*,ULONG);
4351 NTSYSAPI NTSTATUS WINAPI NtAreMappedFilesTheSame(PVOID,PVOID);
4352 NTSYSAPI NTSTATUS WINAPI NtAssignProcessToJobObject(HANDLE,HANDLE);
4353 NTSYSAPI NTSTATUS WINAPI NtCallbackReturn(PVOID,ULONG,NTSTATUS);
4354 NTSYSAPI NTSTATUS WINAPI NtCancelIoFile(HANDLE,PIO_STATUS_BLOCK);
4355 NTSYSAPI NTSTATUS WINAPI NtCancelIoFileEx(HANDLE,PIO_STATUS_BLOCK,PIO_STATUS_BLOCK);
4356 NTSYSAPI NTSTATUS WINAPI NtCancelSynchronousIoFile(HANDLE,PIO_STATUS_BLOCK,PIO_STATUS_BLOCK);
4357 NTSYSAPI NTSTATUS WINAPI NtCancelTimer(HANDLE, BOOLEAN*);
4358 NTSYSAPI NTSTATUS WINAPI NtClearEvent(HANDLE);
4359 NTSYSAPI NTSTATUS WINAPI NtClose(HANDLE);
4360 NTSYSAPI NTSTATUS WINAPI NtCloseObjectAuditAlarm(PUNICODE_STRING,HANDLE,BOOLEAN);
4361 NTSYSAPI NTSTATUS WINAPI NtCommitTransaction(HANDLE,BOOLEAN);
4362 NTSYSAPI NTSTATUS WINAPI NtCompareObjects(HANDLE,HANDLE);
4363 NTSYSAPI NTSTATUS WINAPI NtCompleteConnectPort(HANDLE);
4364 NTSYSAPI NTSTATUS WINAPI NtConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
4365 NTSYSAPI NTSTATUS WINAPI NtContinue(PCONTEXT,BOOLEAN);
4366 NTSYSAPI NTSTATUS WINAPI NtCreateDebugObject(HANDLE*,ACCESS_MASK,OBJECT_ATTRIBUTES*,ULONG);
4367 NTSYSAPI NTSTATUS WINAPI NtCreateDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
4368 NTSYSAPI NTSTATUS WINAPI NtCreateEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *,EVENT_TYPE,BOOLEAN);
4369 NTSYSAPI NTSTATUS WINAPI NtCreateEventPair(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
4370 NTSYSAPI NTSTATUS WINAPI NtCreateFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,PLARGE_INTEGER,ULONG,ULONG,ULONG,ULONG,PVOID,ULONG);
4371 NTSYSAPI NTSTATUS WINAPI NtCreateIoCompletion(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,ULONG);
4372 NTSYSAPI NTSTATUS WINAPI NtCreateJobObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
4373 NTSYSAPI NTSTATUS WINAPI NtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
4374 NTSYSAPI NTSTATUS WINAPI NtCreateKeyTransacted(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,HANDLE,ULONG*);
4375 NTSYSAPI NTSTATUS WINAPI NtCreateKeyedEvent(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG);
4376 NTSYSAPI NTSTATUS WINAPI NtCreateLowBoxToken(HANDLE*,HANDLE,ACCESS_MASK,OBJECT_ATTRIBUTES*,SID*,ULONG,SID_AND_ATTRIBUTES*,ULONG,HANDLE*);
4377 NTSYSAPI NTSTATUS WINAPI NtCreateMailslotFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,PLARGE_INTEGER);
4378 NTSYSAPI NTSTATUS WINAPI NtCreateMutant(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,BOOLEAN);
4379 NTSYSAPI NTSTATUS WINAPI NtCreateNamedPipeFile(PHANDLE,ULONG,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,PLARGE_INTEGER);
4380 NTSYSAPI NTSTATUS WINAPI NtCreatePagingFile(PUNICODE_STRING,PLARGE_INTEGER,PLARGE_INTEGER,PLARGE_INTEGER);
4381 NTSYSAPI NTSTATUS WINAPI NtCreatePort(PHANDLE,POBJECT_ATTRIBUTES,ULONG,ULONG,PULONG);
4382 NTSYSAPI NTSTATUS WINAPI NtCreateProcess(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,HANDLE,BOOLEAN,HANDLE,HANDLE,HANDLE);
4383 NTSYSAPI NTSTATUS WINAPI NtCreateProfile(PHANDLE,HANDLE,PVOID,ULONG,ULONG,PVOID,ULONG,KPROFILE_SOURCE,KAFFINITY);
4384 NTSYSAPI NTSTATUS WINAPI NtCreateSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const LARGE_INTEGER*,ULONG,ULONG,HANDLE);
4385 NTSYSAPI NTSTATUS WINAPI NtCreateSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,LONG,LONG);
4386 NTSYSAPI NTSTATUS WINAPI NtCreateSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PUNICODE_STRING);
4387 NTSYSAPI NTSTATUS WINAPI NtCreateThread(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,HANDLE,PCLIENT_ID,PCONTEXT,PINITIAL_TEB,BOOLEAN);
4388 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*);
4389 NTSYSAPI NTSTATUS WINAPI NtCreateTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*, TIMER_TYPE);
4390 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);
4391 NTSYSAPI NTSTATUS WINAPI NtCreateTransaction(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,LPGUID,HANDLE,ULONG,ULONG,ULONG,PLARGE_INTEGER,PUNICODE_STRING);
4392 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*);
4393 NTSYSAPI NTSTATUS WINAPI NtDebugActiveProcess(HANDLE,HANDLE);
4394 NTSYSAPI NTSTATUS WINAPI NtDebugContinue(HANDLE,CLIENT_ID*,NTSTATUS);
4395 NTSYSAPI NTSTATUS WINAPI NtDelayExecution(BOOLEAN,const LARGE_INTEGER*);
4396 NTSYSAPI NTSTATUS WINAPI NtDeleteAtom(RTL_ATOM);
4397 NTSYSAPI NTSTATUS WINAPI NtDeleteFile(POBJECT_ATTRIBUTES);
4398 NTSYSAPI NTSTATUS WINAPI NtDeleteKey(HANDLE);
4399 NTSYSAPI NTSTATUS WINAPI NtDeleteValueKey(HANDLE,const UNICODE_STRING *);
4400 NTSYSAPI NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
4401 NTSYSAPI NTSTATUS WINAPI NtDisplayString(PUNICODE_STRING);
4402 NTSYSAPI NTSTATUS WINAPI NtDuplicateObject(HANDLE,HANDLE,HANDLE,PHANDLE,ACCESS_MASK,ULONG,ULONG);
4403 NTSYSAPI NTSTATUS WINAPI NtDuplicateToken(HANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,BOOLEAN,TOKEN_TYPE,PHANDLE);
4404 NTSYSAPI NTSTATUS WINAPI NtEnumerateKey(HANDLE,ULONG,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
4405 NTSYSAPI NTSTATUS WINAPI NtEnumerateValueKey(HANDLE,ULONG,KEY_VALUE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
4406 NTSYSAPI NTSTATUS WINAPI NtExtendSection(HANDLE,PLARGE_INTEGER);
4407 NTSYSAPI NTSTATUS WINAPI NtFilterToken(HANDLE,ULONG,TOKEN_GROUPS*,TOKEN_PRIVILEGES*,TOKEN_GROUPS*,HANDLE*);
4408 NTSYSAPI NTSTATUS WINAPI NtFindAtom(const WCHAR*,ULONG,RTL_ATOM*);
4409 NTSYSAPI NTSTATUS WINAPI NtFlushBuffersFile(HANDLE,IO_STATUS_BLOCK*);
4410 NTSYSAPI NTSTATUS WINAPI NtFlushInstructionCache(HANDLE,LPCVOID,SIZE_T);
4411 NTSYSAPI NTSTATUS WINAPI NtFlushKey(HANDLE);
4412 NTSYSAPI void WINAPI NtFlushProcessWriteBuffers(void);
4413 NTSYSAPI NTSTATUS WINAPI NtFlushVirtualMemory(HANDLE,LPCVOID*,SIZE_T*,ULONG);
4414 NTSYSAPI NTSTATUS WINAPI NtFlushWriteBuffer(VOID);
4415 NTSYSAPI NTSTATUS WINAPI NtFreeVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
4416 NTSYSAPI NTSTATUS WINAPI NtFsControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
4417 NTSYSAPI NTSTATUS WINAPI NtGetContextThread(HANDLE,CONTEXT*);
4418 NTSYSAPI ULONG WINAPI NtGetCurrentProcessorNumber(void);
4419 NTSYSAPI NTSTATUS WINAPI NtGetNextThread(HANDLE,HANDLE,ACCESS_MASK,ULONG,ULONG,HANDLE*);
4420 NTSYSAPI NTSTATUS WINAPI NtGetNlsSectionPtr(ULONG,ULONG,void*,void**,SIZE_T*);
4421 NTSYSAPI NTSTATUS WINAPI NtGetPlugPlayEvent(ULONG,ULONG,PVOID,ULONG);
4422 NTSYSAPI ULONG WINAPI NtGetTickCount(VOID);
4423 NTSYSAPI NTSTATUS WINAPI NtGetWriteWatch(HANDLE,ULONG,PVOID,SIZE_T,PVOID*,ULONG_PTR*,ULONG*);
4424 NTSYSAPI NTSTATUS WINAPI NtImpersonateAnonymousToken(HANDLE);
4425 NTSYSAPI NTSTATUS WINAPI NtImpersonateClientOfPort(HANDLE,PPORT_MESSAGE);
4426 NTSYSAPI NTSTATUS WINAPI NtImpersonateThread(HANDLE,HANDLE,PSECURITY_QUALITY_OF_SERVICE);
4427 NTSYSAPI NTSTATUS WINAPI NtInitializeNlsFiles(void**,LCID*,LARGE_INTEGER*);
4428 NTSYSAPI NTSTATUS WINAPI NtInitializeRegistry(BOOLEAN);
4429 NTSYSAPI NTSTATUS WINAPI NtInitiatePowerAction(POWER_ACTION,SYSTEM_POWER_STATE,ULONG,BOOLEAN);
4430 NTSYSAPI NTSTATUS WINAPI NtIsProcessInJob(HANDLE,HANDLE);
4431 NTSYSAPI NTSTATUS WINAPI NtListenPort(HANDLE,PLPC_MESSAGE);
4432 NTSYSAPI NTSTATUS WINAPI NtLoadDriver(const UNICODE_STRING *);
4433 NTSYSAPI NTSTATUS WINAPI NtLoadKey(const OBJECT_ATTRIBUTES *,OBJECT_ATTRIBUTES *);
4434 NTSYSAPI NTSTATUS WINAPI NtLoadKey2(const OBJECT_ATTRIBUTES *,OBJECT_ATTRIBUTES *,ULONG);
4435 NTSYSAPI NTSTATUS WINAPI NtLoadKeyEx(const OBJECT_ATTRIBUTES *,OBJECT_ATTRIBUTES *,ULONG,HANDLE,HANDLE,ACCESS_MASK,HANDLE *,IO_STATUS_BLOCK *);
4436 NTSYSAPI NTSTATUS WINAPI NtLockFile(HANDLE,HANDLE,PIO_APC_ROUTINE,void*,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,ULONG*,BOOLEAN,BOOLEAN);
4437 NTSYSAPI NTSTATUS WINAPI NtLockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
4438 NTSYSAPI NTSTATUS WINAPI NtMakeTemporaryObject(HANDLE);
4439 NTSYSAPI NTSTATUS WINAPI NtMapViewOfSection(HANDLE,HANDLE,PVOID*,ULONG_PTR,SIZE_T,const LARGE_INTEGER*,SIZE_T*,SECTION_INHERIT,ULONG,ULONG);
4440 NTSYSAPI NTSTATUS WINAPI NtMapViewOfSectionEx(HANDLE,HANDLE,PVOID*,const LARGE_INTEGER*,SIZE_T*,ULONG,ULONG,MEM_EXTENDED_PARAMETER*,ULONG);
4441 NTSYSAPI NTSTATUS WINAPI NtNotifyChangeDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,ULONG,BOOLEAN);
4442 NTSYSAPI NTSTATUS WINAPI NtNotifyChangeKey(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN);
4443 NTSYSAPI NTSTATUS WINAPI NtNotifyChangeMultipleKeys(HANDLE,ULONG,OBJECT_ATTRIBUTES*,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN);
4444 NTSYSAPI NTSTATUS WINAPI NtOpenDirectoryObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
4445 NTSYSAPI NTSTATUS WINAPI NtOpenEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
4446 NTSYSAPI NTSTATUS WINAPI NtOpenEventPair(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
4447 NTSYSAPI NTSTATUS WINAPI NtOpenFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG);
4448 NTSYSAPI NTSTATUS WINAPI NtOpenIoCompletion(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
4449 NTSYSAPI NTSTATUS WINAPI NtOpenJobObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
4450 NTSYSAPI NTSTATUS WINAPI NtOpenKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
4451 NTSYSAPI NTSTATUS WINAPI NtOpenKeyEx(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG);
4452 NTSYSAPI NTSTATUS WINAPI NtOpenKeyTransacted(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,HANDLE);
4453 NTSYSAPI NTSTATUS WINAPI NtOpenKeyTransactedEx(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,HANDLE);
4454 NTSYSAPI NTSTATUS WINAPI NtOpenKeyedEvent(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
4455 NTSYSAPI NTSTATUS WINAPI NtOpenMutant(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
4456 NTSYSAPI NTSTATUS WINAPI NtOpenObjectAuditAlarm(PUNICODE_STRING,PHANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,ACCESS_MASK,PPRIVILEGE_SET,BOOLEAN,BOOLEAN,PBOOLEAN);
4457 NTSYSAPI NTSTATUS WINAPI NtOpenProcess(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
4458 NTSYSAPI NTSTATUS WINAPI NtOpenProcessToken(HANDLE,DWORD,HANDLE *);
4459 NTSYSAPI NTSTATUS WINAPI NtOpenProcessTokenEx(HANDLE,DWORD,DWORD,HANDLE *);
4460 NTSYSAPI NTSTATUS WINAPI NtOpenSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
4461 NTSYSAPI NTSTATUS WINAPI NtOpenSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
4462 NTSYSAPI NTSTATUS WINAPI NtOpenSymbolicLinkObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
4463 NTSYSAPI NTSTATUS WINAPI NtOpenThread(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
4464 NTSYSAPI NTSTATUS WINAPI NtOpenThreadToken(HANDLE,DWORD,BOOLEAN,HANDLE *);
4465 NTSYSAPI NTSTATUS WINAPI NtOpenThreadTokenEx(HANDLE,DWORD,BOOLEAN,DWORD,HANDLE *);
4466 NTSYSAPI NTSTATUS WINAPI NtOpenTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*);
4467 NTSYSAPI NTSTATUS WINAPI NtPowerInformation(POWER_INFORMATION_LEVEL,PVOID,ULONG,PVOID,ULONG);
4468 NTSYSAPI NTSTATUS WINAPI NtPrivilegeCheck(HANDLE,PPRIVILEGE_SET,PBOOLEAN);
4469 NTSYSAPI NTSTATUS WINAPI NtPrivilegeObjectAuditAlarm(PUNICODE_STRING,HANDLE,HANDLE,ULONG,PPRIVILEGE_SET,BOOLEAN);
4470 NTSYSAPI NTSTATUS WINAPI NtPrivilegedServiceAuditAlarm(PUNICODE_STRING,PUNICODE_STRING,HANDLE,PPRIVILEGE_SET,BOOLEAN);
4471 NTSYSAPI NTSTATUS WINAPI NtProtectVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG,ULONG*);
4472 NTSYSAPI NTSTATUS WINAPI NtPulseEvent(HANDLE,LONG*);
4473 NTSYSAPI NTSTATUS WINAPI NtQueueApcThread(HANDLE,PNTAPCFUNC,ULONG_PTR,ULONG_PTR,ULONG_PTR);
4474 NTSYSAPI NTSTATUS WINAPI NtQueryAttributesFile(const OBJECT_ATTRIBUTES*,FILE_BASIC_INFORMATION*);
4475 NTSYSAPI NTSTATUS WINAPI NtQueryDefaultLocale(BOOLEAN,LCID*);
4476 NTSYSAPI NTSTATUS WINAPI NtQueryDefaultUILanguage(LANGID*);
4477 NTSYSAPI NTSTATUS WINAPI NtQueryDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS,BOOLEAN,PUNICODE_STRING,BOOLEAN);
4478 NTSYSAPI NTSTATUS WINAPI NtQueryDirectoryObject(HANDLE,PDIRECTORY_BASIC_INFORMATION,ULONG,BOOLEAN,BOOLEAN,PULONG,PULONG);
4479 NTSYSAPI NTSTATUS WINAPI NtQueryEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,BOOLEAN,PVOID,ULONG,PULONG,BOOLEAN);
4480 NTSYSAPI NTSTATUS WINAPI NtQueryEvent(HANDLE,EVENT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
4481 NTSYSAPI NTSTATUS WINAPI NtQueryFullAttributesFile(const OBJECT_ATTRIBUTES*,FILE_NETWORK_OPEN_INFORMATION*);
4482 NTSYSAPI NTSTATUS WINAPI NtQueryInformationAtom(RTL_ATOM,ATOM_INFORMATION_CLASS,PVOID,ULONG,ULONG*);
4483 NTSYSAPI NTSTATUS WINAPI NtQueryInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS);
4484 NTSYSAPI NTSTATUS WINAPI NtQueryInformationJobObject(HANDLE,JOBOBJECTINFOCLASS,PVOID,ULONG,PULONG);
4485 NTSYSAPI NTSTATUS WINAPI NtQueryInformationPort(HANDLE,PORT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
4486 NTSYSAPI NTSTATUS WINAPI NtQueryInformationProcess(HANDLE,PROCESSINFOCLASS,PVOID,ULONG,PULONG);
4487 NTSYSAPI NTSTATUS WINAPI NtQueryInformationThread(HANDLE,THREADINFOCLASS,PVOID,ULONG,PULONG);
4488 NTSYSAPI NTSTATUS WINAPI NtQueryInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG,PULONG);
4489 NTSYSAPI NTSTATUS WINAPI NtQueryInstallUILanguage(LANGID*);
4490 NTSYSAPI NTSTATUS WINAPI NtQueryIntervalProfile(KPROFILE_SOURCE,PULONG);
4491 NTSYSAPI NTSTATUS WINAPI NtQueryIoCompletion(HANDLE,IO_COMPLETION_INFORMATION_CLASS,PVOID,ULONG,PULONG);
4492 NTSYSAPI NTSTATUS WINAPI NtQueryKey(HANDLE,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
4493 NTSYSAPI NTSTATUS WINAPI NtQueryMultipleValueKey(HANDLE,PKEY_MULTIPLE_VALUE_INFORMATION,ULONG,PVOID,ULONG,PULONG);
4494 NTSYSAPI NTSTATUS WINAPI NtQueryMutant(HANDLE,MUTANT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
4495 NTSYSAPI NTSTATUS WINAPI NtQueryObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG, PULONG);
4496 NTSYSAPI NTSTATUS WINAPI NtQueryOpenSubKeys(POBJECT_ATTRIBUTES,PULONG);
4497 NTSYSAPI NTSTATUS WINAPI NtQueryPerformanceCounter(PLARGE_INTEGER, PLARGE_INTEGER);
4498 NTSYSAPI NTSTATUS WINAPI NtQuerySecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,ULONG,PULONG);
4499 NTSYSAPI NTSTATUS WINAPI NtQuerySection(HANDLE,SECTION_INFORMATION_CLASS,PVOID,SIZE_T,SIZE_T*);
4500 NTSYSAPI NTSTATUS WINAPI NtQuerySemaphore(HANDLE,SEMAPHORE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
4501 NTSYSAPI NTSTATUS WINAPI NtQuerySymbolicLinkObject(HANDLE,PUNICODE_STRING,PULONG);
4502 NTSYSAPI NTSTATUS WINAPI NtQuerySystemEnvironmentValue(PUNICODE_STRING,PWCHAR,ULONG,PULONG);
4503 NTSYSAPI NTSTATUS WINAPI NtQuerySystemEnvironmentValueEx(PUNICODE_STRING,GUID*,void*,ULONG*,ULONG*);
4504 NTSYSAPI NTSTATUS WINAPI NtQuerySystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG,PULONG);
4505 NTSYSAPI NTSTATUS WINAPI NtQuerySystemInformationEx(SYSTEM_INFORMATION_CLASS,void*,ULONG,void*,ULONG,ULONG*);
4506 NTSYSAPI NTSTATUS WINAPI NtQuerySystemTime(PLARGE_INTEGER);
4507 NTSYSAPI NTSTATUS WINAPI NtQueryTimer(HANDLE,TIMER_INFORMATION_CLASS,PVOID,ULONG,PULONG);
4508 NTSYSAPI NTSTATUS WINAPI NtQueryTimerResolution(PULONG,PULONG,PULONG);
4509 NTSYSAPI NTSTATUS WINAPI NtQueryValueKey(HANDLE,const UNICODE_STRING *,KEY_VALUE_INFORMATION_CLASS,void *,DWORD,DWORD *);
4510 NTSYSAPI NTSTATUS WINAPI NtQueryLicenseValue(const UNICODE_STRING *,ULONG *,PVOID,ULONG,ULONG *);
4511 NTSYSAPI NTSTATUS WINAPI NtQueryVirtualMemory(HANDLE,LPCVOID,MEMORY_INFORMATION_CLASS,PVOID,SIZE_T,SIZE_T*);
4512 NTSYSAPI NTSTATUS WINAPI NtQueryVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
4513 NTSYSAPI NTSTATUS WINAPI NtRaiseException(PEXCEPTION_RECORD,PCONTEXT,BOOL);
4514 NTSYSAPI NTSTATUS WINAPI NtRaiseHardError(NTSTATUS,ULONG,PUNICODE_STRING,PVOID*,HARDERROR_RESPONSE_OPTION,PHARDERROR_RESPONSE);
4515 NTSYSAPI NTSTATUS WINAPI NtReadFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,PLARGE_INTEGER,PULONG);
4516 NTSYSAPI NTSTATUS WINAPI NtReadFileScatter(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,FILE_SEGMENT_ELEMENT*,ULONG,PLARGE_INTEGER,PULONG);
4517 NTSYSAPI NTSTATUS WINAPI NtReadRequestData(HANDLE,PLPC_MESSAGE,ULONG,PVOID,ULONG,PULONG);
4518 NTSYSAPI NTSTATUS WINAPI NtReadVirtualMemory(HANDLE,const void*,void*,SIZE_T,SIZE_T*);
4519 NTSYSAPI NTSTATUS WINAPI NtRegisterThreadTerminatePort(HANDLE);
4520 NTSYSAPI NTSTATUS WINAPI NtReleaseKeyedEvent(HANDLE,const void*,BOOLEAN,const LARGE_INTEGER*);
4521 NTSYSAPI NTSTATUS WINAPI NtReleaseMutant(HANDLE,PLONG);
4522 NTSYSAPI NTSTATUS WINAPI NtReleaseSemaphore(HANDLE,ULONG,PULONG);
4523 NTSYSAPI NTSTATUS WINAPI NtRemoveIoCompletion(HANDLE,PULONG_PTR,PULONG_PTR,PIO_STATUS_BLOCK,PLARGE_INTEGER);
4524 NTSYSAPI NTSTATUS WINAPI NtRemoveIoCompletionEx(HANDLE,FILE_IO_COMPLETION_INFORMATION*,ULONG,ULONG*,LARGE_INTEGER*,BOOLEAN);
4525 NTSYSAPI NTSTATUS WINAPI NtRemoveProcessDebug(HANDLE,HANDLE);
4526 NTSYSAPI NTSTATUS WINAPI NtRenameKey(HANDLE,UNICODE_STRING*);
4527 NTSYSAPI NTSTATUS WINAPI NtReplaceKey(POBJECT_ATTRIBUTES,HANDLE,POBJECT_ATTRIBUTES);
4528 NTSYSAPI NTSTATUS WINAPI NtReplyPort(HANDLE,PLPC_MESSAGE);
4529 NTSYSAPI NTSTATUS WINAPI NtReplyWaitReceivePort(HANDLE,PULONG,PLPC_MESSAGE,PLPC_MESSAGE);
4530 NTSYSAPI NTSTATUS WINAPI NtReplyWaitReceivePortEx(HANDLE,PVOID*,PPORT_MESSAGE,PPORT_MESSAGE,PLARGE_INTEGER);
4531 NTSYSAPI NTSTATUS WINAPI NtReplyWaitReplyPort(HANDLE,PLPC_MESSAGE);
4532 NTSYSAPI NTSTATUS WINAPI NtRequestPort(HANDLE,PLPC_MESSAGE);
4533 NTSYSAPI NTSTATUS WINAPI NtRequestWaitReplyPort(HANDLE,PLPC_MESSAGE,PLPC_MESSAGE);
4534 NTSYSAPI NTSTATUS WINAPI NtResetEvent(HANDLE,LONG*);
4535 NTSYSAPI NTSTATUS WINAPI NtResetWriteWatch(HANDLE,PVOID,SIZE_T);
4536 NTSYSAPI NTSTATUS WINAPI NtRestoreKey(HANDLE,HANDLE,ULONG);
4537 NTSYSAPI NTSTATUS WINAPI NtResumeProcess(HANDLE);
4538 NTSYSAPI NTSTATUS WINAPI NtResumeThread(HANDLE,PULONG);
4539 NTSYSAPI NTSTATUS WINAPI NtRollbackTransaction(HANDLE,BOOLEAN);
4540 NTSYSAPI NTSTATUS WINAPI NtSaveKey(HANDLE,HANDLE);
4541 NTSYSAPI NTSTATUS WINAPI NtSecureConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PSID,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
4542 NTSYSAPI NTSTATUS WINAPI NtSetContextThread(HANDLE,const CONTEXT*);
4543 NTSYSAPI NTSTATUS WINAPI NtSetDebugFilterState(ULONG,ULONG,BOOLEAN);
4544 NTSYSAPI NTSTATUS WINAPI NtSetDefaultHardErrorPort(HANDLE);
4545 NTSYSAPI NTSTATUS WINAPI NtSetDefaultLocale(BOOLEAN,LCID);
4546 NTSYSAPI NTSTATUS WINAPI NtSetDefaultUILanguage(LANGID);
4547 NTSYSAPI NTSTATUS WINAPI NtSetEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG);
4548 NTSYSAPI NTSTATUS WINAPI NtSetEvent(HANDLE,LONG*);
4549 NTSYSAPI NTSTATUS WINAPI NtSetHighEventPair(HANDLE);
4550 NTSYSAPI NTSTATUS WINAPI NtSetHighWaitLowEventPair(HANDLE);
4551 NTSYSAPI NTSTATUS WINAPI NtSetHighWaitLowThread(VOID);
4552 NTSYSAPI NTSTATUS WINAPI NtSetInformationDebugObject(HANDLE,DEBUGOBJECTINFOCLASS,PVOID,ULONG,ULONG*);
4553 NTSYSAPI NTSTATUS WINAPI NtSetInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS);
4554 NTSYSAPI NTSTATUS WINAPI NtSetInformationJobObject(HANDLE,JOBOBJECTINFOCLASS,PVOID,ULONG);
4555 NTSYSAPI NTSTATUS WINAPI NtSetInformationKey(HANDLE,const int,PVOID,ULONG);
4556 NTSYSAPI NTSTATUS WINAPI NtSetInformationObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG);
4557 NTSYSAPI NTSTATUS WINAPI NtSetInformationProcess(HANDLE,PROCESSINFOCLASS,PVOID,ULONG);
4558 NTSYSAPI NTSTATUS WINAPI NtSetInformationThread(HANDLE,THREADINFOCLASS,LPCVOID,ULONG);
4559 NTSYSAPI NTSTATUS WINAPI NtSetInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG);
4560 NTSYSAPI NTSTATUS WINAPI NtSetInformationVirtualMemory(HANDLE,VIRTUAL_MEMORY_INFORMATION_CLASS,ULONG_PTR,PMEMORY_RANGE_ENTRY,PVOID,ULONG);
4561 NTSYSAPI NTSTATUS WINAPI NtSetIntervalProfile(ULONG,KPROFILE_SOURCE);
4562 NTSYSAPI NTSTATUS WINAPI NtSetIoCompletion(HANDLE,ULONG_PTR,ULONG_PTR,NTSTATUS,SIZE_T);
4563 NTSYSAPI NTSTATUS WINAPI NtSetLdtEntries(ULONG,LDT_ENTRY,ULONG,LDT_ENTRY);
4564 NTSYSAPI NTSTATUS WINAPI NtSetLowEventPair(HANDLE);
4565 NTSYSAPI NTSTATUS WINAPI NtSetLowWaitHighEventPair(HANDLE);
4566 NTSYSAPI NTSTATUS WINAPI NtSetLowWaitHighThread(VOID);
4567 NTSYSAPI NTSTATUS WINAPI NtSetSecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
4568 NTSYSAPI NTSTATUS WINAPI NtSetSystemEnvironmentValue(PUNICODE_STRING,PUNICODE_STRING);
4569 NTSYSAPI NTSTATUS WINAPI NtSetSystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG);
4570 NTSYSAPI NTSTATUS WINAPI NtSetSystemPowerState(POWER_ACTION,SYSTEM_POWER_STATE,ULONG);
4571 NTSYSAPI NTSTATUS WINAPI NtSetSystemTime(const LARGE_INTEGER*,LARGE_INTEGER*);
4572 NTSYSAPI NTSTATUS WINAPI NtSetThreadExecutionState(EXECUTION_STATE,EXECUTION_STATE*);
4573 NTSYSAPI NTSTATUS WINAPI NtSetTimer(HANDLE, const LARGE_INTEGER*, PTIMER_APC_ROUTINE, PVOID, BOOLEAN, ULONG, BOOLEAN*);
4574 NTSYSAPI NTSTATUS WINAPI NtSetTimerResolution(ULONG,BOOLEAN,PULONG);
4575 NTSYSAPI NTSTATUS WINAPI NtSetValueKey(HANDLE,const UNICODE_STRING *,ULONG,ULONG,const void *,ULONG);
4576 NTSYSAPI NTSTATUS WINAPI NtSetVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
4577 NTSYSAPI NTSTATUS WINAPI NtSignalAndWaitForSingleObject(HANDLE,HANDLE,BOOLEAN,const LARGE_INTEGER*);
4578 NTSYSAPI NTSTATUS WINAPI NtShutdownSystem(SHUTDOWN_ACTION);
4579 NTSYSAPI NTSTATUS WINAPI NtStartProfile(HANDLE);
4580 NTSYSAPI NTSTATUS WINAPI NtStopProfile(HANDLE);
4581 NTSYSAPI NTSTATUS WINAPI NtSuspendProcess(HANDLE);
4582 NTSYSAPI NTSTATUS WINAPI NtSuspendThread(HANDLE,PULONG);
4583 NTSYSAPI NTSTATUS WINAPI NtSystemDebugControl(SYSDBG_COMMAND,PVOID,ULONG,PVOID,ULONG,PULONG);
4584 NTSYSAPI NTSTATUS WINAPI NtTerminateJobObject(HANDLE,NTSTATUS);
4585 NTSYSAPI NTSTATUS WINAPI NtTerminateProcess(HANDLE,LONG);
4586 NTSYSAPI NTSTATUS WINAPI NtTerminateThread(HANDLE,LONG);
4587 NTSYSAPI NTSTATUS WINAPI NtTestAlert(VOID);
4588 NTSYSAPI NTSTATUS WINAPI NtTraceControl(ULONG,void*,ULONG,void*,ULONG,ULONG*);
4589 NTSYSAPI NTSTATUS WINAPI NtUnloadDriver(const UNICODE_STRING *);
4590 NTSYSAPI NTSTATUS WINAPI NtUnloadKey(POBJECT_ATTRIBUTES);
4591 NTSYSAPI NTSTATUS WINAPI NtUnloadKeyEx(POBJECT_ATTRIBUTES,HANDLE);
4592 NTSYSAPI NTSTATUS WINAPI NtUnlockFile(HANDLE,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,PULONG);
4593 NTSYSAPI NTSTATUS WINAPI NtUnlockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
4594 NTSYSAPI NTSTATUS WINAPI NtUnmapViewOfSection(HANDLE,PVOID);
4595 NTSYSAPI NTSTATUS WINAPI NtUnmapViewOfSectionEx(HANDLE,PVOID,ULONG);
4596 NTSYSAPI NTSTATUS WINAPI NtVdmControl(ULONG,PVOID);
4597 NTSYSAPI NTSTATUS WINAPI NtWaitForAlertByThreadId(const void*,const LARGE_INTEGER*);
4598 NTSYSAPI NTSTATUS WINAPI NtWaitForDebugEvent(HANDLE,BOOLEAN,LARGE_INTEGER*,DBGUI_WAIT_STATE_CHANGE*);
4599 NTSYSAPI NTSTATUS WINAPI NtWaitForKeyedEvent(HANDLE,const void*,BOOLEAN,const LARGE_INTEGER*);
4600 NTSYSAPI NTSTATUS WINAPI NtWaitForSingleObject(HANDLE,BOOLEAN,const LARGE_INTEGER*);
4601 NTSYSAPI NTSTATUS WINAPI NtWaitForMultipleObjects(ULONG,const HANDLE*,BOOLEAN,BOOLEAN,const LARGE_INTEGER*);
4602 NTSYSAPI NTSTATUS WINAPI NtWaitHighEventPair(HANDLE);
4603 NTSYSAPI NTSTATUS WINAPI NtWaitLowEventPair(HANDLE);
4604 NTSYSAPI NTSTATUS WINAPI NtWriteFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,const void*,ULONG,PLARGE_INTEGER,PULONG);
4605 NTSYSAPI NTSTATUS WINAPI NtWriteFileGather(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,FILE_SEGMENT_ELEMENT*,ULONG,PLARGE_INTEGER,PULONG);
4606 NTSYSAPI NTSTATUS WINAPI NtWriteRequestData(HANDLE,PLPC_MESSAGE,ULONG,PVOID,ULONG,PULONG);
4607 NTSYSAPI NTSTATUS WINAPI NtWriteVirtualMemory(HANDLE,void*,const void*,SIZE_T,SIZE_T*);
4608 NTSYSAPI NTSTATUS WINAPI NtYieldExecution(void);
4609 NTSYSAPI NTSTATUS WINAPI RtlAbsoluteToSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PULONG);
4610 NTSYSAPI void WINAPI RtlAcquirePebLock(void);
4611 NTSYSAPI BYTE WINAPI RtlAcquireResourceExclusive(LPRTL_RWLOCK,BYTE);
4612 NTSYSAPI BYTE WINAPI RtlAcquireResourceShared(LPRTL_RWLOCK,BYTE);
4613 NTSYSAPI void WINAPI RtlAcquireSRWLockExclusive(RTL_SRWLOCK*);
4614 NTSYSAPI void WINAPI RtlAcquireSRWLockShared(RTL_SRWLOCK*);
4615 NTSYSAPI NTSTATUS WINAPI RtlActivateActivationContext(DWORD,HANDLE,ULONG_PTR*);
4616 NTSYSAPI NTSTATUS WINAPI RtlActivateActivationContextEx(ULONG,TEB*,HANDLE,ULONG_PTR*);
4617 NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAce(PACL,DWORD,DWORD,PSID);
4618 NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
4619 NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedObjectAce(PACL,DWORD,DWORD,DWORD,GUID*,GUID*,PSID);
4620 NTSYSAPI NTSTATUS WINAPI RtlAddAccessDeniedAce(PACL,DWORD,DWORD,PSID);
4621 NTSYSAPI NTSTATUS WINAPI RtlAddAccessDeniedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
4622 NTSYSAPI NTSTATUS WINAPI RtlAddAccessDeniedObjectAce(PACL,DWORD,DWORD,DWORD,GUID*,GUID*,PSID);
4623 NTSYSAPI NTSTATUS WINAPI RtlAddAce(PACL,DWORD,DWORD,PACE_HEADER,DWORD);
4624 NTSYSAPI NTSTATUS WINAPI RtlAddAtomToAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*);
4625 NTSYSAPI NTSTATUS WINAPI RtlAddAuditAccessAce(PACL,DWORD,DWORD,PSID,BOOL,BOOL);
4626 NTSYSAPI NTSTATUS WINAPI RtlAddAuditAccessAceEx(PACL,DWORD,DWORD,DWORD,PSID,BOOL,BOOL);
4627 NTSYSAPI NTSTATUS WINAPI RtlAddAuditAccessObjectAce(PACL,DWORD,DWORD,DWORD,GUID*,GUID*,PSID,BOOL,BOOL);
4628 NTSYSAPI NTSTATUS WINAPI RtlAddMandatoryAce(PACL,DWORD,DWORD,DWORD,DWORD,PSID);
4629 NTSYSAPI NTSTATUS WINAPI RtlAddProcessTrustLabelAce(PACL,DWORD,DWORD,PSID,DWORD,DWORD);
4630 NTSYSAPI void WINAPI RtlAddRefActivationContext(HANDLE);
4631 NTSYSAPI PVOID WINAPI RtlAddVectoredContinueHandler(ULONG,PVECTORED_EXCEPTION_HANDLER);
4632 NTSYSAPI PVOID WINAPI RtlAddVectoredExceptionHandler(ULONG,PVECTORED_EXCEPTION_HANDLER);
4633 NTSYSAPI PVOID WINAPI RtlAddressInSectionTable(const IMAGE_NT_HEADERS*,HMODULE,DWORD);
4634 NTSYSAPI NTSTATUS WINAPI RtlAdjustPrivilege(ULONG,BOOLEAN,BOOLEAN,PBOOLEAN);
4635 NTSYSAPI NTSTATUS WINAPI RtlAllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PSID *);
4636 NTSYSAPI RTL_HANDLE * WINAPI RtlAllocateHandle(RTL_HANDLE_TABLE *,ULONG *);
4637 NTSYSAPI BOOLEAN WINAPI RtlFreeHeap(HANDLE,ULONG,PVOID);
4638 NTSYSAPI PVOID WINAPI RtlAllocateHeap(HANDLE,ULONG,SIZE_T) __WINE_ALLOC_SIZE(3) __WINE_DEALLOC(RtlFreeHeap,3) __WINE_MALLOC;
4639 NTSYSAPI WCHAR WINAPI RtlAnsiCharToUnicodeChar(LPSTR *);
4640 NTSYSAPI DWORD WINAPI RtlAnsiStringToUnicodeSize(const STRING *);
4641 NTSYSAPI NTSTATUS WINAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING,PCANSI_STRING,BOOLEAN);
4642 NTSYSAPI NTSTATUS WINAPI RtlAppendAsciizToString(STRING *,LPCSTR);
4643 NTSYSAPI NTSTATUS WINAPI RtlAppendStringToString(STRING *,const STRING *);
4644 NTSYSAPI NTSTATUS WINAPI RtlAppendUnicodeStringToString(UNICODE_STRING *,const UNICODE_STRING *);
4645 NTSYSAPI NTSTATUS WINAPI RtlAppendUnicodeToString(UNICODE_STRING *,LPCWSTR);
4646 NTSYSAPI BOOLEAN WINAPI RtlAreAllAccessesGranted(ACCESS_MASK,ACCESS_MASK);
4647 NTSYSAPI BOOLEAN WINAPI RtlAreAnyAccessesGranted(ACCESS_MASK,ACCESS_MASK);
4648 NTSYSAPI BOOLEAN WINAPI RtlAreBitsSet(PCRTL_BITMAP,ULONG,ULONG);
4649 NTSYSAPI BOOLEAN WINAPI RtlAreBitsClear(PCRTL_BITMAP,ULONG,ULONG);
4650 NTSYSAPI USHORT WINAPI RtlCaptureStackBackTrace(ULONG,ULONG,PVOID*,ULONG*);
4651 NTSYSAPI NTSTATUS WINAPI RtlCharToInteger(PCSZ,ULONG,PULONG);
4652 NTSYSAPI NTSTATUS WINAPI RtlCheckRegistryKey(ULONG, PWSTR);
4653 NTSYSAPI void WINAPI RtlClearAllBits(PRTL_BITMAP);
4654 NTSYSAPI void WINAPI RtlClearBits(PRTL_BITMAP,ULONG,ULONG);
4655 NTSYSAPI ULONG WINAPI RtlCompactHeap(HANDLE,ULONG);
4656 NTSYSAPI LONG WINAPI RtlCompareUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
4657 NTSYSAPI LONG WINAPI RtlCompareUnicodeStrings(const WCHAR*,SIZE_T,const WCHAR*,SIZE_T,BOOLEAN);
4658 NTSYSAPI NTSTATUS WINAPI RtlCompressBuffer(USHORT,PUCHAR,ULONG,PUCHAR,ULONG,ULONG,PULONG,PVOID);
4659 NTSYSAPI DWORD WINAPI RtlComputeCrc32(DWORD,const BYTE*,INT);
4660 NTSYSAPI NTSTATUS WINAPI RtlConvertSidToUnicodeString(PUNICODE_STRING,PSID,BOOLEAN);
4661 NTSYSAPI NTSTATUS WINAPI RtlConvertToAutoInheritSecurityObject(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,GUID*,BOOL,PGENERIC_MAPPING);
4662 NTSYSAPI NTSTATUS WINAPI RtlCopyContext(CONTEXT*,DWORD,CONTEXT*);
4663 NTSYSAPI NTSTATUS WINAPI RtlCopyExtendedContext(CONTEXT_EX*,ULONG,CONTEXT_EX*);
4664 NTSYSAPI void WINAPI RtlCopyLuid(PLUID,const LUID*);
4665 NTSYSAPI void WINAPI RtlCopyLuidAndAttributesArray(ULONG,const LUID_AND_ATTRIBUTES*,PLUID_AND_ATTRIBUTES);
4666 NTSYSAPI NTSTATUS WINAPI RtlCopySecurityDescriptor(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR);
4667 NTSYSAPI BOOLEAN WINAPI RtlCopySid(DWORD,PSID,PSID);
4668 NTSYSAPI void WINAPI RtlCopyUnicodeString(UNICODE_STRING*,const UNICODE_STRING*);
4669 NTSYSAPI NTSTATUS WINAPI RtlCreateAcl(PACL,DWORD,DWORD);
4670 NTSYSAPI NTSTATUS WINAPI RtlCreateActivationContext(HANDLE*,const void*);
4671 NTSYSAPI NTSTATUS WINAPI RtlCreateAtomTable(ULONG,RTL_ATOM_TABLE*);
4672 NTSYSAPI NTSTATUS WINAPI RtlCreateEnvironment(BOOLEAN, PWSTR*);
4673 NTSYSAPI HANDLE WINAPI RtlCreateHeap(ULONG,PVOID,SIZE_T,SIZE_T,PVOID,PRTL_HEAP_DEFINITION);
4674 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*);
4675 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);
4676 NTSYSAPI PDEBUG_BUFFER WINAPI RtlCreateQueryDebugBuffer(ULONG,BOOLEAN);
4677 NTSYSAPI NTSTATUS WINAPI RtlCreateRegistryKey(ULONG,PWSTR);
4678 NTSYSAPI NTSTATUS WINAPI RtlCreateSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD);
4679 NTSYSAPI NTSTATUS WINAPI RtlCreateTimer(HANDLE,HANDLE*,RTL_WAITORTIMERCALLBACKFUNC, PVOID, DWORD, DWORD, ULONG);
4680 NTSYSAPI NTSTATUS WINAPI RtlCreateTimerQueue(PHANDLE);
4681 NTSYSAPI BOOLEAN WINAPI RtlCreateUnicodeString(PUNICODE_STRING,LPCWSTR);
4682 NTSYSAPI BOOLEAN WINAPI RtlCreateUnicodeStringFromAsciiz(PUNICODE_STRING,LPCSTR);
4683 NTSYSAPI NTSTATUS WINAPI RtlCreateUserProcess(UNICODE_STRING*,ULONG,RTL_USER_PROCESS_PARAMETERS*,SECURITY_DESCRIPTOR*,SECURITY_DESCRIPTOR*,HANDLE,BOOLEAN,HANDLE,HANDLE,RTL_USER_PROCESS_INFORMATION*);
4684 NTSYSAPI NTSTATUS WINAPI RtlCreateUserStack(SIZE_T,SIZE_T,ULONG,SIZE_T,SIZE_T,INITIAL_TEB*);
4685 NTSYSAPI NTSTATUS WINAPI RtlCreateUserThread(HANDLE,SECURITY_DESCRIPTOR*,BOOLEAN,ULONG,SIZE_T,SIZE_T,PRTL_THREAD_START_ROUTINE,void*,HANDLE*,CLIENT_ID*);
4686 NTSYSAPI NTSTATUS WINAPI RtlCustomCPToUnicodeN(CPTABLEINFO*,WCHAR*,DWORD,DWORD*,const char*,DWORD);
4687 NTSYSAPI PRTL_USER_PROCESS_PARAMETERS WINAPI RtlDeNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
4688 NTSYSAPI void WINAPI RtlDeactivateActivationContext(DWORD,ULONG_PTR);
4689 NTSYSAPI PVOID WINAPI RtlDecodePointer(PVOID);
4690 NTSYSAPI NTSTATUS WINAPI RtlDecompressBuffer(USHORT,PUCHAR,ULONG,PUCHAR,ULONG,PULONG);
4691 NTSYSAPI NTSTATUS WINAPI RtlDecompressFragment(USHORT,PUCHAR,ULONG,PUCHAR,ULONG,ULONG,PULONG,PVOID);
4692 NTSYSAPI NTSTATUS WINAPI RtlDefaultNpAcl(PACL*);
4693 NTSYSAPI NTSTATUS WINAPI RtlDeleteAce(PACL,DWORD);
4694 NTSYSAPI NTSTATUS WINAPI RtlDeleteAtomFromAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
4695 NTSYSAPI NTSTATUS WINAPI RtlDeleteCriticalSection(RTL_CRITICAL_SECTION *);
4696 NTSYSAPI NTSTATUS WINAPI RtlDeleteRegistryValue(ULONG, PCWSTR, PCWSTR);
4697 NTSYSAPI void WINAPI RtlDeleteResource(LPRTL_RWLOCK);
4698 NTSYSAPI NTSTATUS WINAPI RtlDeleteSecurityObject(PSECURITY_DESCRIPTOR*);
4699 NTSYSAPI NTSTATUS WINAPI RtlDeleteTimer(HANDLE, HANDLE, HANDLE);
4700 NTSYSAPI NTSTATUS WINAPI RtlDeleteTimerQueueEx(HANDLE, HANDLE);
4701 NTSYSAPI PRTL_USER_PROCESS_PARAMETERS WINAPI RtlDeNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
4702 NTSYSAPI NTSTATUS WINAPI RtlDeregisterWait(HANDLE);
4703 NTSYSAPI NTSTATUS WINAPI RtlDeregisterWaitEx(HANDLE,HANDLE);
4704 NTSYSAPI NTSTATUS WINAPI RtlDestroyAtomTable(RTL_ATOM_TABLE);
4705 NTSYSAPI NTSTATUS WINAPI RtlDestroyEnvironment(PWSTR);
4706 NTSYSAPI NTSTATUS WINAPI RtlDestroyHandleTable(RTL_HANDLE_TABLE *);
4707 NTSYSAPI HANDLE WINAPI RtlDestroyHeap(HANDLE);
4708 NTSYSAPI void WINAPI RtlDestroyProcessParameters(RTL_USER_PROCESS_PARAMETERS*);
4709 NTSYSAPI NTSTATUS WINAPI RtlDestroyQueryDebugBuffer(PDEBUG_BUFFER);
4710 NTSYSAPI DOS_PATHNAME_TYPE WINAPI RtlDetermineDosPathNameType_U(PCWSTR);
4711 NTSYSAPI BOOLEAN WINAPI RtlDllShutdownInProgress(void);
4712 NTSYSAPI BOOLEAN WINAPI RtlDoesFileExists_U(LPCWSTR);
4713 NTSYSAPI BOOLEAN WINAPI RtlDosPathNameToNtPathName_U(PCWSTR,PUNICODE_STRING,PWSTR*,CURDIR*);
4714 NTSYSAPI NTSTATUS WINAPI RtlDosPathNameToNtPathName_U_WithStatus(PCWSTR,PUNICODE_STRING,PWSTR*,CURDIR*);
4715 NTSYSAPI BOOLEAN WINAPI RtlDosPathNameToRelativeNtPathName_U(PCWSTR,PUNICODE_STRING,PWSTR*,RTL_RELATIVE_NAME*);
4716 NTSYSAPI NTSTATUS WINAPI RtlDosPathNameToRelativeNtPathName_U_WithStatus(PCWSTR,PUNICODE_STRING,PWSTR*,RTL_RELATIVE_NAME*);
4717 NTSYSAPI ULONG WINAPI RtlDosSearchPath_U(LPCWSTR, LPCWSTR, LPCWSTR, ULONG, LPWSTR, LPWSTR*);
4718 NTSYSAPI WCHAR WINAPI RtlDowncaseUnicodeChar(WCHAR);
4719 NTSYSAPI NTSTATUS WINAPI RtlDowncaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
4720 NTSYSAPI void WINAPI RtlDumpResource(LPRTL_RWLOCK);
4721 NTSYSAPI NTSTATUS WINAPI RtlDuplicateUnicodeString(int,const UNICODE_STRING*,UNICODE_STRING*);
4722 NTSYSAPI NTSTATUS WINAPI RtlEmptyAtomTable(RTL_ATOM_TABLE,BOOLEAN);
4723 NTSYSAPI PVOID WINAPI RtlEncodePointer(PVOID);
4724 NTSYSAPI NTSTATUS WINAPI RtlEnterCriticalSection(RTL_CRITICAL_SECTION *);
4725 NTSYSAPI void WINAPI RtlEraseUnicodeString(UNICODE_STRING*);
4726 NTSYSAPI NTSTATUS WINAPI RtlEqualComputerName(const UNICODE_STRING*,const UNICODE_STRING*);
4727 NTSYSAPI NTSTATUS WINAPI RtlEqualDomainName(const UNICODE_STRING*,const UNICODE_STRING*);
4728 NTSYSAPI BOOLEAN WINAPI RtlEqualLuid(const LUID*,const LUID*);
4729 NTSYSAPI BOOL WINAPI RtlEqualPrefixSid(PSID,PSID);
4730 NTSYSAPI BOOL WINAPI RtlEqualSid(PSID,PSID);
4731 NTSYSAPI BOOLEAN WINAPI RtlEqualUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
4732 NTSYSAPI void WINAPI RtlEraseUnicodeString(UNICODE_STRING*);
4733 NTSYSAPI void DECLSPEC_NORETURN WINAPI RtlExitUserProcess(ULONG);
4734 NTSYSAPI void DECLSPEC_NORETURN WINAPI RtlExitUserThread(ULONG);
4735 NTSYSAPI NTSTATUS WINAPI RtlExpandEnvironmentStrings(const WCHAR*,WCHAR*,SIZE_T,WCHAR*,SIZE_T,SIZE_T*);
4736 NTSYSAPI NTSTATUS WINAPI RtlExpandEnvironmentStrings_U(PCWSTR, const UNICODE_STRING*, UNICODE_STRING*, ULONG*);
4737 NTSYSAPI NTSTATUS WINAPI RtlFindActivationContextSectionString(ULONG,const GUID*,ULONG,const UNICODE_STRING*,PVOID);
4738 NTSYSAPI NTSTATUS WINAPI RtlFindActivationContextSectionGuid(ULONG,const GUID*,ULONG,const GUID*,PVOID);
4739 NTSYSAPI NTSTATUS WINAPI RtlFindCharInUnicodeString(int,const UNICODE_STRING*,const UNICODE_STRING*,USHORT*);
4740 NTSYSAPI ULONG WINAPI RtlFindClearBits(PCRTL_BITMAP,ULONG,ULONG);
4741 NTSYSAPI ULONG WINAPI RtlFindClearBitsAndSet(PRTL_BITMAP,ULONG,ULONG);
4742 NTSYSAPI ULONG WINAPI RtlFindClearRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
4743 NTSYSAPI void * WINAPI RtlFindExportedRoutineByName(HMODULE,const char*);
4744 NTSYSAPI ULONG WINAPI RtlFindLastBackwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
4745 NTSYSAPI ULONG WINAPI RtlFindLastBackwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
4746 NTSYSAPI CCHAR WINAPI RtlFindLeastSignificantBit(ULONGLONG);
4747 NTSYSAPI ULONG WINAPI RtlFindLongestRunSet(PCRTL_BITMAP,PULONG);
4748 NTSYSAPI ULONG WINAPI RtlFindLongestRunClear(PCRTL_BITMAP,PULONG);
4749 NTSYSAPI NTSTATUS WINAPI RtlFindMessage(HMODULE,ULONG,ULONG,ULONG,const MESSAGE_RESOURCE_ENTRY**);
4750 NTSYSAPI CCHAR WINAPI RtlFindMostSignificantBit(ULONGLONG);
4751 NTSYSAPI ULONG WINAPI RtlFindNextForwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
4752 NTSYSAPI ULONG WINAPI RtlFindNextForwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
4753 NTSYSAPI ULONG WINAPI RtlFindSetBits(PCRTL_BITMAP,ULONG,ULONG);
4754 NTSYSAPI ULONG WINAPI RtlFindSetBitsAndClear(PRTL_BITMAP,ULONG,ULONG);
4755 NTSYSAPI ULONG WINAPI RtlFindSetRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
4756 NTSYSAPI BOOLEAN WINAPI RtlFirstFreeAce(PACL,PACE_HEADER *);
4757 NTSYSAPI NTSTATUS WINAPI RtlFlsAlloc(PFLS_CALLBACK_FUNCTION,ULONG *);
4758 NTSYSAPI NTSTATUS WINAPI RtlFlsFree(ULONG);
4759 NTSYSAPI NTSTATUS WINAPI RtlFlsGetValue(ULONG,void **);
4760 NTSYSAPI NTSTATUS WINAPI RtlFlsSetValue(ULONG,void *);
4761 NTSYSAPI NTSTATUS WINAPI RtlFormatCurrentUserKeyPath(PUNICODE_STRING);
4762 #ifdef __ms_va_list
4763 NTSYSAPI NTSTATUS WINAPI RtlFormatMessage(LPCWSTR,ULONG,BOOLEAN,BOOLEAN,BOOLEAN,__ms_va_list *,LPWSTR,ULONG,ULONG*);
4764 NTSYSAPI NTSTATUS WINAPI RtlFormatMessageEx(LPCWSTR,ULONG,BOOLEAN,BOOLEAN,BOOLEAN,__ms_va_list *,LPWSTR,ULONG,ULONG*,ULONG);
4765 #endif
4766 NTSYSAPI void WINAPI RtlFreeActivationContextStack(ACTIVATION_CONTEXT_STACK *);
4767 NTSYSAPI void WINAPI RtlFreeAnsiString(PANSI_STRING);
4768 NTSYSAPI BOOLEAN WINAPI RtlFreeHandle(RTL_HANDLE_TABLE *,RTL_HANDLE *);
4769 NTSYSAPI void WINAPI RtlFreeOemString(POEM_STRING);
4770 NTSYSAPI DWORD WINAPI RtlFreeSid(PSID);
4771 NTSYSAPI void WINAPI RtlFreeThreadActivationContextStack(void);
4772 NTSYSAPI void WINAPI RtlFreeUnicodeString(PUNICODE_STRING);
4773 NTSYSAPI void WINAPI RtlFreeUserStack(void*);
4774 NTSYSAPI NTSTATUS WINAPI RtlGUIDFromString(PUNICODE_STRING,GUID*);
4775 NTSYSAPI NTSTATUS WINAPI RtlGetAce(PACL,DWORD,LPVOID *);
4776 NTSYSAPI NTSTATUS WINAPI RtlGetActiveActivationContext(HANDLE*);
4777 NTSYSAPI NTSTATUS WINAPI RtlGetCompressionWorkSpaceSize(USHORT,PULONG,PULONG);
4778 NTSYSAPI NTSTATUS WINAPI RtlGetControlSecurityDescriptor(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL,LPDWORD);
4779 NTSYSAPI ULONG WINAPI RtlGetCurrentDirectory_U(ULONG, LPWSTR);
4780 NTSYSAPI PEB * WINAPI RtlGetCurrentPeb(void);
4781 NTSYSAPI void WINAPI RtlGetCurrentProcessorNumberEx(PROCESSOR_NUMBER*);
4782 NTSYSAPI HANDLE WINAPI RtlGetCurrentTransaction(void);
4783 NTSYSAPI NTSTATUS WINAPI RtlGetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
4784 NTSYSAPI ULONG64 WINAPI RtlGetEnabledExtendedFeatures(ULONG64);
4785 NTSYSAPI NTSTATUS WINAPI RtlGetExePath(PCWSTR,PWSTR*);
4786 NTSYSAPI NTSTATUS WINAPI RtlGetExtendedContextLength(ULONG,ULONG*);
4787 NTSYSAPI NTSTATUS WINAPI RtlGetExtendedContextLength2(ULONG,ULONG*,ULONG64);
4788 NTSYSAPI ULONG64 WINAPI RtlGetExtendedFeaturesMask(CONTEXT_EX*);
4789 NTSYSAPI TEB_ACTIVE_FRAME * WINAPI RtlGetFrame(void);
4790 NTSYSAPI ULONG WINAPI RtlGetFullPathName_U(PCWSTR,ULONG,PWSTR,PWSTR*);
4791 NTSYSAPI NTSTATUS WINAPI RtlGetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
4792 NTSYSAPI NTSTATUS WINAPI RtlGetLastNtStatus(void);
4793 NTSYSAPI DWORD WINAPI RtlGetLastWin32Error(void);
4794 NTSYSAPI NTSTATUS WINAPI RtlGetLocaleFileMappingAddress(void**,LCID*,LARGE_INTEGER*);
4795 NTSYSAPI DWORD WINAPI RtlGetLongestNtPathLength(void);
4796 NTSYSAPI NTSTATUS WINAPI RtlGetNativeSystemInformation(SYSTEM_INFORMATION_CLASS,void*,ULONG,ULONG*);
4797 NTSYSAPI ULONG WINAPI RtlGetNtGlobalFlags(void);
4798 NTSYSAPI BOOLEAN WINAPI RtlGetNtProductType(LPDWORD);
4799 NTSYSAPI void WINAPI RtlGetNtVersionNumbers(LPDWORD,LPDWORD,LPDWORD);
4800 NTSYSAPI NTSTATUS WINAPI RtlGetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
4801 NTSYSAPI ULONG WINAPI RtlGetProcessHeaps(ULONG,HANDLE*);
4802 NTSYSAPI NTSTATUS WINAPI RtlGetProcessPreferredUILanguages(DWORD,ULONG*,WCHAR*,ULONG*);
4803 NTSYSAPI BOOLEAN WINAPI RtlGetProductInfo(DWORD,DWORD,DWORD,DWORD,PDWORD);
4804 NTSYSAPI NTSTATUS WINAPI RtlGetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
4805 NTSYSAPI NTSTATUS WINAPI RtlGetSearchPath(PWSTR*);
4806 NTSYSAPI NTSTATUS WINAPI RtlGetSystemPreferredUILanguages(DWORD,ULONG,ULONG*,WCHAR*,ULONG*);
4807 NTSYSAPI LONGLONG WINAPI RtlGetSystemTimePrecise(void);
4808 NTSYSAPI DWORD WINAPI RtlGetThreadErrorMode(void);
4809 NTSYSAPI NTSTATUS WINAPI RtlGetThreadPreferredUILanguages(DWORD,ULONG*,WCHAR*,ULONG*);
4810 NTSYSAPI BOOLEAN WINAPI RtlGetUserInfoHeap(HANDLE,ULONG,void*,void**,ULONG*);
4811 NTSYSAPI NTSTATUS WINAPI RtlGetUserPreferredUILanguages(DWORD,ULONG,ULONG*,WCHAR*,ULONG*);
4812 NTSYSAPI NTSTATUS WINAPI RtlGetVersion(RTL_OSVERSIONINFOEXW*);
4813 NTSYSAPI NTSTATUS WINAPI RtlHashUnicodeString(const UNICODE_STRING*,BOOLEAN,ULONG,ULONG*);
4814 NTSYSAPI PSID_IDENTIFIER_AUTHORITY WINAPI RtlIdentifierAuthoritySid(PSID);
4815 NTSYSAPI NTSTATUS WINAPI RtlIdnToAscii(DWORD,const WCHAR*,INT,WCHAR*,INT*);
4816 NTSYSAPI NTSTATUS WINAPI RtlIdnToNameprepUnicode(DWORD,const WCHAR*,INT,WCHAR*,INT*);
4817 NTSYSAPI NTSTATUS WINAPI RtlIdnToUnicode(DWORD,const WCHAR*,INT,WCHAR*,INT*);
4818 NTSYSAPI PVOID WINAPI RtlImageDirectoryEntryToData(HMODULE,BOOL,WORD,ULONG *);
4819 NTSYSAPI PIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE);
4820 NTSYSAPI PIMAGE_SECTION_HEADER WINAPI RtlImageRvaToSection(const IMAGE_NT_HEADERS *,HMODULE,DWORD);
4821 NTSYSAPI PVOID WINAPI RtlImageRvaToVa(const IMAGE_NT_HEADERS *,HMODULE,DWORD,IMAGE_SECTION_HEADER **);
4822 NTSYSAPI NTSTATUS WINAPI RtlImpersonateSelf(SECURITY_IMPERSONATION_LEVEL);
4823 NTSYSAPI void WINAPI RtlInitAnsiString(PANSI_STRING,PCSZ);
4824 NTSYSAPI NTSTATUS WINAPI RtlInitAnsiStringEx(PANSI_STRING,PCSZ);
4825 NTSYSAPI void WINAPI RtlInitCodePageTable(USHORT*,CPTABLEINFO*);
4826 NTSYSAPI void WINAPI RtlInitNlsTables(USHORT*,USHORT*,USHORT*,NLSTABLEINFO*);
4827 NTSYSAPI void WINAPI RtlInitString(PSTRING,PCSZ);
4828 NTSYSAPI void WINAPI RtlInitUnicodeString(PUNICODE_STRING,PCWSTR);
4829 NTSYSAPI NTSTATUS WINAPI RtlInitUnicodeStringEx(PUNICODE_STRING,PCWSTR);
4830 NTSYSAPI void WINAPI RtlInitializeBitMap(PRTL_BITMAP,PULONG,ULONG);
4831 NTSYSAPI void WINAPI RtlInitializeConditionVariable(RTL_CONDITION_VARIABLE *);
4832 NTSYSAPI NTSTATUS WINAPI RtlInitializeCriticalSection(RTL_CRITICAL_SECTION *);
4833 NTSYSAPI NTSTATUS WINAPI RtlInitializeCriticalSectionAndSpinCount(RTL_CRITICAL_SECTION *,ULONG);
4834 NTSYSAPI NTSTATUS WINAPI RtlInitializeCriticalSectionEx(RTL_CRITICAL_SECTION *,ULONG,ULONG);
4835 NTSYSAPI NTSTATUS WINAPI RtlInitializeExtendedContext(void*,ULONG,CONTEXT_EX**);
4836 NTSYSAPI NTSTATUS WINAPI RtlInitializeExtendedContext2(void*,ULONG,CONTEXT_EX**,ULONG64);
4837 NTSYSAPI void WINAPI RtlInitializeHandleTable(ULONG,ULONG,RTL_HANDLE_TABLE *);
4838 NTSYSAPI void WINAPI RtlInitializeResource(LPRTL_RWLOCK);
4839 NTSYSAPI void WINAPI RtlInitializeSRWLock(RTL_SRWLOCK*);
4840 NTSYSAPI NTSTATUS WINAPI RtlInitializeSid(PSID,PSID_IDENTIFIER_AUTHORITY,BYTE);
4841 NTSYSAPI NTSTATUS WINAPI RtlInt64ToUnicodeString(ULONGLONG,ULONG,UNICODE_STRING *);
4842 NTSYSAPI NTSTATUS WINAPI RtlIntegerToChar(ULONG,ULONG,ULONG,PCHAR);
4843 NTSYSAPI NTSTATUS WINAPI RtlIntegerToUnicodeString(ULONG,ULONG,UNICODE_STRING *);
4844 NTSYSAPI BOOLEAN WINAPI RtlIsActivationContextActive(HANDLE);
4845 NTSYSAPI BOOL WINAPI RtlIsCriticalSectionLocked(RTL_CRITICAL_SECTION *);
4846 NTSYSAPI BOOL WINAPI RtlIsCriticalSectionLockedByThread(RTL_CRITICAL_SECTION *);
4847 NTSYSAPI BOOLEAN WINAPI RtlIsCurrentProcess(HANDLE);
4848 NTSYSAPI BOOLEAN WINAPI RtlIsCurrentThread(HANDLE);
4849 NTSYSAPI ULONG WINAPI RtlIsDosDeviceName_U(PCWSTR);
4850 NTSYSAPI BOOLEAN WINAPI RtlIsNameLegalDOS8Dot3(const UNICODE_STRING*,POEM_STRING,PBOOLEAN);
4851 NTSYSAPI NTSTATUS WINAPI RtlIsNormalizedString(ULONG,const WCHAR*,INT,BOOLEAN*);
4852 NTSYSAPI BOOLEAN WINAPI RtlIsProcessorFeaturePresent(UINT);
4853 NTSYSAPI BOOLEAN WINAPI RtlIsTextUnicode(LPCVOID,INT,INT *);
4854 NTSYSAPI BOOLEAN WINAPI RtlIsValidHandle(const RTL_HANDLE_TABLE *, const RTL_HANDLE *);
4855 NTSYSAPI BOOLEAN WINAPI RtlIsValidIndexHandle(const RTL_HANDLE_TABLE *, ULONG Index, RTL_HANDLE **);
4856 NTSYSAPI BOOLEAN WINAPI RtlIsValidLocaleName(const WCHAR*,ULONG);
4857 NTSYSAPI NTSTATUS WINAPI RtlLcidToLocaleName(LCID,UNICODE_STRING*,ULONG,BOOLEAN);
4858 NTSYSAPI NTSTATUS WINAPI RtlLeaveCriticalSection(RTL_CRITICAL_SECTION *);
4859 NTSYSAPI DWORD WINAPI RtlLengthRequiredSid(DWORD);
4860 NTSYSAPI ULONG WINAPI RtlLengthSecurityDescriptor(PSECURITY_DESCRIPTOR);
4861 NTSYSAPI DWORD WINAPI RtlLengthSid(PSID);
4862 NTSYSAPI NTSTATUS WINAPI RtlLocalTimeToSystemTime(const LARGE_INTEGER*,PLARGE_INTEGER);
4863 NTSYSAPI NTSTATUS WINAPI RtlLocaleNameToLcid(const WCHAR*,LCID*,ULONG);
4864 NTSYSAPI void * WINAPI RtlLocateExtendedFeature(CONTEXT_EX*,ULONG,ULONG*);
4865 NTSYSAPI void * WINAPI RtlLocateExtendedFeature2(CONTEXT_EX*,ULONG,XSTATE_CONFIGURATION*,ULONG*);
4866 NTSYSAPI void * WINAPI RtlLocateLegacyContext(CONTEXT_EX*,ULONG*);
4867 NTSYSAPI BOOLEAN WINAPI RtlLockHeap(HANDLE);
4868 NTSYSAPI NTSTATUS WINAPI RtlLookupAtomInAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*);
4869 NTSYSAPI NTSTATUS WINAPI RtlMakeSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,LPDWORD);
4870 NTSYSAPI NTSTATUS WINAPI RtlMultiByteToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
4871 NTSYSAPI NTSTATUS WINAPI RtlMultiByteToUnicodeSize(DWORD*,LPCSTR,ULONG);
4872 NTSYSAPI NTSTATUS WINAPI RtlNewSecurityObject(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,BOOLEAN,HANDLE,PGENERIC_MAPPING);
4873 NTSYSAPI NTSTATUS WINAPI RtlNewSecurityObjectEx(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,GUID*,BOOLEAN,ULONG,HANDLE,PGENERIC_MAPPING);
4874 NTSYSAPI NTSTATUS WINAPI RtlNewSecurityObjectWithMultipleInheritance(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,
4875 GUID **,ULONG,BOOLEAN,ULONG,HANDLE,PGENERIC_MAPPING);
4876 NTSYSAPI PRTL_USER_PROCESS_PARAMETERS WINAPI RtlNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
4877 NTSYSAPI NTSTATUS WINAPI RtlNormalizeString(ULONG,const WCHAR*,INT,WCHAR*,INT*);
4878 NTSYSAPI ULONG WINAPI RtlNtStatusToDosError(NTSTATUS);
4879 NTSYSAPI ULONG WINAPI RtlNtStatusToDosErrorNoTeb(NTSTATUS);
4880 NTSYSAPI ULONG WINAPI RtlNumberOfSetBits(PCRTL_BITMAP);
4881 NTSYSAPI ULONG WINAPI RtlNumberOfClearBits(PCRTL_BITMAP);
4882 NTSYSAPI ULONG WINAPI RtlOemStringToUnicodeSize(const STRING*);
4883 NTSYSAPI NTSTATUS WINAPI RtlOemStringToUnicodeString(UNICODE_STRING*,const STRING*,BOOLEAN);
4884 NTSYSAPI NTSTATUS WINAPI RtlOemToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
4885 NTSYSAPI NTSTATUS WINAPI RtlOpenCurrentUser(ACCESS_MASK,PHANDLE);
4886 NTSYSAPI NTSTATUS WINAPI RtlPinAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
4887 NTSYSAPI void WINAPI RtlPopFrame(TEB_ACTIVE_FRAME*);
4888 NTSYSAPI BOOLEAN WINAPI RtlPrefixString(const STRING*,const STRING*,BOOLEAN);
4889 NTSYSAPI void WINAPI RtlProcessFlsData(void*,ULONG);
4890 NTSYSAPI void WINAPI RtlPushFrame(TEB_ACTIVE_FRAME*);
4891 NTSYSAPI NTSTATUS WINAPI RtlQueryActivationContextApplicationSettings(DWORD,HANDLE,const WCHAR*,const WCHAR*,WCHAR*,SIZE_T,SIZE_T*);
4892 NTSYSAPI NTSTATUS WINAPI RtlQueryAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM,ULONG*,ULONG*,WCHAR*,ULONG*);
4893 NTSYSAPI NTSTATUS WINAPI RtlQueryDynamicTimeZoneInformation(RTL_DYNAMIC_TIME_ZONE_INFORMATION*);
4894 NTSYSAPI NTSTATUS WINAPI RtlQueryEnvironmentVariable(WCHAR*,const WCHAR*,SIZE_T,WCHAR*,SIZE_T,SIZE_T*);
4895 NTSYSAPI NTSTATUS WINAPI RtlQueryEnvironmentVariable_U(PWSTR,PUNICODE_STRING,PUNICODE_STRING);
4896 NTSYSAPI NTSTATUS WINAPI RtlQueryHeapInformation(HANDLE,HEAP_INFORMATION_CLASS,PVOID,SIZE_T,PSIZE_T);
4897 NTSYSAPI NTSTATUS WINAPI RtlQueryInformationAcl(PACL,LPVOID,DWORD,ACL_INFORMATION_CLASS);
4898 NTSYSAPI NTSTATUS WINAPI RtlQueryInformationActivationContext(ULONG,HANDLE,PVOID,ULONG,PVOID,SIZE_T,SIZE_T*);
4899 NTSYSAPI NTSTATUS WINAPI RtlQueryPackageIdentity(HANDLE,WCHAR*,SIZE_T*,WCHAR*,SIZE_T*,BOOLEAN*);
4900 NTSYSAPI BOOL WINAPI RtlQueryPerformanceCounter(LARGE_INTEGER*);
4901 NTSYSAPI BOOL WINAPI RtlQueryPerformanceFrequency(LARGE_INTEGER*);
4902 NTSYSAPI NTSTATUS WINAPI RtlQueryProcessDebugInformation(ULONG,ULONG,PDEBUG_BUFFER);
4903 NTSYSAPI NTSTATUS WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID);
4904 NTSYSAPI NTSTATUS WINAPI RtlQueryTimeZoneInformation(RTL_TIME_ZONE_INFORMATION*);
4905 NTSYSAPI BOOL WINAPI RtlQueryUnbiasedInterruptTime(ULONGLONG*);
4906 NTSYSAPI NTSTATUS WINAPI RtlQueueWorkItem(PRTL_WORK_ITEM_ROUTINE,PVOID,ULONG);
4907 NTSYSAPI void DECLSPEC_NORETURN WINAPI RtlRaiseStatus(NTSTATUS);
4908 NTSYSAPI ULONG WINAPI RtlRandom(PULONG);
4909 NTSYSAPI ULONG WINAPI RtlRandomEx(PULONG);
4910 NTSYSAPI PVOID WINAPI RtlReAllocateHeap(HANDLE,ULONG,PVOID,SIZE_T) __WINE_ALLOC_SIZE(4) __WINE_DEALLOC(RtlFreeHeap,3);
4911 NTSYSAPI NTSTATUS WINAPI RtlRegisterWait(PHANDLE,HANDLE,RTL_WAITORTIMERCALLBACKFUNC,PVOID,ULONG,ULONG);
4912 NTSYSAPI void WINAPI RtlReleaseActivationContext(HANDLE);
4913 NTSYSAPI void WINAPI RtlReleasePath(PWSTR);
4914 NTSYSAPI void WINAPI RtlReleasePebLock(void);
4915 NTSYSAPI void WINAPI RtlReleaseRelativeName(RTL_RELATIVE_NAME*);
4916 NTSYSAPI void WINAPI RtlReleaseResource(LPRTL_RWLOCK);
4917 NTSYSAPI void WINAPI RtlReleaseSRWLockExclusive(RTL_SRWLOCK*);
4918 NTSYSAPI void WINAPI RtlReleaseSRWLockShared(RTL_SRWLOCK*);
4919 NTSYSAPI ULONG WINAPI RtlRemoveVectoredContinueHandler(PVOID);
4920 NTSYSAPI ULONG WINAPI RtlRemoveVectoredExceptionHandler(PVOID);
4921 NTSYSAPI void WINAPI RtlResetRtlTranslations(const NLSTABLEINFO*);
4922 NTSYSAPI void WINAPI RtlRestoreLastWin32Error(DWORD);
4923 NTSYSAPI void WINAPI RtlSecondsSince1970ToTime(DWORD,LARGE_INTEGER *);
4924 NTSYSAPI void WINAPI RtlSecondsSince1980ToTime(DWORD,LARGE_INTEGER *);
4925 NTSYSAPI NTSTATUS WINAPI RtlSelfRelativeToAbsoluteSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PDWORD,PACL,PDWORD,PACL,PDWORD,PSID,PDWORD,PSID,PDWORD);
4926 NTSYSAPI void WINAPI RtlSetAllBits(PRTL_BITMAP);
4927 NTSYSAPI void WINAPI RtlSetBits(PRTL_BITMAP,ULONG,ULONG);
4928 NTSYSAPI NTSTATUS WINAPI RtlSetControlSecurityDescriptor(PSECURITY_DESCRIPTOR,SECURITY_DESCRIPTOR_CONTROL,SECURITY_DESCRIPTOR_CONTROL);
4929 NTSYSAPI ULONG WINAPI RtlSetCriticalSectionSpinCount(RTL_CRITICAL_SECTION*,ULONG);
4930 NTSYSAPI NTSTATUS WINAPI RtlSetCurrentDirectory_U(const UNICODE_STRING*);
4931 NTSYSAPI void WINAPI RtlSetCurrentEnvironment(PWSTR, PWSTR*);
4932 NTSYSAPI BOOL WINAPI RtlSetCurrentTransaction(HANDLE);
4933 NTSYSAPI NTSTATUS WINAPI RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
4934 NTSYSAPI NTSTATUS WINAPI RtlSetEnvironmentVariable(PWSTR*,PUNICODE_STRING,PUNICODE_STRING);
4935 NTSYSAPI void WINAPI RtlSetExtendedFeaturesMask(CONTEXT_EX*,ULONG64);
4936 NTSYSAPI NTSTATUS WINAPI RtlSetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
4937 NTSYSAPI NTSTATUS WINAPI RtlSetHeapInformation(HANDLE,HEAP_INFORMATION_CLASS,PVOID,SIZE_T);
4938 NTSYSAPI NTSTATUS WINAPI RtlSetIoCompletionCallback(HANDLE,PRTL_OVERLAPPED_COMPLETION_ROUTINE,ULONG);
4939 NTSYSAPI void WINAPI RtlSetLastWin32Error(DWORD);
4940 NTSYSAPI void WINAPI RtlSetLastWin32ErrorAndNtStatusFromNtStatus(NTSTATUS);
4941 NTSYSAPI NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
4942 NTSYSAPI NTSTATUS WINAPI RtlSetProcessPreferredUILanguages(DWORD,PCZZWSTR,ULONG*);
4943 NTSYSAPI NTSTATUS WINAPI RtlSetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
4944 NTSYSAPI NTSTATUS WINAPI RtlSetSearchPathMode(ULONG);
4945 NTSYSAPI NTSTATUS WINAPI RtlSetThreadErrorMode(DWORD,LPDWORD);
4946 NTSYSAPI NTSTATUS WINAPI RtlSetThreadPreferredUILanguages(DWORD,PCZZWSTR,ULONG*);
4947 NTSYSAPI NTSTATUS WINAPI RtlSetTimeZoneInformation(const RTL_TIME_ZONE_INFORMATION*);
4948 NTSYSAPI void WINAPI RtlSetUnhandledExceptionFilter(PRTL_EXCEPTION_FILTER);
4949 NTSYSAPI BOOLEAN WINAPI RtlSetUserFlagsHeap(HANDLE,ULONG,void*,ULONG,ULONG);
4950 NTSYSAPI BOOLEAN WINAPI RtlSetUserValueHeap(HANDLE,ULONG,void*,void*);
4951 NTSYSAPI SIZE_T WINAPI RtlSizeHeap(HANDLE,ULONG,const void*);
4952 NTSYSAPI NTSTATUS WINAPI RtlSleepConditionVariableCS(RTL_CONDITION_VARIABLE*,RTL_CRITICAL_SECTION*,const LARGE_INTEGER*);
4953 NTSYSAPI NTSTATUS WINAPI RtlSleepConditionVariableSRW(RTL_CONDITION_VARIABLE*,RTL_SRWLOCK*,const LARGE_INTEGER*,ULONG);
4954 NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID,PUNICODE_STRING);
4955 NTSYSAPI LPDWORD WINAPI RtlSubAuthoritySid(PSID,DWORD);
4956 NTSYSAPI LPBYTE WINAPI RtlSubAuthorityCountSid(PSID);
4957 NTSYSAPI NTSTATUS WINAPI RtlSystemTimeToLocalTime(const LARGE_INTEGER*,PLARGE_INTEGER);
4958 NTSYSAPI BOOLEAN WINAPI RtlTimeFieldsToTime(PTIME_FIELDS,PLARGE_INTEGER);
4959 NTSYSAPI void WINAPI RtlTimeToElapsedTimeFields(const LARGE_INTEGER *,PTIME_FIELDS);
4960 NTSYSAPI BOOLEAN WINAPI RtlTimeToSecondsSince1970(const LARGE_INTEGER *,LPDWORD);
4961 NTSYSAPI BOOLEAN WINAPI RtlTimeToSecondsSince1980(const LARGE_INTEGER *,LPDWORD);
4962 NTSYSAPI void WINAPI RtlTimeToTimeFields(const LARGE_INTEGER*,PTIME_FIELDS);
4963 NTSYSAPI BOOLEAN WINAPI RtlTryAcquireSRWLockExclusive(RTL_SRWLOCK *);
4964 NTSYSAPI BOOLEAN WINAPI RtlTryAcquireSRWLockShared(RTL_SRWLOCK *);
4965 NTSYSAPI BOOL WINAPI RtlTryEnterCriticalSection(RTL_CRITICAL_SECTION *);
4966 NTSYSAPI NTSTATUS WINAPI RtlUTF8ToUnicodeN(WCHAR*,DWORD,DWORD*,const char*,DWORD);
4967 NTSYSAPI DWORD WINAPI RtlUnicodeStringToAnsiSize(const UNICODE_STRING*);
4968 NTSYSAPI NTSTATUS WINAPI RtlUnicodeStringToAnsiString(PANSI_STRING,PCUNICODE_STRING,BOOLEAN);
4969 NTSYSAPI NTSTATUS WINAPI RtlUnicodeStringToInteger(const UNICODE_STRING *,ULONG,ULONG *);
4970 NTSYSAPI DWORD WINAPI RtlUnicodeStringToOemSize(const UNICODE_STRING*);
4971 NTSYSAPI NTSTATUS WINAPI RtlUnicodeStringToOemString(POEM_STRING,PCUNICODE_STRING,BOOLEAN);
4972 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToCustomCPN(CPTABLEINFO*,char*,DWORD,DWORD*,const WCHAR*,DWORD);
4973 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
4974 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToMultiByteSize(PULONG,PCWSTR,ULONG);
4975 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
4976 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToUTF8N(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
4977 NTSYSAPI ULONG WINAPI RtlUniform(PULONG);
4978 NTSYSAPI BOOLEAN WINAPI RtlUnlockHeap(HANDLE);
4979 NTSYSAPI WCHAR WINAPI RtlUpcaseUnicodeChar(WCHAR);
4980 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToAnsiString(STRING*,const UNICODE_STRING*,BOOLEAN);
4981 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToCountedOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
4982 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
4983 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeToCustomCPN(CPTABLEINFO*,char*,DWORD,DWORD*,const WCHAR*,DWORD);
4984 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
4985 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
4986 NTSYSAPI NTSTATUS WINAPI RtlUpdateTimer(HANDLE, HANDLE, DWORD, DWORD);
4987 NTSYSAPI void WINAPI RtlUserThreadStart(PRTL_THREAD_START_ROUTINE,void*);
4988 NTSYSAPI BOOLEAN WINAPI RtlValidAcl(PACL);
4989 NTSYSAPI BOOLEAN WINAPI RtlValidRelativeSecurityDescriptor(PSECURITY_DESCRIPTOR,ULONG,SECURITY_INFORMATION);
4990 NTSYSAPI BOOLEAN WINAPI RtlValidSecurityDescriptor(PSECURITY_DESCRIPTOR);
4991 NTSYSAPI BOOLEAN WINAPI RtlValidSid(PSID);
4992 NTSYSAPI BOOLEAN WINAPI RtlValidateHeap(HANDLE,ULONG,LPCVOID);
4993 NTSYSAPI NTSTATUS WINAPI RtlVerifyVersionInfo(const RTL_OSVERSIONINFOEXW*,DWORD,DWORDLONG);
4994 NTSYSAPI NTSTATUS WINAPI RtlWaitOnAddress(const void *,const void *,SIZE_T,const LARGE_INTEGER *);
4995 NTSYSAPI void WINAPI RtlWakeAddressAll(const void *);
4996 NTSYSAPI void WINAPI RtlWakeAddressSingle(const void *);
4997 NTSYSAPI void WINAPI RtlWakeAllConditionVariable(RTL_CONDITION_VARIABLE *);
4998 NTSYSAPI void WINAPI RtlWakeConditionVariable(RTL_CONDITION_VARIABLE *);
4999 NTSYSAPI NTSTATUS WINAPI RtlWalkHeap(HANDLE,PVOID);
5000 NTSYSAPI NTSTATUS WINAPI RtlWow64EnableFsRedirection(BOOLEAN);
5001 NTSYSAPI NTSTATUS WINAPI RtlWow64EnableFsRedirectionEx(ULONG,ULONG*);
5002 NTSYSAPI USHORT WINAPI RtlWow64GetCurrentMachine(void);
5003 NTSYSAPI NTSTATUS WINAPI RtlWow64GetProcessMachines(HANDLE,USHORT*,USHORT*);
5004 NTSYSAPI NTSTATUS WINAPI RtlWow64GetSharedInfoProcess(HANDLE,BOOLEAN*,WOW64INFO*);
5005 NTSYSAPI NTSTATUS WINAPI RtlWow64IsWowGuestMachineSupported(USHORT,BOOLEAN*);
5006 NTSYSAPI NTSTATUS WINAPI RtlWriteRegistryValue(ULONG,PCWSTR,PCWSTR,ULONG,PVOID,ULONG);
5007 NTSYSAPI NTSTATUS WINAPI RtlZombifyActivationContext(HANDLE);
5008 NTSYSAPI NTSTATUS WINAPI RtlpNtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
5009 NTSYSAPI NTSTATUS WINAPI RtlpNtEnumerateSubKey(HANDLE,UNICODE_STRING *, ULONG);
5010 NTSYSAPI NTSTATUS WINAPI RtlpNtMakeTemporaryKey(HANDLE);
5011 NTSYSAPI NTSTATUS WINAPI RtlpNtOpenKey(PHANDLE,ACCESS_MASK,OBJECT_ATTRIBUTES*);
5012 NTSYSAPI NTSTATUS WINAPI RtlpNtSetValueKey(HANDLE,ULONG,const void*,ULONG);
5013 NTSYSAPI NTSTATUS WINAPI RtlpWaitForCriticalSection(RTL_CRITICAL_SECTION *);
5014 NTSYSAPI NTSTATUS WINAPI RtlpUnWaitCriticalSection(RTL_CRITICAL_SECTION *);
5015 NTSYSAPI NTSTATUS WINAPI TpAllocCleanupGroup(TP_CLEANUP_GROUP **);
5016 NTSYSAPI NTSTATUS WINAPI TpAllocIoCompletion(TP_IO **,HANDLE,PTP_IO_CALLBACK,void *,TP_CALLBACK_ENVIRON *);
5017 NTSYSAPI NTSTATUS WINAPI TpAllocPool(TP_POOL **,PVOID);
5018 NTSYSAPI NTSTATUS WINAPI TpAllocTimer(TP_TIMER **,PTP_TIMER_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *);
5019 NTSYSAPI NTSTATUS WINAPI TpAllocWait(TP_WAIT **,PTP_WAIT_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *);
5020 NTSYSAPI NTSTATUS WINAPI TpAllocWork(TP_WORK **,PTP_WORK_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *);
5021 NTSYSAPI void WINAPI TpCallbackLeaveCriticalSectionOnCompletion(TP_CALLBACK_INSTANCE *,RTL_CRITICAL_SECTION *);
5022 NTSYSAPI NTSTATUS WINAPI TpCallbackMayRunLong(TP_CALLBACK_INSTANCE *);
5023 NTSYSAPI void WINAPI TpCallbackReleaseMutexOnCompletion(TP_CALLBACK_INSTANCE *,HANDLE);
5024 NTSYSAPI void WINAPI TpCallbackReleaseSemaphoreOnCompletion(TP_CALLBACK_INSTANCE *,HANDLE,DWORD);
5025 NTSYSAPI void WINAPI TpCallbackSetEventOnCompletion(TP_CALLBACK_INSTANCE *,HANDLE);
5026 NTSYSAPI void WINAPI TpCallbackUnloadDllOnCompletion(TP_CALLBACK_INSTANCE *,HMODULE);
5027 NTSYSAPI void WINAPI TpCancelAsyncIoOperation(TP_IO *);
5028 NTSYSAPI void WINAPI TpDisassociateCallback(TP_CALLBACK_INSTANCE *);
5029 NTSYSAPI BOOL WINAPI TpIsTimerSet(TP_TIMER *);
5030 NTSYSAPI void WINAPI TpPostWork(TP_WORK *);
5031 NTSYSAPI NTSTATUS WINAPI TpQueryPoolStackInformation(TP_POOL *, TP_POOL_STACK_INFORMATION *stack_info);
5032 NTSYSAPI void WINAPI TpReleaseCleanupGroup(TP_CLEANUP_GROUP *);
5033 NTSYSAPI void WINAPI TpReleaseCleanupGroupMembers(TP_CLEANUP_GROUP *,BOOL,PVOID);
5034 NTSYSAPI void WINAPI TpReleaseIoCompletion(TP_IO *);
5035 NTSYSAPI void WINAPI TpReleasePool(TP_POOL *);
5036 NTSYSAPI void WINAPI TpReleaseTimer(TP_TIMER *);
5037 NTSYSAPI void WINAPI TpReleaseWait(TP_WAIT *);
5038 NTSYSAPI void WINAPI TpReleaseWork(TP_WORK *);
5039 NTSYSAPI void WINAPI TpSetPoolMaxThreads(TP_POOL *,DWORD);
5040 NTSYSAPI BOOL WINAPI TpSetPoolMinThreads(TP_POOL *,DWORD);
5041 NTSYSAPI NTSTATUS WINAPI TpSetPoolStackInformation(TP_POOL *, TP_POOL_STACK_INFORMATION *stack_info);
5042 NTSYSAPI void WINAPI TpSetTimer(TP_TIMER *, LARGE_INTEGER *,LONG,LONG);
5043 NTSYSAPI void WINAPI TpSetWait(TP_WAIT *,HANDLE,LARGE_INTEGER *);
5044 NTSYSAPI NTSTATUS WINAPI TpSimpleTryPost(PTP_SIMPLE_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *);
5045 NTSYSAPI void WINAPI TpStartAsyncIoOperation(TP_IO *);
5046 NTSYSAPI void WINAPI TpWaitForIoCompletion(TP_IO *,BOOL);
5047 NTSYSAPI void WINAPI TpWaitForTimer(TP_TIMER *,BOOL);
5048 NTSYSAPI void WINAPI TpWaitForWait(TP_WAIT *,BOOL);
5049 NTSYSAPI void WINAPI TpWaitForWork(TP_WORK *,BOOL);
5050 #ifdef __ms_va_list
5051 NTSYSAPI NTSTATUS WINAPI vDbgPrintEx(ULONG,ULONG,LPCSTR,__ms_va_list);
5052 NTSYSAPI NTSTATUS WINAPI vDbgPrintExWithPrefix(LPCSTR,ULONG,ULONG,LPCSTR,__ms_va_list);
5053 #endif
5055 /* 32-bit or 64-bit only functions */
5057 #ifdef _WIN64
5058 NTSYSAPI void WINAPI RtlOpenCrossProcessEmulatorWorkConnection(HANDLE,HANDLE*,void**);
5059 NTSYSAPI NTSTATUS WINAPI RtlWow64GetCpuAreaInfo(WOW64_CPURESERVED*,ULONG,WOW64_CPU_AREA_INFO*);
5060 NTSYSAPI NTSTATUS WINAPI RtlWow64GetCurrentCpuArea(USHORT*,void**,void**);
5061 NTSYSAPI NTSTATUS WINAPI RtlWow64GetThreadContext(HANDLE,WOW64_CONTEXT*);
5062 NTSYSAPI NTSTATUS WINAPI RtlWow64GetThreadSelectorEntry(HANDLE,THREAD_DESCRIPTOR_INFORMATION*,ULONG,ULONG*);
5063 NTSYSAPI CROSS_PROCESS_WORK_ENTRY * WINAPI RtlWow64PopAllCrossProcessWorkFromWorkList(CROSS_PROCESS_WORK_HDR*,BOOLEAN*);
5064 NTSYSAPI CROSS_PROCESS_WORK_ENTRY * WINAPI RtlWow64PopCrossProcessWorkFromFreeList(CROSS_PROCESS_WORK_HDR*);
5065 NTSYSAPI BOOLEAN WINAPI RtlWow64PushCrossProcessWorkOntoFreeList(CROSS_PROCESS_WORK_HDR*,CROSS_PROCESS_WORK_ENTRY*);
5066 NTSYSAPI BOOLEAN WINAPI RtlWow64PushCrossProcessWorkOntoWorkList(CROSS_PROCESS_WORK_HDR*,CROSS_PROCESS_WORK_ENTRY*,void**);
5067 NTSYSAPI BOOLEAN WINAPI RtlWow64RequestCrossProcessHeavyFlush(CROSS_PROCESS_WORK_HDR*);
5068 NTSYSAPI NTSTATUS WINAPI RtlWow64SetThreadContext(HANDLE,const WOW64_CONTEXT*);
5069 #else
5070 NTSYSAPI NTSTATUS WINAPI NtWow64AllocateVirtualMemory64(HANDLE,ULONG64*,ULONG64,ULONG64*,ULONG,ULONG);
5071 NTSYSAPI NTSTATUS WINAPI NtWow64GetNativeSystemInformation(SYSTEM_INFORMATION_CLASS,void*,ULONG,ULONG*);
5072 NTSYSAPI NTSTATUS WINAPI NtWow64IsProcessorFeaturePresent(UINT);
5073 NTSYSAPI NTSTATUS WINAPI NtWow64ReadVirtualMemory64(HANDLE,ULONG64,void*,ULONG64,ULONG64*);
5074 NTSYSAPI NTSTATUS WINAPI NtWow64WriteVirtualMemory64(HANDLE,ULONG64,const void*,ULONG64,ULONG64*);
5075 NTSYSAPI LONGLONG WINAPI RtlConvertLongToLargeInteger(LONG);
5076 NTSYSAPI ULONGLONG WINAPI RtlConvertUlongToLargeInteger(ULONG);
5077 NTSYSAPI LONGLONG WINAPI RtlEnlargedIntegerMultiply(INT,INT);
5078 NTSYSAPI ULONGLONG WINAPI RtlEnlargedUnsignedMultiply(UINT,UINT);
5079 NTSYSAPI UINT WINAPI RtlEnlargedUnsignedDivide(ULONGLONG,UINT,UINT *);
5080 NTSYSAPI LONGLONG WINAPI RtlExtendedMagicDivide(LONGLONG,LONGLONG,INT);
5081 NTSYSAPI LONGLONG WINAPI RtlExtendedIntegerMultiply(LONGLONG,INT);
5082 NTSYSAPI LONGLONG WINAPI RtlExtendedLargeIntegerDivide(LONGLONG,INT,INT *);
5083 NTSYSAPI LONGLONG WINAPI RtlInterlockedCompareExchange64(LONGLONG*,LONGLONG,LONGLONG);
5084 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerAdd(LONGLONG,LONGLONG);
5085 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerArithmeticShift(LONGLONG,INT);
5086 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerNegate(LONGLONG);
5087 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerShiftLeft(LONGLONG,INT);
5088 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerShiftRight(LONGLONG,INT);
5089 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerSubtract(LONGLONG,LONGLONG);
5090 NTSYSAPI NTSTATUS WINAPI RtlLargeIntegerToChar(const ULONGLONG *,ULONG,ULONG,PCHAR);
5091 #endif
5093 /* Wine internal functions */
5095 NTSYSAPI NTSTATUS WINAPI wine_nt_to_unix_file_name( const OBJECT_ATTRIBUTES *attr, char *nameA, ULONG *size,
5096 UINT disposition );
5097 NTSYSAPI NTSTATUS WINAPI wine_unix_to_nt_file_name( const char *name, WCHAR *buffer, ULONG *size );
5100 /***********************************************************************
5101 * Inline functions
5104 #define InitializeObjectAttributes(p,n,a,r,s) \
5105 do { \
5106 (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
5107 (p)->RootDirectory = r; \
5108 (p)->Attributes = a; \
5109 (p)->ObjectName = n; \
5110 (p)->SecurityDescriptor = s; \
5111 (p)->SecurityQualityOfService = NULL; \
5112 } while (0)
5114 #define NtCurrentProcess() ((HANDLE)~(ULONG_PTR)0)
5115 #define NtCurrentThread() ((HANDLE)~(ULONG_PTR)1)
5117 #define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length))
5118 #define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length))
5119 #define RtlStoreUlong(p,v) do { ULONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
5120 #define RtlStoreUlonglong(p,v) do { ULONGLONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
5121 #define RtlRetrieveUlong(p,s) memcpy((p), (s), sizeof(ULONG))
5122 #define RtlRetrieveUlonglong(p,s) memcpy((p), (s), sizeof(ULONGLONG))
5123 #define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))
5125 static inline BOOLEAN RtlCheckBit(PCRTL_BITMAP lpBits, ULONG ulBit)
5127 if (lpBits && ulBit < lpBits->SizeOfBitMap &&
5128 lpBits->Buffer[ulBit >> 5] & (1 << (ulBit & 31)))
5129 return TRUE;
5130 return FALSE;
5133 /* These are implemented as __fastcall, so we can't let Winelib apps link with them.
5134 * Moreover, they're always inlined and not exported on 64bit systems.
5136 static inline USHORT RtlUshortByteSwap(USHORT s)
5138 return (s >> 8) | (s << 8);
5140 static inline ULONG RtlUlongByteSwap(ULONG i)
5142 return ((ULONG)RtlUshortByteSwap((USHORT)i) << 16) | RtlUshortByteSwap((USHORT)(i >> 16));
5144 static inline ULONGLONG RtlUlonglongByteSwap(ULONGLONG i)
5146 return ((ULONGLONG)RtlUlongByteSwap((ULONG)i) << 32) | RtlUlongByteSwap((ULONG)(i >> 32));
5149 /* list manipulation macros */
5150 #define InitializeListHead(le) (void)((le)->Flink = (le)->Blink = (le))
5151 #define InsertHeadList(le,e) do { PLIST_ENTRY f = (le)->Flink; (e)->Flink = f; (e)->Blink = (le); f->Blink = (e); (le)->Flink = (e); } while (0)
5152 #define InsertTailList(le,e) do { PLIST_ENTRY b = (le)->Blink; (e)->Flink = (le); (e)->Blink = b; b->Flink = (e); (le)->Blink = (e); } while (0)
5153 #define IsListEmpty(le) ((le)->Flink == (le))
5154 #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)
5155 static inline PLIST_ENTRY RemoveHeadList(PLIST_ENTRY le)
5157 PLIST_ENTRY f, b, e;
5159 e = le->Flink;
5160 f = le->Flink->Flink;
5161 b = le->Flink->Blink;
5162 f->Blink = b;
5163 b->Flink = f;
5165 if (e != le) e->Flink = e->Blink = NULL;
5166 return e;
5168 static inline PLIST_ENTRY RemoveTailList(PLIST_ENTRY le)
5170 PLIST_ENTRY f, b, e;
5172 e = le->Blink;
5173 f = le->Blink->Flink;
5174 b = le->Blink->Blink;
5175 f->Blink = b;
5176 b->Flink = f;
5178 if (e != le) e->Flink = e->Blink = NULL;
5179 return e;
5183 #ifdef __WINESRC__
5185 /* Wine internal functions */
5187 extern NTSTATUS WINAPI __wine_unix_spawnvp( char * const argv[], int wait );
5189 /* The thread information for 16-bit threads */
5190 /* NtCurrentTeb()->SubSystemTib points to this */
5191 typedef struct
5193 void *unknown; /* 00 unknown */
5194 UNICODE_STRING *exe_name; /* 04 exe module name */
5196 /* the following fields do not exist under Windows */
5197 UNICODE_STRING exe_str; /* exe name string pointed to by exe_name */
5198 CURDIR curdir; /* current directory */
5199 WCHAR curdir_buffer[MAX_PATH];
5200 } WIN16_SUBSYSTEM_TIB;
5202 /* Undocumented: layout of the locale data in the locale.nls file */
5204 typedef struct
5206 UINT sname; /* 000 LOCALE_SNAME */
5207 UINT sopentypelanguagetag; /* 004 LOCALE_SOPENTYPELANGUAGETAG */
5208 USHORT ilanguage; /* 008 LOCALE_ILANGUAGE */
5209 USHORT unique_lcid; /* 00a unique id if lcid == 0x1000 */
5210 USHORT idigits; /* 00c LOCALE_IDIGITS */
5211 USHORT inegnumber; /* 00e LOCALE_INEGNUMBER */
5212 USHORT icurrdigits; /* 010 LOCALE_ICURRDIGITS*/
5213 USHORT icurrency; /* 012 LOCALE_ICURRENCY */
5214 USHORT inegcurr; /* 014 LOCALE_INEGCURR */
5215 USHORT ilzero; /* 016 LOCALE_ILZERO */
5216 USHORT inotneutral; /* 018 LOCALE_INEUTRAL (inverted) */
5217 USHORT ifirstdayofweek; /* 01a LOCALE_IFIRSTDAYOFWEEK (monday=0) */
5218 USHORT ifirstweekofyear; /* 01c LOCALE_IFIRSTWEEKOFYEAR */
5219 USHORT icountry; /* 01e LOCALE_ICOUNTRY */
5220 USHORT imeasure; /* 020 LOCALE_IMEASURE */
5221 USHORT idigitsubstitution; /* 022 LOCALE_IDIGITSUBSTITUTION */
5222 UINT sgrouping; /* 024 LOCALE_SGROUPING (as binary string) */
5223 UINT smongrouping; /* 028 LOCALE_SMONGROUPING (as binary string) */
5224 UINT slist; /* 02c LOCALE_SLIST */
5225 UINT sdecimal; /* 030 LOCALE_SDECIMAL */
5226 UINT sthousand; /* 034 LOCALE_STHOUSAND */
5227 UINT scurrency; /* 038 LOCALE_SCURRENCY */
5228 UINT smondecimalsep; /* 03c LOCALE_SMONDECIMALSEP */
5229 UINT smonthousandsep; /* 040 LOCALE_SMONTHOUSANDSEP */
5230 UINT spositivesign; /* 044 LOCALE_SPOSITIVESIGN */
5231 UINT snegativesign; /* 048 LOCALE_SNEGATIVESIGN */
5232 UINT s1159; /* 04c LOCALE_S1159 */
5233 UINT s2359; /* 050 LOCALE_S2359 */
5234 UINT snativedigits; /* 054 LOCALE_SNATIVEDIGITS (array of single digits) */
5235 UINT stimeformat; /* 058 LOCALE_STIMEFORMAT (array of formats) */
5236 UINT sshortdate; /* 05c LOCALE_SSHORTDATE (array of formats) */
5237 UINT slongdate; /* 060 LOCALE_SLONGDATE (array of formats) */
5238 UINT syearmonth; /* 064 LOCALE_SYEARMONTH (array of formats) */
5239 UINT sduration; /* 068 LOCALE_SDURATION (array of formats) */
5240 USHORT idefaultlanguage; /* 06c LOCALE_IDEFAULTLANGUAGE */
5241 USHORT idefaultansicodepage; /* 06e LOCALE_IDEFAULTANSICODEPAGE */
5242 USHORT idefaultcodepage; /* 070 LOCALE_IDEFAULTCODEPAGE */
5243 USHORT idefaultmaccodepage; /* 072 LOCALE_IDEFAULTMACCODEPAGE */
5244 USHORT idefaultebcdiccodepage; /* 074 LOCALE_IDEFAULTEBCDICCODEPAGE */
5245 USHORT old_geoid; /* 076 LOCALE_IGEOID (older version?) */
5246 USHORT ipapersize; /* 078 LOCALE_IPAPERSIZE */
5247 BYTE islamic_cal[2]; /* 07a calendar id for islamic calendars (?) */
5248 UINT scalendartype; /* 07c string, first char is LOCALE_ICALENDARTYPE, next chars are LOCALE_IOPTIONALCALENDAR */
5249 UINT sabbrevlangname; /* 080 LOCALE_SABBREVLANGNAME */
5250 UINT siso639langname; /* 084 LOCALE_SISO639LANGNAME */
5251 UINT senglanguage; /* 088 LOCALE_SENGLANGUAGE */
5252 UINT snativelangname; /* 08c LOCALE_SNATIVELANGNAME */
5253 UINT sengcountry; /* 090 LOCALE_SENGCOUNTRY */
5254 UINT snativectryname; /* 094 LOCALE_SNATIVECTRYNAME */
5255 UINT sabbrevctryname; /* 098 LOCALE_SABBREVCTRYNAME */
5256 UINT siso3166ctryname; /* 09c LOCALE_SISO3166CTRYNAME */
5257 UINT sintlsymbol; /* 0a0 LOCALE_SINTLSYMBOL */
5258 UINT sengcurrname; /* 0a4 LOCALE_SENGCURRNAME */
5259 UINT snativecurrname; /* 0a8 LOCALE_SNATIVECURRNAME */
5260 UINT fontsignature; /* 0ac LOCALE_FONTSIGNATURE (binary string) */
5261 UINT siso639langname2; /* 0b0 LOCALE_SISO639LANGNAME2 */
5262 UINT siso3166ctryname2; /* 0b4 LOCALE_SISO3166CTRYNAME2 */
5263 UINT sparent; /* 0b8 LOCALE_SPARENT */
5264 UINT sdayname; /* 0bc LOCALE_SDAYNAME1 (array of days 1..7) */
5265 UINT sabbrevdayname; /* 0c0 LOCALE_SABBREVDAYNAME1 (array of days 1..7) */
5266 UINT smonthname; /* 0c4 LOCALE_SMONTHNAME1 (array of months 1..13) */
5267 UINT sabbrevmonthname; /* 0c8 LOCALE_SABBREVMONTHNAME1 (array of months 1..13) */
5268 UINT sgenitivemonth; /* 0cc equivalent of LOCALE_SMONTHNAME1 for genitive months */
5269 UINT sabbrevgenitivemonth; /* 0d0 equivalent of LOCALE_SABBREVMONTHNAME1 for genitive months */
5270 UINT calnames; /* 0d4 array of calendar names */
5271 UINT customsorts; /* 0d8 array of custom sort names */
5272 USHORT inegativepercent; /* 0dc LOCALE_INEGATIVEPERCENT */
5273 USHORT ipositivepercent; /* 0de LOCALE_IPOSITIVEPERCENT */
5274 USHORT unknown1; /* 0e0 */
5275 USHORT ireadinglayout; /* 0e2 LOCALE_IREADINGLAYOUT */
5276 USHORT unknown2[2]; /* 0e4 */
5277 UINT unused1; /* 0e8 unused? */
5278 UINT sengdisplayname; /* 0ec LOCALE_SENGLISHDISPLAYNAME */
5279 UINT snativedisplayname; /* 0f0 LOCALE_SNATIVEDISPLAYNAME */
5280 UINT spercent; /* 0f4 LOCALE_SPERCENT */
5281 UINT snan; /* 0f8 LOCALE_SNAN */
5282 UINT sposinfinity; /* 0fc LOCALE_SPOSINFINITY */
5283 UINT sneginfinity; /* 100 LOCALE_SNEGINFINITY */
5284 UINT unused2; /* 104 unused? */
5285 UINT serastring; /* 108 CAL_SERASTRING */
5286 UINT sabbreverastring; /* 10c CAL_SABBREVERASTRING */
5287 UINT unused3; /* 110 unused? */
5288 UINT sconsolefallbackname; /* 114 LOCALE_SCONSOLEFALLBACKNAME */
5289 UINT sshorttime; /* 118 LOCALE_SSHORTTIME (array of formats) */
5290 UINT sshortestdayname; /* 11c LOCALE_SSHORTESTDAYNAME1 (array of days 1..7) */
5291 UINT unused4; /* 120 unused? */
5292 UINT ssortlocale; /* 124 LOCALE_SSORTLOCALE */
5293 UINT skeyboardstoinstall; /* 128 LOCALE_SKEYBOARDSTOINSTALL */
5294 UINT sscripts; /* 12c LOCALE_SSCRIPTS */
5295 UINT srelativelongdate; /* 130 LOCALE_SRELATIVELONGDATE */
5296 UINT igeoid; /* 134 LOCALE_IGEOID */
5297 UINT sshortestam; /* 138 LOCALE_SSHORTESTAM */
5298 UINT sshortestpm; /* 13c LOCALE_SSHORTESTPM */
5299 UINT smonthday; /* 140 LOCALE_SMONTHDAY (array of formats) */
5300 UINT keyboard_layout; /* 144 keyboard layouts */
5301 } NLS_LOCALE_DATA;
5303 typedef struct
5305 UINT id; /* 00 lcid */
5306 USHORT idx; /* 04 index in locales array */
5307 USHORT name; /* 06 locale name */
5308 } NLS_LOCALE_LCID_INDEX;
5310 typedef struct
5312 USHORT name; /* 00 locale name */
5313 USHORT idx; /* 02 index in locales array */
5314 UINT id; /* 04 lcid */
5315 } NLS_LOCALE_LCNAME_INDEX;
5317 typedef struct
5319 UINT offset; /* 00 offset to version, always 8? */
5320 UINT unknown1; /* 04 */
5321 UINT version; /* 08 file format version */
5322 UINT magic; /* 0c magic 'NSDS' */
5323 UINT unknown2[3]; /* 10 */
5324 USHORT header_size; /* 1c size of this header (?) */
5325 USHORT nb_lcids; /* 1e number of lcids in index */
5326 USHORT nb_locales; /* 20 number of locales in array */
5327 USHORT locale_size; /* 22 size of NLS_LOCALE_DATA structure */
5328 UINT locales_offset; /* 24 offset of locales array */
5329 USHORT nb_lcnames; /* 28 number of lcnames in index */
5330 USHORT pad; /* 2a */
5331 UINT lcids_offset; /* 2c offset of lcids index */
5332 UINT lcnames_offset; /* 30 offset of lcnames index */
5333 UINT unknown3; /* 34 */
5334 USHORT nb_calendars; /* 38 number of calendars in array */
5335 USHORT calendar_size; /* 3a size of calendar structure */
5336 UINT calendars_offset; /* 3c offset of calendars array */
5337 UINT strings_offset; /* 40 offset of strings data */
5338 USHORT unknown4[4]; /* 44 */
5339 } NLS_LOCALE_HEADER;
5341 #endif /* __WINESRC__ */
5343 #ifdef __cplusplus
5344 } /* extern "C" */
5345 #endif /* defined(__cplusplus) */
5347 #endif /* __WINE_WINTERNL_H */