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