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