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