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