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