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