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