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