msado15: Implement Dispatch functions in _Connection.
[wine.git] / include / winternl.h
blobf0ab223ef2e054fe6373656fdd6fd646e245898b
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 64-bit version of the PEB and TEB for WoW64
509 #ifndef _WIN64
511 typedef struct _NT_TIB64
513 ULONG64 ExceptionList; /* 0000 */
514 ULONG64 StackBase; /* 0008 */
515 ULONG64 StackLimit; /* 0010 */
516 ULONG64 SubSystemTib; /* 0018 */
517 ULONG64 FiberData; /* 0020 */
518 ULONG64 ArbitraryUserPointer; /* 0028 */
519 ULONG64 Self; /* 0030 */
520 } NT_TIB64;
522 typedef struct _CLIENT_ID64
524 ULONG64 UniqueProcess;
525 ULONG64 UniqueThread;
526 } CLIENT_ID64;
528 typedef struct _LIST_ENTRY64
530 ULONG64 Flink;
531 ULONG64 Blink;
532 } LIST_ENTRY64;
534 typedef struct _UNICODE_STRING64
536 USHORT Length;
537 USHORT MaximumLength;
538 ULONG64 Buffer;
539 } UNICODE_STRING64;
541 typedef struct _ACTIVATION_CONTEXT_STACK64
543 ULONG64 ActiveFrame;
544 LIST_ENTRY64 FrameListCache;
545 ULONG Flags;
546 ULONG NextCookieSequenceNumber;
547 ULONG64 StackId;
548 } ACTIVATION_CONTEXT_STACK64;
550 typedef struct _PEB64
552 BOOLEAN InheritedAddressSpace; /* 0000 */
553 BOOLEAN ReadImageFileExecOptions; /* 0001 */
554 BOOLEAN BeingDebugged; /* 0002 */
555 BOOLEAN SpareBool; /* 0003 */
556 ULONG64 Mutant; /* 0008 */
557 ULONG64 ImageBaseAddress; /* 0010 */
558 ULONG64 LdrData; /* 0018 */
559 ULONG64 ProcessParameters; /* 0020 */
560 ULONG64 SubSystemData; /* 0028 */
561 ULONG64 ProcessHeap; /* 0030 */
562 ULONG64 FastPebLock; /* 0038 */
563 ULONG64 FastPebLockRoutine; /* 0040 */
564 ULONG64 FastPebUnlockRoutine; /* 0048 */
565 ULONG EnvironmentUpdateCount; /* 0050 */
566 ULONG64 KernelCallbackTable; /* 0058 */
567 ULONG Reserved; /* 0060 */
568 ULONG AtlThunkSListPtr32; /* 0064 */
569 ULONG64 FreeList; /* 0068 */
570 ULONG TlsExpansionCounter; /* 0070 */
571 ULONG64 TlsBitmap; /* 0078 */
572 ULONG TlsBitmapBits[2]; /* 0080 */
573 ULONG64 ReadOnlySharedMemoryBase; /* 0088 */
574 ULONG64 ReadOnlySharedMemoryHeap; /* 0090 */
575 ULONG64 ReadOnlyStaticServerData; /* 0098 */
576 ULONG64 AnsiCodePageData; /* 00a0 */
577 ULONG64 OemCodePageData; /* 00a8 */
578 ULONG64 UnicodeCaseTableData; /* 00b0 */
579 ULONG NumberOfProcessors; /* 00b8 */
580 ULONG NtGlobalFlag; /* 00bc */
581 LARGE_INTEGER CriticalSectionTimeout; /* 00c0 */
582 ULONG64 HeapSegmentReserve; /* 00c8 */
583 ULONG64 HeapSegmentCommit; /* 00d0 */
584 ULONG64 HeapDeCommitTotalFreeThreshold; /* 00d8 */
585 ULONG64 HeapDeCommitFreeBlockThreshold; /* 00e0 */
586 ULONG NumberOfHeaps; /* 00e8 */
587 ULONG MaximumNumberOfHeaps; /* 00ec */
588 ULONG64 ProcessHeaps; /* 00f0 */
589 ULONG64 GdiSharedHandleTable; /* 00f8 */
590 ULONG64 ProcessStarterHelper; /* 0100 */
591 ULONG64 GdiDCAttributeList; /* 0108 */
592 ULONG64 LoaderLock; /* 0110 */
593 ULONG OSMajorVersion; /* 0118 */
594 ULONG OSMinorVersion; /* 011c */
595 ULONG OSBuildNumber; /* 0120 */
596 ULONG OSPlatformId; /* 0124 */
597 ULONG ImageSubSystem; /* 0128 */
598 ULONG ImageSubSystemMajorVersion; /* 012c */
599 ULONG ImageSubSystemMinorVersion; /* 0130 */
600 ULONG ImageProcessAffinityMask; /* 0134 */
601 ULONG64 GdiHandleBuffer[28]; /* 0138 */
602 ULONG unknown[6]; /* 0218 */
603 ULONG64 PostProcessInitRoutine; /* 0230 */
604 ULONG64 TlsExpansionBitmap; /* 0238 */
605 ULONG TlsExpansionBitmapBits[32]; /* 0240 */
606 ULONG SessionId; /* 02c0 */
607 ULARGE_INTEGER AppCompatFlags; /* 02c8 */
608 ULARGE_INTEGER AppCompatFlagsUser; /* 02d0 */
609 ULONG64 ShimData; /* 02d8 */
610 ULONG64 AppCompatInfo; /* 02e0 */
611 UNICODE_STRING64 CSDVersion; /* 02e8 */
612 ULONG64 ActivationContextData; /* 02f8 */
613 ULONG64 ProcessAssemblyStorageMap; /* 0300 */
614 ULONG64 SystemDefaultActivationData; /* 0308 */
615 ULONG64 SystemAssemblyStorageMap; /* 0310 */
616 ULONG64 MinimumStackCommit; /* 0318 */
617 ULONG64 FlsCallback; /* 0320 */
618 LIST_ENTRY64 FlsListHead; /* 0328 */
619 ULONG64 FlsBitmap; /* 0338 */
620 ULONG FlsBitmapBits[4]; /* 0340 */
621 ULONG FlsHighIndex; /* 0350 */
622 ULONG64 WerRegistrationData; /* 0358 */
623 ULONG64 WerShipAssertPtr; /* 0360 */
624 ULONG64 pUnused; /* 0368 */
625 ULONG64 pImageHeaderHash; /* 0370 */
626 ULONG TracingFlags; /* 0378 */
627 ULONGLONG CsrServerReadOnlySharedMemoryBase; /* 0380 */
628 ULONG TppWorkerpListLock; /* 0388 */
629 LIST_ENTRY64 TppWorkerpList; /* 0390 */
630 ULONG64 WaitOnAddressHashTable [0x80]; /* 03a0 */
631 ULONG64 TelemetryCoverageHeader; /* 07a0 */
632 ULONG CloudFileFlags; /* 07a8 */
633 ULONG CloudFileDiagFlags; /* 07ac */
634 CHAR PlaceholderCompatibilityMode; /* 07b0 */
635 CHAR PlaceholderCompatibilityModeReserved[7]; /* 07b1 */
636 ULONG64 LeapSecondData; /* 07b8 */
637 ULONG LeapSecondFlags; /* 07c0 */
638 ULONG NtGlobalFlag2; /* 07c4 */
639 } PEB64;
641 typedef struct _TEB64
643 NT_TIB64 Tib; /* 0000 */
644 ULONG64 EnvironmentPointer; /* 0038 */
645 CLIENT_ID64 ClientId; /* 0040 */
646 ULONG64 ActiveRpcHandle; /* 0050 */
647 ULONG64 ThreadLocalStoragePointer; /* 0058 */
648 ULONG64 Peb; /* 0060 */
649 ULONG LastErrorValue; /* 0068 */
650 ULONG CountOfOwnedCriticalSections; /* 006c */
651 ULONG64 CsrClientThread; /* 0070 */
652 ULONG64 Win32ThreadInfo; /* 0078 */
653 ULONG User32Reserved[26]; /* 0080 */
654 ULONG UserReserved[5]; /* 00e8 */
655 ULONG64 WOW32Reserved; /* 0100 */
656 ULONG CurrentLocale; /* 0108 */
657 ULONG FpSoftwareStatusRegister; /* 010c */
658 ULONG64 ReservedForDebuggerInstrumentation[16]; /* 0110 */
659 ULONG64 SystemReserved1[30]; /* 0190 */
660 char PlaceholderCompatibilityMode; /* 0280 */
661 char PlaceholderReserved[11]; /* 0281 */
662 DWORD ProxiedProcessId; /* 028c */
663 ACTIVATION_CONTEXT_STACK64 ActivationContextStack; /* 0290 */
664 UCHAR WorkingOnBehalfOfTicket[8]; /* 02b8 */
665 LONG ExceptionCode; /* 02c0 */
666 ULONG64 ActivationContextStackPointer; /* 02c8 */
667 ULONG64 InstrumentationCallbackSp; /* 02d0 */
668 ULONG64 InstrumentationCallbackPreviousPc; /* 02d8 */
669 ULONG64 InstrumentationCallbackPreviousSp; /* 02e0 */
670 ULONG TxFsContext; /* 02e8 */
671 BOOLEAN InstrumentationCallbackDisabled; /* 02ec */
672 ULONG64 GdiTebBatch[0x9d]; /* 02f0 */
673 CLIENT_ID64 RealClientId; /* 07d8 */
674 ULONG64 GdiCachedProcessHandle; /* 07e8 */
675 ULONG GdiClientPID; /* 07f0 */
676 ULONG GdiClientTID; /* 07f4 */
677 ULONG64 GdiThreadLocaleInfo; /* 07f8 */
678 ULONG64 Win32ClientInfo[62]; /* 0800 */
679 ULONG64 glDispatchTable[233]; /* 09f0 */
680 ULONG64 glReserved1[29]; /* 1138 */
681 ULONG64 glReserved2; /* 1220 */
682 ULONG64 glSectionInfo; /* 1228 */
683 ULONG64 glSection; /* 1230 */
684 ULONG64 glTable; /* 1238 */
685 ULONG64 glCurrentRC; /* 1240 */
686 ULONG64 glContext; /* 1248 */
687 ULONG LastStatusValue; /* 1250 */
688 UNICODE_STRING64 StaticUnicodeString; /* 1258 */
689 WCHAR StaticUnicodeBuffer[261]; /* 1268 */
690 ULONG64 DeallocationStack; /* 1478 */
691 ULONG64 TlsSlots[64]; /* 1480 */
692 LIST_ENTRY64 TlsLinks; /* 1680 */
693 ULONG64 Vdm; /* 1690 */
694 ULONG64 ReservedForNtRpc; /* 1698 */
695 ULONG64 DbgSsReserved[2]; /* 16a0 */
696 ULONG HardErrorDisabled; /* 16b0 */
697 ULONG64 Instrumentation[16]; /* 16b8 */
698 ULONG64 WinSockData; /* 1738 */
699 ULONG GdiBatchCount; /* 1740 */
700 ULONG Spare2; /* 1744 */
701 ULONG GuaranteedStackBytes; /* 1748 */
702 ULONG64 ReservedForPerf; /* 1750 */
703 ULONG64 ReservedForOle; /* 1758 */
704 ULONG WaitingOnLoaderLock; /* 1760 */
705 ULONG64 Reserved5[3]; /* 1768 */
706 ULONG64 TlsExpansionSlots; /* 1780 */
707 ULONG64 DeallocationBStore; /* 1788 */
708 ULONG64 BStoreLimit; /* 1790 */
709 ULONG ImpersonationLocale; /* 1798 */
710 ULONG IsImpersonating; /* 179c */
711 ULONG64 NlsCache; /* 17a0 */
712 ULONG64 ShimData; /* 17a8 */
713 ULONG HeapVirtualAffinity; /* 17b0 */
714 ULONG64 CurrentTransactionHandle; /* 17b8 */
715 ULONG64 ActiveFrame; /* 17c0 */
716 ULONG64 FlsSlots; /* 17c8 */
717 ULONG64 PreferredLanguages; /* 17d0 */
718 ULONG64 UserPrefLanguages; /* 17d8 */
719 ULONG64 MergedPrefLanguages; /* 17e0 */
720 ULONG MuiImpersonation; /* 17e8 */
721 USHORT CrossTebFlags; /* 17ec */
722 USHORT SameTebFlags; /* 17ee */
723 ULONG64 TxnScopeEnterCallback; /* 17f0 */
724 ULONG64 TxnScopeExitCallback; /* 17f8 */
725 ULONG64 TxnScopeContext; /* 1800 */
726 ULONG LockCount; /* 1808 */
727 LONG WowTebOffset; /* 180c */
728 ULONG64 ResourceRetValue; /* 1810 */
729 ULONG64 ReservedForWdf; /* 1818 */
730 ULONGLONG ReservedForCrt; /* 1820 */
731 GUID EffectiveContainerId; /* 1828 */
732 } TEB64;
734 /* reserved TEB64 TLS slots for Wow64 */
735 #define WOW64_TLS_FILESYSREDIR 8
737 #endif /* _WIN64 */
739 /***********************************************************************
740 * Enums
743 typedef enum _FILE_INFORMATION_CLASS {
744 FileDirectoryInformation = 1,
745 FileFullDirectoryInformation,
746 FileBothDirectoryInformation,
747 FileBasicInformation,
748 FileStandardInformation,
749 FileInternalInformation,
750 FileEaInformation,
751 FileAccessInformation,
752 FileNameInformation,
753 FileRenameInformation,
754 FileLinkInformation,
755 FileNamesInformation,
756 FileDispositionInformation,
757 FilePositionInformation,
758 FileFullEaInformation,
759 FileModeInformation,
760 FileAlignmentInformation,
761 FileAllInformation,
762 FileAllocationInformation,
763 FileEndOfFileInformation,
764 FileAlternateNameInformation,
765 FileStreamInformation,
766 FilePipeInformation,
767 FilePipeLocalInformation,
768 FilePipeRemoteInformation,
769 FileMailslotQueryInformation,
770 FileMailslotSetInformation,
771 FileCompressionInformation,
772 FileObjectIdInformation,
773 FileCompletionInformation,
774 FileMoveClusterInformation,
775 FileQuotaInformation,
776 FileReparsePointInformation,
777 FileNetworkOpenInformation,
778 FileAttributeTagInformation,
779 FileTrackingInformation,
780 FileIdBothDirectoryInformation,
781 FileIdFullDirectoryInformation,
782 FileValidDataLengthInformation,
783 FileShortNameInformation,
784 FileIoCompletionNotificationInformation,
785 FileIoStatusBlockRangeInformation,
786 FileIoPriorityHintInformation,
787 FileSfioReserveInformation,
788 FileSfioVolumeInformation,
789 FileHardLinkInformation,
790 FileProcessIdsUsingFileInformation,
791 FileNormalizedNameInformation,
792 FileNetworkPhysicalNameInformation,
793 FileIdGlobalTxDirectoryInformation,
794 FileIsRemoteDeviceInformation,
795 FileAttributeCacheInformation,
796 FileNumaNodeInformation,
797 FileStandardLinkInformation,
798 FileRemoteProtocolInformation,
799 FileRenameInformationBypassAccessCheck,
800 FileLinkInformationBypassAccessCheck,
801 FileVolumeNameInformation,
802 FileIdInformation,
803 FileIdExtdDirectoryInformation,
804 FileReplaceCompletionInformation,
805 FileHardLinkFullIdInformation,
806 FileIdExtdBothDirectoryInformation,
807 FileMaximumInformation
808 } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
810 typedef struct _FILE_DIRECTORY_INFORMATION {
811 ULONG NextEntryOffset;
812 ULONG FileIndex;
813 LARGE_INTEGER CreationTime;
814 LARGE_INTEGER LastAccessTime;
815 LARGE_INTEGER LastWriteTime;
816 LARGE_INTEGER ChangeTime;
817 LARGE_INTEGER EndOfFile;
818 LARGE_INTEGER AllocationSize;
819 ULONG FileAttributes;
820 ULONG FileNameLength;
821 WCHAR FileName[ANYSIZE_ARRAY];
822 } FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION;
824 typedef struct _FILE_FULL_DIRECTORY_INFORMATION {
825 ULONG NextEntryOffset;
826 ULONG FileIndex;
827 LARGE_INTEGER CreationTime;
828 LARGE_INTEGER LastAccessTime;
829 LARGE_INTEGER LastWriteTime;
830 LARGE_INTEGER ChangeTime;
831 LARGE_INTEGER EndOfFile;
832 LARGE_INTEGER AllocationSize;
833 ULONG FileAttributes;
834 ULONG FileNameLength;
835 ULONG EaSize;
836 WCHAR FileName[ANYSIZE_ARRAY];
837 } FILE_FULL_DIRECTORY_INFORMATION, *PFILE_FULL_DIRECTORY_INFORMATION,
838 FILE_FULL_DIR_INFORMATION, *PFILE_FULL_DIR_INFORMATION;
840 typedef struct _FILE_ID_FULL_DIRECTORY_INFORMATION {
841 ULONG NextEntryOffset;
842 ULONG FileIndex;
843 LARGE_INTEGER CreationTime;
844 LARGE_INTEGER LastAccessTime;
845 LARGE_INTEGER LastWriteTime;
846 LARGE_INTEGER ChangeTime;
847 LARGE_INTEGER EndOfFile;
848 LARGE_INTEGER AllocationSize;
849 ULONG FileAttributes;
850 ULONG FileNameLength;
851 ULONG EaSize;
852 LARGE_INTEGER FileId;
853 WCHAR FileName[ANYSIZE_ARRAY];
854 } FILE_ID_FULL_DIRECTORY_INFORMATION, *PFILE_ID_FULL_DIRECTORY_INFORMATION;
856 typedef struct _FILE_BOTH_DIRECTORY_INFORMATION {
857 ULONG NextEntryOffset;
858 ULONG FileIndex;
859 LARGE_INTEGER CreationTime;
860 LARGE_INTEGER LastAccessTime;
861 LARGE_INTEGER LastWriteTime;
862 LARGE_INTEGER ChangeTime;
863 LARGE_INTEGER EndOfFile;
864 LARGE_INTEGER AllocationSize;
865 ULONG FileAttributes;
866 ULONG FileNameLength;
867 ULONG EaSize;
868 CHAR ShortNameLength;
869 WCHAR ShortName[12];
870 WCHAR FileName[ANYSIZE_ARRAY];
871 } FILE_BOTH_DIRECTORY_INFORMATION, *PFILE_BOTH_DIRECTORY_INFORMATION,
872 FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;
874 typedef struct _FILE_ID_BOTH_DIRECTORY_INFORMATION {
875 ULONG NextEntryOffset;
876 ULONG FileIndex;
877 LARGE_INTEGER CreationTime;
878 LARGE_INTEGER LastAccessTime;
879 LARGE_INTEGER LastWriteTime;
880 LARGE_INTEGER ChangeTime;
881 LARGE_INTEGER EndOfFile;
882 LARGE_INTEGER AllocationSize;
883 ULONG FileAttributes;
884 ULONG FileNameLength;
885 ULONG EaSize;
886 CHAR ShortNameLength;
887 WCHAR ShortName[12];
888 LARGE_INTEGER FileId;
889 WCHAR FileName[ANYSIZE_ARRAY];
890 } FILE_ID_BOTH_DIRECTORY_INFORMATION, *PFILE_ID_BOTH_DIRECTORY_INFORMATION;
892 typedef struct _FILE_ID_GLOBAL_TX_DIR_INFORMATION {
893 ULONG NextEntryOffset;
894 ULONG FileIndex;
895 LARGE_INTEGER CreationTime;
896 LARGE_INTEGER LastAccessTime;
897 LARGE_INTEGER LastWriteTime;
898 LARGE_INTEGER ChangeTime;
899 LARGE_INTEGER EndOfFile;
900 LARGE_INTEGER AllocationSize;
901 ULONG FileAttributes;
902 ULONG FileNameLength;
903 LARGE_INTEGER FileId;
904 GUID LockingTransactionId;
905 ULONG TxInfoFlags;
906 WCHAR FileName[ANYSIZE_ARRAY];
907 } FILE_ID_GLOBAL_TX_DIR_INFORMATION, *PFILE_ID_GLOBAL_TX_DIR_INFORMATION;
909 typedef struct _FILE_BASIC_INFORMATION {
910 LARGE_INTEGER CreationTime;
911 LARGE_INTEGER LastAccessTime;
912 LARGE_INTEGER LastWriteTime;
913 LARGE_INTEGER ChangeTime;
914 ULONG FileAttributes;
915 } FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
917 typedef struct _FILE_STANDARD_INFORMATION {
918 LARGE_INTEGER AllocationSize;
919 LARGE_INTEGER EndOfFile;
920 ULONG NumberOfLinks;
921 BOOLEAN DeletePending;
922 BOOLEAN Directory;
923 } FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;
925 typedef struct _FILE_INTERNAL_INFORMATION {
926 LARGE_INTEGER IndexNumber;
927 } FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;
929 typedef struct _FILE_ID_128 {
930 UCHAR Identifier[16];
931 } FILE_ID_128, *PFILE_ID_128;
933 typedef struct _FILE_ID_INFORMATION {
934 ULONGLONG VolumeSerialNumber;
935 FILE_ID_128 FileId;
936 } FILE_ID_INFORMATION, *PFILE_ID_INFORMATION;
938 typedef struct _FILE_EA_INFORMATION {
939 ULONG EaSize;
940 } FILE_EA_INFORMATION, *PFILE_EA_INFORMATION;
942 typedef struct _FILE_ACCESS_INFORMATION {
943 ACCESS_MASK AccessFlags;
944 } FILE_ACCESS_INFORMATION, *PFILE_ACCESS_INFORMATION;
946 typedef struct _FILE_NAME_INFORMATION {
947 ULONG FileNameLength;
948 WCHAR FileName[1];
949 } FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
951 typedef struct _FILE_RENAME_INFORMATION {
952 BOOLEAN ReplaceIfExists;
953 HANDLE RootDirectory;
954 ULONG FileNameLength;
955 WCHAR FileName[1];
956 } FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;
958 typedef struct _FILE_LINK_INFORMATION {
959 BOOLEAN ReplaceIfExists;
960 HANDLE RootDirectory;
961 ULONG FileNameLength;
962 WCHAR FileName[1];
963 } FILE_LINK_INFORMATION, *PFILE_LINK_INFORMATION;
965 typedef struct _FILE_NAMES_INFORMATION {
966 ULONG NextEntryOffset;
967 ULONG FileIndex;
968 ULONG FileNameLength;
969 WCHAR FileName[1];
970 } FILE_NAMES_INFORMATION, *PFILE_NAMES_INFORMATION;
972 typedef struct _FILE_DISPOSITION_INFORMATION {
973 BOOLEAN DoDeleteFile;
974 } FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION;
976 typedef struct _FILE_POSITION_INFORMATION {
977 LARGE_INTEGER CurrentByteOffset;
978 } FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;
980 typedef struct _FILE_ALIGNMENT_INFORMATION {
981 ULONG AlignmentRequirement;
982 } FILE_ALIGNMENT_INFORMATION, *PFILE_ALIGNMENT_INFORMATION;
984 typedef struct _FILE_ALLOCATION_INFORMATION {
985 LARGE_INTEGER AllocationSize;
986 } FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION;
988 typedef struct _FILE_END_OF_FILE_INFORMATION {
989 LARGE_INTEGER EndOfFile;
990 } FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;
992 typedef struct _FILE_NETWORK_OPEN_INFORMATION {
993 LARGE_INTEGER CreationTime;
994 LARGE_INTEGER LastAccessTime;
995 LARGE_INTEGER LastWriteTime;
996 LARGE_INTEGER ChangeTime;
997 LARGE_INTEGER AllocationSize;
998 LARGE_INTEGER EndOfFile;
999 ULONG FileAttributes;
1000 } FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;
1002 typedef struct _FILE_FULL_EA_INFORMATION {
1003 ULONG NextEntryOffset;
1004 UCHAR Flags;
1005 UCHAR EaNameLength;
1006 USHORT EaValueLength;
1007 CHAR EaName[1];
1008 } FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
1010 typedef struct _FILE_MODE_INFORMATION {
1011 ULONG Mode;
1012 } FILE_MODE_INFORMATION, *PFILE_MODE_INFORMATION;
1014 typedef struct _FILE_STREAM_INFORMATION
1016 ULONG NextEntryOffset;
1017 ULONG StreamNameLength;
1018 LARGE_INTEGER StreamSize;
1019 LARGE_INTEGER StreamAllocationSize;
1020 WCHAR StreamName[1];
1021 } FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
1023 typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION
1025 ULONG FileAttributes;
1026 ULONG ReparseTag;
1027 } FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION;
1029 typedef struct _FILE_MAILSLOT_QUERY_INFORMATION {
1030 ULONG MaximumMessageSize;
1031 ULONG MailslotQuota;
1032 ULONG NextMessageSize;
1033 ULONG MessagesAvailable;
1034 LARGE_INTEGER ReadTimeout;
1035 } FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION;
1037 typedef struct _FILE_MAILSLOT_SET_INFORMATION {
1038 LARGE_INTEGER ReadTimeout;
1039 } FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION;
1041 typedef struct _FILE_PIPE_INFORMATION {
1042 ULONG ReadMode;
1043 ULONG CompletionMode;
1044 } FILE_PIPE_INFORMATION, *PFILE_PIPE_INFORMATION;
1046 typedef struct _FILE_PIPE_LOCAL_INFORMATION {
1047 ULONG NamedPipeType;
1048 ULONG NamedPipeConfiguration;
1049 ULONG MaximumInstances;
1050 ULONG CurrentInstances;
1051 ULONG InboundQuota;
1052 ULONG ReadDataAvailable;
1053 ULONG OutboundQuota;
1054 ULONG WriteQuotaAvailable;
1055 ULONG NamedPipeState;
1056 ULONG NamedPipeEnd;
1057 } FILE_PIPE_LOCAL_INFORMATION, *PFILE_PIPE_LOCAL_INFORMATION;
1059 #define FILE_PIPE_DISCONNECTED_STATE 0x00000001
1060 #define FILE_PIPE_LISTENING_STATE 0x00000002
1061 #define FILE_PIPE_CONNECTED_STATE 0x00000003
1062 #define FILE_PIPE_CLOSING_STATE 0x00000004
1064 typedef struct _FILE_OBJECTID_BUFFER
1066 BYTE ObjectId[16];
1067 union
1069 struct
1071 BYTE BirthVolumeId[16];
1072 BYTE BirthObjectId[16];
1073 BYTE DomainId[16];
1074 } DUMMYSTRUCTNAME;
1075 BYTE ExtendedInfo[48];
1076 } DUMMYUNIONNAME;
1077 } FILE_OBJECTID_BUFFER, *PFILE_OBJECTID_BUFFER;
1079 typedef struct _FILE_OBJECTID_INFORMATION {
1080 LONGLONG FileReference;
1081 UCHAR ObjectId[16];
1082 union {
1083 struct {
1084 UCHAR BirthVolumeId[16];
1085 UCHAR BirthObjectId[16];
1086 UCHAR DomainId[16];
1087 } DUMMYSTRUCTNAME;
1088 UCHAR ExtendedInfo[48];
1089 } DUMMYUNIONNAME;
1090 } FILE_OBJECTID_INFORMATION, *PFILE_OBJECTID_INFORMATION;
1092 typedef struct _FILE_QUOTA_INFORMATION {
1093 ULONG NextEntryOffset;
1094 ULONG SidLength;
1095 LARGE_INTEGER ChangeTime;
1096 LARGE_INTEGER QuotaUsed;
1097 LARGE_INTEGER QuotaThreshold;
1098 LARGE_INTEGER QuotaLimit;
1099 SID Sid;
1100 } FILE_QUOTA_INFORMATION, *PFILE_QUOTA_INFORMATION;
1102 typedef struct _FILE_REPARSE_POINT_INFORMATION {
1103 LONGLONG FileReference;
1104 ULONG Tag;
1105 } FILE_REPARSE_POINT_INFORMATION, *PFILE_REPARSE_POINT_INFORMATION;
1107 typedef struct _FILE_ALL_INFORMATION {
1108 FILE_BASIC_INFORMATION BasicInformation;
1109 FILE_STANDARD_INFORMATION StandardInformation;
1110 FILE_INTERNAL_INFORMATION InternalInformation;
1111 FILE_EA_INFORMATION EaInformation;
1112 FILE_ACCESS_INFORMATION AccessInformation;
1113 FILE_POSITION_INFORMATION PositionInformation;
1114 FILE_MODE_INFORMATION ModeInformation;
1115 FILE_ALIGNMENT_INFORMATION AlignmentInformation;
1116 FILE_NAME_INFORMATION NameInformation;
1117 } FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION;
1119 typedef struct _FILE_IO_COMPLETION_NOTIFICATION_INFORMATION {
1120 ULONG Flags;
1121 } FILE_IO_COMPLETION_NOTIFICATION_INFORMATION, *PFILE_IO_COMPLETION_NOTIFICATION_INFORMATION;
1123 #define FILE_SKIP_COMPLETION_PORT_ON_SUCCESS 0x1
1124 #define FILE_SKIP_SET_EVENT_ON_HANDLE 0x2
1125 #define FILE_SKIP_SET_USER_EVENT_ON_FAST_IO 0x4
1127 typedef enum _FSINFOCLASS {
1128 FileFsVolumeInformation = 1,
1129 FileFsLabelInformation,
1130 FileFsSizeInformation,
1131 FileFsDeviceInformation,
1132 FileFsAttributeInformation,
1133 FileFsControlInformation,
1134 FileFsFullSizeInformation,
1135 FileFsObjectIdInformation,
1136 FileFsMaximumInformation
1137 } FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
1139 typedef enum _KEY_INFORMATION_CLASS {
1140 KeyBasicInformation,
1141 KeyNodeInformation,
1142 KeyFullInformation,
1143 KeyNameInformation,
1144 KeyCachedInformation,
1145 KeyFlagsInformation,
1146 KeyVirtualizationInformation,
1147 KeyHandleTagsInformation,
1148 MaxKeyInfoClass
1149 } KEY_INFORMATION_CLASS;
1151 typedef enum _KEY_VALUE_INFORMATION_CLASS {
1152 KeyValueBasicInformation,
1153 KeyValueFullInformation,
1154 KeyValuePartialInformation,
1155 KeyValueFullInformationAlign64,
1156 KeyValuePartialInformationAlign64
1157 } KEY_VALUE_INFORMATION_CLASS;
1159 typedef enum _OBJECT_INFORMATION_CLASS {
1160 ObjectBasicInformation,
1161 ObjectNameInformation,
1162 ObjectTypeInformation,
1163 ObjectTypesInformation,
1164 ObjectDataInformation
1165 } OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS;
1167 typedef enum _PROCESSINFOCLASS {
1168 ProcessBasicInformation = 0,
1169 ProcessQuotaLimits = 1,
1170 ProcessIoCounters = 2,
1171 ProcessVmCounters = 3,
1172 ProcessTimes = 4,
1173 ProcessBasePriority = 5,
1174 ProcessRaisePriority = 6,
1175 ProcessDebugPort = 7,
1176 ProcessExceptionPort = 8,
1177 ProcessAccessToken = 9,
1178 ProcessLdtInformation = 10,
1179 ProcessLdtSize = 11,
1180 ProcessDefaultHardErrorMode = 12,
1181 ProcessIoPortHandlers = 13,
1182 ProcessPooledUsageAndLimits = 14,
1183 ProcessWorkingSetWatch = 15,
1184 ProcessUserModeIOPL = 16,
1185 ProcessEnableAlignmentFaultFixup = 17,
1186 ProcessPriorityClass = 18,
1187 ProcessWx86Information = 19,
1188 ProcessHandleCount = 20,
1189 ProcessAffinityMask = 21,
1190 ProcessPriorityBoost = 22,
1191 ProcessDeviceMap = 23,
1192 ProcessSessionInformation = 24,
1193 ProcessForegroundInformation = 25,
1194 ProcessWow64Information = 26,
1195 ProcessImageFileName = 27,
1196 ProcessLUIDDeviceMapsEnabled = 28,
1197 ProcessBreakOnTermination = 29,
1198 ProcessDebugObjectHandle = 30,
1199 ProcessDebugFlags = 31,
1200 ProcessHandleTracing = 32,
1201 ProcessIoPriority = 33,
1202 ProcessExecuteFlags = 34,
1203 ProcessTlsInformation = 35,
1204 ProcessCookie = 36,
1205 ProcessImageInformation = 37,
1206 ProcessCycleTime = 38,
1207 ProcessPagePriority = 39,
1208 ProcessInstrumentationCallback = 40,
1209 ProcessThreadStackAllocation = 41,
1210 ProcessWorkingSetWatchEx = 42,
1211 ProcessImageFileNameWin32 = 43,
1212 MaxProcessInfoClass
1213 } PROCESSINFOCLASS, PROCESS_INFORMATION_CLASS;
1215 #define MEM_EXECUTE_OPTION_DISABLE 0x01
1216 #define MEM_EXECUTE_OPTION_ENABLE 0x02
1217 #define MEM_EXECUTE_OPTION_DISABLE_THUNK_EMULATION 0x04
1218 #define MEM_EXECUTE_OPTION_PERMANENT 0x08
1220 typedef enum _SECTION_INHERIT {
1221 ViewShare = 1,
1222 ViewUnmap = 2
1223 } SECTION_INHERIT;
1225 typedef enum _SYSTEM_INFORMATION_CLASS {
1226 SystemBasicInformation = 0,
1227 SystemCpuInformation = 1,
1228 SystemPerformanceInformation = 2,
1229 SystemTimeOfDayInformation = 3, /* was SystemTimeInformation */
1230 Unknown4,
1231 SystemProcessInformation = 5,
1232 Unknown6,
1233 Unknown7,
1234 SystemProcessorPerformanceInformation = 8,
1235 Unknown9,
1236 Unknown10,
1237 SystemModuleInformation = 11,
1238 Unknown12,
1239 Unknown13,
1240 Unknown14,
1241 Unknown15,
1242 SystemHandleInformation = 16,
1243 Unknown17,
1244 SystemPageFileInformation = 18,
1245 Unknown19,
1246 Unknown20,
1247 SystemCacheInformation = 21,
1248 Unknown22,
1249 SystemInterruptInformation = 23,
1250 SystemDpcBehaviourInformation = 24,
1251 SystemFullMemoryInformation = 25,
1252 SystemNotImplemented6 = 25,
1253 SystemLoadImage = 26,
1254 SystemUnloadImage = 27,
1255 SystemTimeAdjustmentInformation = 28,
1256 SystemTimeAdjustment = 28,
1257 SystemSummaryMemoryInformation = 29,
1258 SystemNotImplemented7 = 29,
1259 SystemNextEventIdInformation = 30,
1260 SystemNotImplemented8 = 30,
1261 SystemEventIdsInformation = 31,
1262 SystemCrashDumpInformation = 32,
1263 SystemExceptionInformation = 33,
1264 SystemCrashDumpStateInformation = 34,
1265 SystemKernelDebuggerInformation = 35,
1266 SystemContextSwitchInformation = 36,
1267 SystemRegistryQuotaInformation = 37,
1268 SystemCurrentTimeZoneInformation = 44,
1269 SystemTimeZoneInformation = 44,
1270 SystemLookasideInformation = 45,
1271 SystemSetTimeSlipEvent = 46,
1272 SystemCreateSession = 47,
1273 SystemDeleteSession = 48,
1274 SystemInvalidInfoClass4 = 49,
1275 SystemRangeStartInformation = 50,
1276 SystemVerifierInformation = 51,
1277 SystemAddVerifier = 52,
1278 SystemSessionProcessesInformation = 53,
1279 SystemLoadGdiDriverInSystemSpace = 54,
1280 SystemNumaProcessorMap = 55,
1281 SystemPrefetcherInformation = 56,
1282 SystemExtendedProcessInformation = 57,
1283 SystemRecommendedSharedDataAlignment = 58,
1284 SystemComPlusPackage = 59,
1285 SystemNumaAvailableMemory = 60,
1286 SystemProcessorPowerInformation = 61,
1287 SystemEmulationBasicInformation = 62,
1288 SystemEmulationProcessorInformation = 63,
1289 SystemExtendedHandleInformation = 64,
1290 SystemLostDelayedWriteInformation = 65,
1291 SystemBigPoolInformation = 66,
1292 SystemSessionPoolTagInformation = 67,
1293 SystemSessionMappedViewInformation = 68,
1294 SystemHotpatchInformation = 69,
1295 SystemObjectSecurityMode = 70,
1296 SystemWatchdogTimerHandler = 71,
1297 SystemWatchdogTimerInformation = 72,
1298 SystemLogicalProcessorInformation = 73,
1299 SystemWow64SharedInformation = 74,
1300 SystemRegisterFirmwareTableInformationHandler = 75,
1301 SystemFirmwareTableInformation = 76,
1302 SystemModuleInformationEx = 77,
1303 SystemVerifierTriageInformation = 78,
1304 SystemSuperfetchInformation = 79,
1305 SystemMemoryListInformation = 80,
1306 SystemFileCacheInformationEx = 81,
1307 SystemDynamicTimeZoneInformation = 102,
1308 SystemLogicalProcessorInformationEx = 107,
1309 SystemInformationClassMax
1310 } SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS;
1312 typedef enum _THREADINFOCLASS {
1313 ThreadBasicInformation = 0,
1314 ThreadTimes,
1315 ThreadPriority,
1316 ThreadBasePriority,
1317 ThreadAffinityMask,
1318 ThreadImpersonationToken,
1319 ThreadDescriptorTableEntry,
1320 ThreadEnableAlignmentFaultFixup,
1321 ThreadEventPair_Reusable,
1322 ThreadQuerySetWin32StartAddress,
1323 ThreadZeroTlsCell,
1324 ThreadPerformanceCount,
1325 ThreadAmILastThread,
1326 ThreadIdealProcessor,
1327 ThreadPriorityBoost,
1328 ThreadSetTlsArrayAddress,
1329 ThreadIsIoPending,
1330 ThreadHideFromDebugger,
1331 ThreadBreakOnTermination,
1332 ThreadSwitchLegacyState,
1333 ThreadIsTerminated,
1334 ThreadLastSystemCall,
1335 ThreadIoPriority,
1336 ThreadCycleTime,
1337 ThreadPagePriority,
1338 ThreadActualBasePriority,
1339 ThreadTebInformation,
1340 ThreadCSwitchMon,
1341 ThreadCSwitchPmu,
1342 ThreadWow64Context,
1343 ThreadGroupInformation,
1344 ThreadUmsInformation,
1345 ThreadCounterProfiling,
1346 ThreadIdealProcessorEx,
1347 ThreadSuspendCount = 35,
1348 ThreadDescription = 38,
1349 MaxThreadInfoClass
1350 } THREADINFOCLASS;
1352 typedef struct _THREAD_BASIC_INFORMATION
1354 NTSTATUS ExitStatus;
1355 PVOID TebBaseAddress;
1356 CLIENT_ID ClientId;
1357 ULONG_PTR AffinityMask;
1358 LONG Priority;
1359 LONG BasePriority;
1360 } THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION;
1362 typedef struct _THREAD_DESCRIPTOR_INFORMATION
1364 DWORD Selector;
1365 LDT_ENTRY Entry;
1366 } THREAD_DESCRIPTOR_INFORMATION, *PTHREAD_DESCRIPTOR_INFORMATION;
1368 typedef struct _THREAD_DESCRIPTION_INFORMATION
1370 UNICODE_STRING Description;
1371 } THREAD_DESCRIPTION_INFORMATION, *PTHREAD_DESCRIPTION_INFORMATION;
1373 typedef struct _KERNEL_USER_TIMES {
1374 LARGE_INTEGER CreateTime;
1375 LARGE_INTEGER ExitTime;
1376 LARGE_INTEGER KernelTime;
1377 LARGE_INTEGER UserTime;
1378 } KERNEL_USER_TIMES, *PKERNEL_USER_TIMES;
1380 typedef enum _WINSTATIONINFOCLASS {
1381 WinStationInformation = 8
1382 } WINSTATIONINFOCLASS;
1384 typedef enum _MEMORY_INFORMATION_CLASS {
1385 MemoryBasicInformation,
1386 MemoryWorkingSetList,
1387 MemorySectionName,
1388 MemoryBasicVlmInformation,
1389 MemoryWorkingSetExInformation
1390 } MEMORY_INFORMATION_CLASS;
1392 typedef struct _MEMORY_SECTION_NAME
1394 UNICODE_STRING SectionFileName;
1395 } MEMORY_SECTION_NAME, *PMEMORY_SECTION_NAME;
1397 typedef union _MEMORY_WORKING_SET_EX_BLOCK {
1398 ULONG_PTR Flags;
1399 struct {
1400 ULONG_PTR Valid : 1;
1401 ULONG_PTR ShareCount : 3;
1402 ULONG_PTR Win32Protection : 11;
1403 ULONG_PTR Shared : 1;
1404 ULONG_PTR Node : 6;
1405 ULONG_PTR Locked : 1;
1406 ULONG_PTR LargePage : 1;
1407 } DUMMYSTRUCTNAME;
1408 } MEMORY_WORKING_SET_EX_BLOCK, *PMEMORY_WORKING_SET_EX_BLOCK;
1410 typedef struct _MEMORY_WORKING_SET_EX_INFORMATION {
1411 PVOID VirtualAddress;
1412 MEMORY_WORKING_SET_EX_BLOCK VirtualAttributes;
1413 } MEMORY_WORKING_SET_EX_INFORMATION, *PMEMORY_WORKING_SET_EX_INFORMATION;
1415 typedef enum _MUTANT_INFORMATION_CLASS
1417 MutantBasicInformation
1418 } MUTANT_INFORMATION_CLASS, *PMUTANT_INFORMATION_CLASS;
1420 typedef struct _MUTANT_BASIC_INFORMATION {
1421 LONG CurrentCount;
1422 BOOLEAN OwnedByCaller;
1423 BOOLEAN AbandonedState;
1424 } MUTANT_BASIC_INFORMATION, *PMUTANT_BASIC_INFORMATION;
1426 typedef enum _TIMER_INFORMATION_CLASS
1428 TimerBasicInformation = 0
1429 } TIMER_INFORMATION_CLASS;
1431 typedef struct _TIMER_BASIC_INFORMATION
1433 LARGE_INTEGER RemainingTime;
1434 BOOLEAN TimerState;
1435 } TIMER_BASIC_INFORMATION, *PTIMER_BASIC_INFORMATION;
1438 /* return type of RtlDetermineDosPathNameType_U (FIXME: not the correct names) */
1439 typedef enum
1441 INVALID_PATH = 0,
1442 UNC_PATH, /* "//foo" */
1443 ABSOLUTE_DRIVE_PATH, /* "c:/foo" */
1444 RELATIVE_DRIVE_PATH, /* "c:foo" */
1445 ABSOLUTE_PATH, /* "/foo" */
1446 RELATIVE_PATH, /* "foo" */
1447 DEVICE_PATH, /* "//./foo" */
1448 UNC_DOT_PATH /* "//." */
1449 } DOS_PATHNAME_TYPE;
1452 /***********************************************************************
1453 * Types and data structures
1456 /* This is used by NtQuerySystemInformation */
1457 typedef struct _SYSTEM_THREAD_INFORMATION
1458 { /* win32/win64 */
1459 LARGE_INTEGER KernelTime; /* 00/00 */
1460 LARGE_INTEGER UserTime; /* 08/08 */
1461 LARGE_INTEGER CreateTime; /* 10/10 */
1462 DWORD dwTickCount; /* 18/18 */
1463 LPVOID StartAddress; /* 1c/20 */
1464 CLIENT_ID ClientId; /* 20/28 */
1465 DWORD dwCurrentPriority; /* 28/38 */
1466 DWORD dwBasePriority; /* 2c/3c */
1467 DWORD dwContextSwitches; /* 30/40 */
1468 DWORD dwThreadState; /* 34/44 */
1469 DWORD dwWaitReason; /* 38/48 */
1470 DWORD dwUnknown; /* 3c/4c */
1471 } SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION;
1473 typedef struct _IO_STATUS_BLOCK {
1474 union {
1475 NTSTATUS Status;
1476 PVOID Pointer;
1477 } DUMMYUNIONNAME;
1479 ULONG_PTR Information;
1480 } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
1482 typedef void (WINAPI * PIO_APC_ROUTINE)(PVOID,PIO_STATUS_BLOCK,ULONG);
1484 typedef struct _KEY_BASIC_INFORMATION {
1485 LARGE_INTEGER LastWriteTime;
1486 ULONG TitleIndex;
1487 ULONG NameLength;
1488 WCHAR Name[1];
1489 } KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
1491 typedef struct _KEY_NODE_INFORMATION
1493 LARGE_INTEGER LastWriteTime;
1494 ULONG TitleIndex;
1495 ULONG ClassOffset;
1496 ULONG ClassLength;
1497 ULONG NameLength;
1498 WCHAR Name[1];
1499 /* Class[1]; */
1500 } KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
1502 typedef struct _KEY_FULL_INFORMATION
1504 LARGE_INTEGER LastWriteTime;
1505 ULONG TitleIndex;
1506 ULONG ClassOffset;
1507 ULONG ClassLength;
1508 ULONG SubKeys;
1509 ULONG MaxNameLen;
1510 ULONG MaxClassLen;
1511 ULONG Values;
1512 ULONG MaxValueNameLen;
1513 ULONG MaxValueDataLen;
1514 WCHAR Class[1];
1515 } KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
1517 typedef struct _KEY_NAME_INFORMATION {
1518 ULONG NameLength;
1519 WCHAR Name[1];
1520 } KEY_NAME_INFORMATION, *PKEY_NAME_INFORMATION;
1522 typedef struct _KEY_CACHED_INFORMATION
1524 LARGE_INTEGER LastWriteTime;
1525 ULONG TitleIndex;
1526 ULONG SubKeys;
1527 ULONG MaxNameLen;
1528 ULONG Values;
1529 ULONG MaxValueNameLen;
1530 ULONG MaxValueDataLen;
1531 ULONG NameLength;
1532 } KEY_CACHED_INFORMATION, *PKEY_CACHED_INFORMATION;
1534 typedef struct _KEY_VALUE_ENTRY
1536 PUNICODE_STRING ValueName;
1537 ULONG DataLength;
1538 ULONG DataOffset;
1539 ULONG Type;
1540 } KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
1542 typedef struct _KEY_VALUE_BASIC_INFORMATION {
1543 ULONG TitleIndex;
1544 ULONG Type;
1545 ULONG NameLength;
1546 WCHAR Name[1];
1547 } KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
1549 typedef struct _KEY_VALUE_FULL_INFORMATION {
1550 ULONG TitleIndex;
1551 ULONG Type;
1552 ULONG DataOffset;
1553 ULONG DataLength;
1554 ULONG NameLength;
1555 WCHAR Name[1];
1556 } KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
1558 typedef struct _KEY_VALUE_PARTIAL_INFORMATION {
1559 ULONG TitleIndex;
1560 ULONG Type;
1561 ULONG DataLength;
1562 UCHAR Data[1];
1563 } KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
1565 #ifndef __OBJECT_ATTRIBUTES_DEFINED__
1566 #define __OBJECT_ATTRIBUTES_DEFINED__
1567 typedef struct _OBJECT_ATTRIBUTES {
1568 ULONG Length;
1569 HANDLE RootDirectory;
1570 PUNICODE_STRING ObjectName;
1571 ULONG Attributes;
1572 PVOID SecurityDescriptor; /* type SECURITY_DESCRIPTOR */
1573 PVOID SecurityQualityOfService; /* type SECURITY_QUALITY_OF_SERVICE */
1574 } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
1575 #endif
1577 typedef struct _OBJECT_DATA_INFORMATION {
1578 BOOLEAN InheritHandle;
1579 BOOLEAN ProtectFromClose;
1580 } OBJECT_DATA_INFORMATION, *POBJECT_DATA_INFORMATION;
1582 typedef struct _OBJECT_BASIC_INFORMATION {
1583 ULONG Attributes;
1584 ACCESS_MASK GrantedAccess;
1585 ULONG HandleCount;
1586 ULONG PointerCount;
1587 ULONG PagedPoolUsage;
1588 ULONG NonPagedPoolUsage;
1589 ULONG Reserved[3];
1590 ULONG NameInformationLength;
1591 ULONG TypeInformationLength;
1592 ULONG SecurityDescriptorLength;
1593 LARGE_INTEGER CreateTime;
1594 } OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION;
1596 typedef struct _OBJECT_NAME_INFORMATION {
1597 UNICODE_STRING Name;
1598 } OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
1600 typedef struct __OBJECT_TYPE_INFORMATION {
1601 UNICODE_STRING TypeName;
1602 ULONG TotalNumberOfObjects;
1603 ULONG TotalNumberOfHandles;
1604 ULONG TotalPagedPoolUsage;
1605 ULONG TotalNonPagedPoolUsage;
1606 ULONG TotalNamePoolUsage;
1607 ULONG TotalHandleTableUsage;
1608 ULONG HighWaterNumberOfObjects;
1609 ULONG HighWaterNumberOfHandles;
1610 ULONG HighWaterPagedPoolUsage;
1611 ULONG HighWaterNonPagedPoolUsage;
1612 ULONG HighWaterNamePoolUsage;
1613 ULONG HighWaterHandleTableUsage;
1614 ULONG InvalidAttributes;
1615 GENERIC_MAPPING GenericMapping;
1616 ULONG ValidAccessMask;
1617 BOOLEAN SecurityRequired;
1618 BOOLEAN MaintainHandleCount;
1619 UCHAR TypeIndex;
1620 CHAR ReservedByte;
1621 ULONG PoolType;
1622 ULONG DefaultPagedPoolCharge;
1623 ULONG DefaultNonPagedPoolCharge;
1624 } OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION;
1626 typedef struct _OBJECT_TYPES_INFORMATION
1628 ULONG NumberOfTypes;
1629 } OBJECT_TYPES_INFORMATION, *POBJECT_TYPES_INFORMATION;
1631 typedef struct _PROCESS_BASIC_INFORMATION {
1632 #ifdef __WINESRC__
1633 DWORD_PTR ExitStatus;
1634 PPEB PebBaseAddress;
1635 DWORD_PTR AffinityMask;
1636 DWORD_PTR BasePriority;
1637 ULONG_PTR UniqueProcessId;
1638 ULONG_PTR InheritedFromUniqueProcessId;
1639 #else
1640 PVOID Reserved1;
1641 PPEB PebBaseAddress;
1642 PVOID Reserved2[2];
1643 ULONG_PTR UniqueProcessId;
1644 PVOID Reserved3;
1645 #endif
1646 } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
1648 #define PROCESS_PRIOCLASS_IDLE 1
1649 #define PROCESS_PRIOCLASS_NORMAL 2
1650 #define PROCESS_PRIOCLASS_HIGH 3
1651 #define PROCESS_PRIOCLASS_REALTIME 4
1652 #define PROCESS_PRIOCLASS_BELOW_NORMAL 5
1653 #define PROCESS_PRIOCLASS_ABOVE_NORMAL 6
1655 typedef struct _PROCESS_PRIORITY_CLASS {
1656 BOOLEAN Foreground;
1657 UCHAR PriorityClass;
1658 } PROCESS_PRIORITY_CLASS, *PPROCESS_PRIORITY_CLASS;
1660 typedef struct _PROCESS_STACK_ALLOCATION_INFORMATION
1662 SIZE_T ReserveSize;
1663 SIZE_T ZeroBits;
1664 PVOID StackBase;
1665 } PROCESS_STACK_ALLOCATION_INFORMATION, *PPROCESS_STACK_ALLOCATION_INFORMATION;
1667 typedef struct _PROCESS_STACK_ALLOCATION_INFORMATION_EX
1669 ULONG PreferredNode;
1670 ULONG Reserved0;
1671 ULONG Reserved1;
1672 ULONG Reserved2;
1673 PROCESS_STACK_ALLOCATION_INFORMATION AllocInfo;
1674 } PROCESS_STACK_ALLOCATION_INFORMATION_EX, *PPROCESS_STACK_ALLOCATION_INFORMATION_EX;
1676 typedef struct _RTL_HEAP_DEFINITION {
1677 ULONG Length; /* = sizeof(RTL_HEAP_DEFINITION) */
1679 ULONG Unknown[11];
1680 } RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION;
1682 typedef struct _RTL_RWLOCK {
1683 RTL_CRITICAL_SECTION rtlCS;
1685 HANDLE hSharedReleaseSemaphore;
1686 UINT uSharedWaiters;
1688 HANDLE hExclusiveReleaseSemaphore;
1689 UINT uExclusiveWaiters;
1691 INT iNumberActive;
1692 HANDLE hOwningThreadId;
1693 DWORD dwTimeoutBoost;
1694 PVOID pDebugInfo;
1695 } RTL_RWLOCK, *LPRTL_RWLOCK;
1697 /* System Information Class 0x00 */
1699 typedef struct _SYSTEM_BASIC_INFORMATION {
1700 #ifdef __WINESRC__
1701 DWORD unknown;
1702 ULONG KeMaximumIncrement;
1703 ULONG PageSize;
1704 ULONG MmNumberOfPhysicalPages;
1705 ULONG MmLowestPhysicalPage;
1706 ULONG MmHighestPhysicalPage;
1707 ULONG_PTR AllocationGranularity;
1708 PVOID LowestUserAddress;
1709 PVOID HighestUserAddress;
1710 ULONG_PTR ActiveProcessorsAffinityMask;
1711 BYTE NumberOfProcessors;
1712 #else
1713 BYTE Reserved1[24];
1714 PVOID Reserved2[4];
1715 CCHAR NumberOfProcessors;
1716 #endif
1717 } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
1719 /* System Information Class 0x01 */
1721 typedef struct _SYSTEM_CPU_INFORMATION {
1722 WORD Architecture;
1723 WORD Level;
1724 WORD Revision; /* combination of CPU model and stepping */
1725 WORD Reserved; /* always zero */
1726 DWORD FeatureSet; /* see bit flags below */
1727 } SYSTEM_CPU_INFORMATION, *PSYSTEM_CPU_INFORMATION;
1729 /* definitions of bits in the Feature set for the x86 processors */
1730 #define CPU_FEATURE_VME 0x00000005 /* Virtual 86 Mode Extensions */
1731 #define CPU_FEATURE_TSC 0x00000002 /* Time Stamp Counter available */
1732 #define CPU_FEATURE_CMOV 0x00000008 /* Conditional Move instruction*/
1733 #define CPU_FEATURE_PGE 0x00000014 /* Page table Entry Global bit */
1734 #define CPU_FEATURE_PSE 0x00000024 /* Page Size Extension */
1735 #define CPU_FEATURE_MTRR 0x00000040 /* Memory Type Range Registers */
1736 #define CPU_FEATURE_CX8 0x00000080 /* Compare and eXchange 8 byte instr. */
1737 #define CPU_FEATURE_MMX 0x00000100 /* Multi Media eXtensions */
1738 #define CPU_FEATURE_X86 0x00000200 /* seems to be always ON, on the '86 */
1739 #define CPU_FEATURE_PAT 0x00000400 /* Page Attribute Table */
1740 #define CPU_FEATURE_FXSR 0x00000800 /* FXSAVE and FXSTORE instructions */
1741 #define CPU_FEATURE_SEP 0x00001000 /* SYSENTER and SYSEXIT instructions */
1742 #define CPU_FEATURE_SSE 0x00002000 /* SSE extensions (ext. MMX) */
1743 #define CPU_FEATURE_3DNOW 0x00004000 /* 3DNOW instructions available */
1744 #define CPU_FEATURE_SSE2 0x00010000 /* SSE2 extensions (XMMI64) */
1745 #define CPU_FEATURE_DS 0x00020000 /* Debug Store */
1746 #define CPU_FEATURE_HTT 0x00040000 /* Hyper Threading Technology */
1747 #define CPU_FEATURE_SSE3 0x00080000 /* SSE3 extensions */
1748 #define CPU_FEATURE_CX128 0x00100000 /* cmpxchg16b instruction */
1749 #define CPU_FEATURE_XSAVE 0x00800000 /* XSAVE instructions */
1750 #define CPU_FEATURE_2NDLEV 0x04000000 /* Second-level address translation */
1751 #define CPU_FEATURE_VIRT 0x08000000 /* Virtualization support */
1752 #define CPU_FEATURE_RDFS 0x10000000 /* RDFSBASE etc. instructions */
1753 #define CPU_FEATURE_NX 0x20000000 /* Data execution prevention */
1755 /* FIXME: following values are made up, actual flags are unknown */
1756 #define CPU_FEATURE_SSSE3 0x00008000 /* SSSE3 instructions */
1757 #define CPU_FEATURE_SSE41 0x01000000 /* SSE41 instructions */
1758 #define CPU_FEATURE_SSE42 0x02000000 /* SSE42 instructions */
1759 #define CPU_FEATURE_AVX 0x40000000 /* AVX instructions */
1760 #define CPU_FEATURE_AVX2 0x80000000 /* AVX2 instructions */
1761 #define CPU_FEATURE_PAE 0x00200000
1762 #define CPU_FEATURE_DAZ 0x00400000
1764 #define CPU_FEATURE_ARM_VFP_32 0x00000001
1765 #define CPU_FEATURE_ARM_NEON 0x00000002
1766 #define CPU_FEATURE_ARM_V8_CRC32 0x00000004
1767 #define CPU_FEATURE_ARM_V8_CRYPTO 0x00000008
1769 /* System Information Class 0x02 */
1771 /* Documented in "Windows NT/2000 Native API Reference" by Gary Nebbett. */
1772 typedef struct _SYSTEM_PERFORMANCE_INFORMATION {
1773 LARGE_INTEGER IdleTime;
1774 LARGE_INTEGER ReadTransferCount;
1775 LARGE_INTEGER WriteTransferCount;
1776 LARGE_INTEGER OtherTransferCount;
1777 ULONG ReadOperationCount;
1778 ULONG WriteOperationCount;
1779 ULONG OtherOperationCount;
1780 ULONG AvailablePages;
1781 ULONG TotalCommittedPages;
1782 ULONG TotalCommitLimit;
1783 ULONG PeakCommitment;
1784 ULONG PageFaults;
1785 ULONG WriteCopyFaults;
1786 ULONG TransitionFaults;
1787 ULONG Reserved1;
1788 ULONG DemandZeroFaults;
1789 ULONG PagesRead;
1790 ULONG PageReadIos;
1791 ULONG Reserved2[2];
1792 ULONG PagefilePagesWritten;
1793 ULONG PagefilePageWriteIos;
1794 ULONG MappedFilePagesWritten;
1795 ULONG MappedFilePageWriteIos;
1796 ULONG PagedPoolUsage;
1797 ULONG NonPagedPoolUsage;
1798 ULONG PagedPoolAllocs;
1799 ULONG PagedPoolFrees;
1800 ULONG NonPagedPoolAllocs;
1801 ULONG NonPagedPoolFrees;
1802 ULONG TotalFreeSystemPtes;
1803 ULONG SystemCodePage;
1804 ULONG TotalSystemDriverPages;
1805 ULONG TotalSystemCodePages;
1806 ULONG SmallNonPagedLookasideListAllocateHits;
1807 ULONG SmallPagedLookasideListAllocateHits;
1808 ULONG Reserved3;
1809 ULONG MmSystemCachePage;
1810 ULONG PagedPoolPage;
1811 ULONG SystemDriverPage;
1812 ULONG FastReadNoWait;
1813 ULONG FastReadWait;
1814 ULONG FastReadResourceMiss;
1815 ULONG FastReadNotPossible;
1816 ULONG FastMdlReadNoWait;
1817 ULONG FastMdlReadWait;
1818 ULONG FastMdlReadResourceMiss;
1819 ULONG FastMdlReadNotPossible;
1820 ULONG MapDataNoWait;
1821 ULONG MapDataWait;
1822 ULONG MapDataNoWaitMiss;
1823 ULONG MapDataWaitMiss;
1824 ULONG PinMappedDataCount;
1825 ULONG PinReadNoWait;
1826 ULONG PinReadWait;
1827 ULONG PinReadNoWaitMiss;
1828 ULONG PinReadWaitMiss;
1829 ULONG CopyReadNoWait;
1830 ULONG CopyReadWait;
1831 ULONG CopyReadNoWaitMiss;
1832 ULONG CopyReadWaitMiss;
1833 ULONG MdlReadNoWait;
1834 ULONG MdlReadWait;
1835 ULONG MdlReadNoWaitMiss;
1836 ULONG MdlReadWaitMiss;
1837 ULONG ReadAheadIos;
1838 ULONG LazyWriteIos;
1839 ULONG LazyWritePages;
1840 ULONG DataFlushes;
1841 ULONG DataPages;
1842 ULONG ContextSwitches;
1843 ULONG FirstLevelTbFills;
1844 ULONG SecondLevelTbFills;
1845 ULONG SystemCalls;
1846 } SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
1848 /* System Information Class 0x03 */
1850 typedef struct _SYSTEM_TIMEOFDAY_INFORMATION {
1851 #ifdef __WINESRC__
1852 LARGE_INTEGER BootTime;
1853 LARGE_INTEGER SystemTime;
1854 LARGE_INTEGER TimeZoneBias;
1855 ULONG TimeZoneId;
1856 ULONG Reserved;
1857 ULONGLONG BootTimeBias;
1858 ULONGLONG SleepTimeBias;
1859 #else
1860 BYTE Reserved1[48];
1861 #endif
1862 } SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION; /* was SYSTEM_TIME_INFORMATION */
1864 /* System Information Class 0x08 */
1866 typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION {
1867 LARGE_INTEGER IdleTime;
1868 LARGE_INTEGER KernelTime;
1869 LARGE_INTEGER UserTime;
1870 LARGE_INTEGER Reserved1[2];
1871 ULONG Reserved2;
1872 } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
1874 /* System Information Class 0x0b */
1876 typedef struct _SYSTEM_DRIVER_INFORMATION {
1877 PVOID pvAddress;
1878 DWORD dwUnknown1;
1879 DWORD dwUnknown2;
1880 DWORD dwEntryIndex;
1881 DWORD dwUnknown3;
1882 char szName[MAX_PATH + 1];
1883 } SYSTEM_DRIVER_INFORMATION, *PSYSTEM_DRIVER_INFORMATION;
1885 /* System Information Class 0x10 */
1887 typedef struct _SYSTEM_HANDLE_ENTRY {
1888 ULONG OwnerPid;
1889 BYTE ObjectType;
1890 BYTE HandleFlags;
1891 USHORT HandleValue;
1892 PVOID ObjectPointer;
1893 ULONG AccessMask;
1894 } SYSTEM_HANDLE_ENTRY, *PSYSTEM_HANDLE_ENTRY;
1896 typedef struct _SYSTEM_HANDLE_INFORMATION {
1897 ULONG Count;
1898 SYSTEM_HANDLE_ENTRY Handle[1];
1899 } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
1901 typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX
1903 void *Object;
1904 ULONG_PTR UniqueProcessId;
1905 ULONG_PTR HandleValue;
1906 ULONG GrantedAccess;
1907 USHORT CreatorBackTraceIndex;
1908 USHORT ObjectTypeIndex;
1909 ULONG HandleAttributes;
1910 ULONG Reserved;
1911 } SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX;
1913 typedef struct _SYSTEM_HANDLE_INFORMATION_EX
1915 ULONG_PTR NumberOfHandles;
1916 ULONG_PTR Reserved;
1917 SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX Handles[1];
1918 } SYSTEM_HANDLE_INFORMATION_EX;
1920 /* System Information Class 0x15 */
1922 typedef struct _SYSTEM_CACHE_INFORMATION {
1923 ULONG CurrentSize;
1924 ULONG PeakSize;
1925 ULONG PageFaultCount;
1926 ULONG MinimumWorkingSet;
1927 ULONG MaximumWorkingSet;
1928 ULONG unused[4];
1929 #ifdef _WIN64
1930 ULONG unknown64[7];
1931 #endif
1932 } SYSTEM_CACHE_INFORMATION, *PSYSTEM_CACHE_INFORMATION;
1934 /* System Information Class 0x17 */
1936 typedef struct _SYSTEM_INTERRUPT_INFORMATION {
1937 BYTE Reserved1[24];
1938 } SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION;
1940 typedef struct _SYSTEM_CONFIGURATION_INFO {
1941 union {
1942 ULONG OemId;
1943 struct {
1944 WORD ProcessorArchitecture;
1945 WORD Reserved;
1946 } tag1;
1947 } tag2;
1948 ULONG PageSize;
1949 PVOID MinimumApplicationAddress;
1950 PVOID MaximumApplicationAddress;
1951 ULONG ActiveProcessorMask;
1952 ULONG NumberOfProcessors;
1953 ULONG ProcessorType;
1954 ULONG AllocationGranularity;
1955 WORD ProcessorLevel;
1956 WORD ProcessorRevision;
1957 } SYSTEM_CONFIGURATION_INFO, *PSYSTEM_CONFIGURATION_INFO;
1959 typedef struct _SYSTEM_EXCEPTION_INFORMATION {
1960 BYTE Reserved1[16];
1961 } SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION;
1963 typedef struct _SYSTEM_LOOKASIDE_INFORMATION {
1964 BYTE Reserved1[32];
1965 } SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION;
1967 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION {
1968 BOOLEAN DebuggerEnabled;
1969 BOOLEAN DebuggerNotPresent;
1970 } SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION;
1972 typedef struct _VM_COUNTERS
1974 SIZE_T PeakVirtualSize;
1975 SIZE_T VirtualSize;
1976 ULONG PageFaultCount;
1977 SIZE_T PeakWorkingSetSize;
1978 SIZE_T WorkingSetSize;
1979 SIZE_T QuotaPeakPagedPoolUsage;
1980 SIZE_T QuotaPagedPoolUsage;
1981 SIZE_T QuotaPeakNonPagedPoolUsage;
1982 SIZE_T QuotaNonPagedPoolUsage;
1983 SIZE_T PagefileUsage;
1984 SIZE_T PeakPagefileUsage;
1985 } VM_COUNTERS, *PVM_COUNTERS;
1987 typedef struct _VM_COUNTERS_EX
1989 SIZE_T PeakVirtualSize;
1990 SIZE_T VirtualSize;
1991 ULONG PageFaultCount;
1992 SIZE_T PeakWorkingSetSize;
1993 SIZE_T WorkingSetSize;
1994 SIZE_T QuotaPeakPagedPoolUsage;
1995 SIZE_T QuotaPagedPoolUsage;
1996 SIZE_T QuotaPeakNonPagedPoolUsage;
1997 SIZE_T QuotaNonPagedPoolUsage;
1998 SIZE_T PagefileUsage;
1999 SIZE_T PeakPagefileUsage;
2000 SIZE_T PrivateUsage;
2001 } VM_COUNTERS_EX, *PVM_COUNTERS_EX;
2003 typedef struct _SYSTEM_PROCESS_INFORMATION {
2004 #ifdef __WINESRC__ /* win32/win64 */
2005 ULONG NextEntryOffset; /* 00/00 */
2006 DWORD dwThreadCount; /* 04/04 */
2007 DWORD dwUnknown1[6]; /* 08/08 */
2008 LARGE_INTEGER CreationTime; /* 20/20 */
2009 LARGE_INTEGER UserTime; /* 28/28 */
2010 LARGE_INTEGER KernelTime; /* 30/30 */
2011 UNICODE_STRING ProcessName; /* 38/38 */
2012 DWORD dwBasePriority; /* 40/48 */
2013 HANDLE UniqueProcessId; /* 44/50 */
2014 HANDLE ParentProcessId; /* 48/58 */
2015 ULONG HandleCount; /* 4c/60 */
2016 ULONG SessionId; /* 50/64 */
2017 DWORD dwUnknown4; /* 54/68 */
2018 VM_COUNTERS_EX vmCounters; /* 58/70 */
2019 IO_COUNTERS ioCounters; /* 88/d0 */
2020 SYSTEM_THREAD_INFORMATION ti[1]; /* b8/100 */
2021 #else
2022 ULONG NextEntryOffset; /* 00/00 */
2023 BYTE Reserved1[52]; /* 04/04 */
2024 PVOID Reserved2[3]; /* 38/38 */
2025 HANDLE UniqueProcessId; /* 44/50 */
2026 PVOID Reserved3; /* 48/58 */
2027 ULONG HandleCount; /* 4c/60 */
2028 BYTE Reserved4[4]; /* 50/64 */
2029 PVOID Reserved5[11]; /* 54/68 */
2030 SIZE_T PeakPagefileUsage; /* 80/c0 */
2031 SIZE_T PrivatePageCount; /* 84/c8 */
2032 LARGE_INTEGER Reserved6[6]; /* 88/d0 */
2033 #endif
2034 } SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
2036 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION {
2037 ULONG RegistryQuotaAllowed;
2038 ULONG RegistryQuotaUsed;
2039 PVOID Reserved1;
2040 } SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION;
2042 typedef struct _SYSTEM_TIME_ADJUSTMENT_QUERY {
2043 ULONG TimeAdjustment;
2044 ULONG TimeIncrement;
2045 BOOLEAN TimeAdjustmentDisabled;
2046 } SYSTEM_TIME_ADJUSTMENT_QUERY, *PSYSTEM_TIME_ADJUSTMENT_QUERY;
2048 typedef struct _SYSTEM_TIME_ADJUSTMENT {
2049 ULONG TimeAdjustment;
2050 BOOLEAN TimeAdjustmentDisabled;
2051 } SYSTEM_TIME_ADJUSTMENT, *PSYSTEM_TIME_ADJUSTMENT;
2053 typedef enum _SYSTEM_FIRMWARE_TABLE_ACTION
2055 SystemFirmwareTable_Enumerate = 0,
2056 SystemFirmwareTable_Get = 1
2057 } SYSTEM_FIRMWARE_TABLE_ACTION, *PSYSTEM_FIRMWARE_TABLE_ACTION;
2059 /* System Information Class 0x4C */
2061 typedef struct _SYSTEM_FIRMWARE_TABLE_INFORMATION
2063 ULONG ProviderSignature;
2064 SYSTEM_FIRMWARE_TABLE_ACTION Action;
2065 ULONG TableID;
2066 ULONG TableBufferLength;
2067 UCHAR TableBuffer[1];
2068 } SYSTEM_FIRMWARE_TABLE_INFORMATION, *PSYSTEM_FIRMWARE_TABLE_INFORMATION;
2070 typedef struct _TIME_FIELDS
2071 { CSHORT Year;
2072 CSHORT Month;
2073 CSHORT Day;
2074 CSHORT Hour;
2075 CSHORT Minute;
2076 CSHORT Second;
2077 CSHORT Milliseconds;
2078 CSHORT Weekday;
2079 } TIME_FIELDS, *PTIME_FIELDS;
2081 typedef struct _WINSTATIONINFORMATIONW {
2082 BYTE Reserved2[70];
2083 ULONG LogonId;
2084 BYTE Reserved3[1140];
2085 } WINSTATIONINFORMATIONW, *PWINSTATIONINFORMATIONW;
2087 typedef BOOLEAN (WINAPI * PWINSTATIONQUERYINFORMATIONW)(HANDLE,ULONG,WINSTATIONINFOCLASS,PVOID,ULONG,PULONG);
2089 typedef struct _LDR_RESOURCE_INFO
2091 ULONG_PTR Type;
2092 ULONG_PTR Name;
2093 ULONG Language;
2094 } LDR_RESOURCE_INFO, *PLDR_RESOURCE_INFO;
2097 /* debug buffer definitions */
2099 typedef struct _DEBUG_BUFFER {
2100 HANDLE SectionHandle;
2101 PVOID SectionBase;
2102 PVOID RemoteSectionBase;
2103 ULONG SectionBaseDelta;
2104 HANDLE EventPairHandle;
2105 ULONG Unknown[2];
2106 HANDLE RemoteThreadHandle;
2107 ULONG InfoClassMask;
2108 ULONG SizeOfInfo;
2109 ULONG AllocatedSize;
2110 ULONG SectionSize;
2111 PVOID ModuleInformation;
2112 PVOID BackTraceInformation;
2113 PVOID HeapInformation;
2114 PVOID LockInformation;
2115 PVOID Reserved[8];
2116 } DEBUG_BUFFER, *PDEBUG_BUFFER;
2118 #define PDI_MODULES 0x01
2119 #define PDI_BACKTRACE 0x02
2120 #define PDI_HEAPS 0x04
2121 #define PDI_HEAP_TAGS 0x08
2122 #define PDI_HEAP_BLOCKS 0x10
2123 #define PDI_LOCKS 0x20
2125 typedef struct _DEBUG_MODULE_INFORMATION {
2126 ULONG Reserved[2];
2127 ULONG Base;
2128 ULONG Size;
2129 ULONG Flags;
2130 USHORT Index;
2131 USHORT Unknown;
2132 USHORT LoadCount;
2133 USHORT ModuleNameOffset;
2134 CHAR ImageName[256];
2135 } DEBUG_MODULE_INFORMATION, *PDEBUG_MODULE_INFORMATION;
2137 typedef struct _DEBUG_HEAP_INFORMATION {
2138 ULONG Base;
2139 ULONG Flags;
2140 USHORT Granularity;
2141 USHORT Unknown;
2142 ULONG Allocated;
2143 ULONG Committed;
2144 ULONG TagCount;
2145 ULONG BlockCount;
2146 ULONG Reserved[7];
2147 PVOID Tags;
2148 PVOID Blocks;
2149 } DEBUG_HEAP_INFORMATION, *PDEBUG_HEAP_INFORMATION;
2151 typedef struct _DEBUG_LOCK_INFORMATION {
2152 PVOID Address;
2153 USHORT Type;
2154 USHORT CreatorBackTraceIndex;
2155 ULONG OwnerThreadId;
2156 ULONG ActiveCount;
2157 ULONG ContentionCount;
2158 ULONG EntryCount;
2159 ULONG RecursionCount;
2160 ULONG NumberOfSharedWaiters;
2161 ULONG NumberOfExclusiveWaiters;
2162 } DEBUG_LOCK_INFORMATION, *PDEBUG_LOCK_INFORMATION;
2164 typedef struct _PORT_MESSAGE_HEADER {
2165 USHORT DataSize;
2166 USHORT MessageSize;
2167 USHORT MessageType;
2168 USHORT VirtualRangesOffset;
2169 CLIENT_ID ClientId;
2170 ULONG MessageId;
2171 ULONG SectionSize;
2172 } PORT_MESSAGE_HEADER, *PPORT_MESSAGE_HEADER, PORT_MESSAGE, *PPORT_MESSAGE;
2174 typedef unsigned short RTL_ATOM, *PRTL_ATOM;
2176 typedef enum _ATOM_INFORMATION_CLASS {
2177 AtomBasicInformation = 0,
2178 AtomTableInformation = 1,
2179 } ATOM_INFORMATION_CLASS;
2181 typedef struct _ATOM_BASIC_INFORMATION {
2182 USHORT ReferenceCount;
2183 USHORT Pinned;
2184 USHORT NameLength;
2185 WCHAR Name[1];
2186 } ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION;
2188 /* FIXME: names probably not correct */
2189 typedef struct _RTL_HANDLE
2191 struct _RTL_HANDLE * Next;
2192 } RTL_HANDLE;
2194 /* FIXME: names probably not correct */
2195 typedef struct _RTL_HANDLE_TABLE
2197 ULONG MaxHandleCount; /* 0x00 */
2198 ULONG HandleSize; /* 0x04 */
2199 ULONG Unused[2]; /* 0x08-0x0c */
2200 PVOID NextFree; /* 0x10 */
2201 PVOID FirstHandle; /* 0x14 */
2202 PVOID ReservedMemory; /* 0x18 */
2203 PVOID MaxHandle; /* 0x1c */
2204 } RTL_HANDLE_TABLE;
2206 typedef struct _RTL_ATOM_TABLE_ENTRY
2208 struct _RTL_ATOM_TABLE_ENTRY *HashLink;
2209 WORD HandleIndex;
2210 WORD Atom;
2211 WORD ReferenceCount;
2212 UCHAR Flags;
2213 UCHAR NameLength;
2214 WCHAR Name[1];
2215 } RTL_ATOM_TABLE_ENTRY, *PRTL_ATOM_TABLE_ENTRY;
2217 typedef struct _RTL_ATOM_TABLE
2219 ULONG Signature;
2220 RTL_CRITICAL_SECTION CriticalSection;
2221 RTL_HANDLE_TABLE HandleTable;
2222 ULONG NumberOfBuckets;
2223 RTL_ATOM_TABLE_ENTRY *Buckets[1];
2224 } *RTL_ATOM_TABLE, **PRTL_ATOM_TABLE;
2226 /***********************************************************************
2227 * Defines
2230 /* flags for NtCreateFile and NtOpenFile */
2231 #define FILE_DIRECTORY_FILE 0x00000001
2232 #define FILE_WRITE_THROUGH 0x00000002
2233 #define FILE_SEQUENTIAL_ONLY 0x00000004
2234 #define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
2235 #define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
2236 #define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
2237 #define FILE_NON_DIRECTORY_FILE 0x00000040
2238 #define FILE_CREATE_TREE_CONNECTION 0x00000080
2239 #define FILE_COMPLETE_IF_OPLOCKED 0x00000100
2240 #define FILE_NO_EA_KNOWLEDGE 0x00000200
2241 #define FILE_OPEN_FOR_RECOVERY 0x00000400
2242 #define FILE_RANDOM_ACCESS 0x00000800
2243 #define FILE_DELETE_ON_CLOSE 0x00001000
2244 #define FILE_OPEN_BY_FILE_ID 0x00002000
2245 #define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
2246 #define FILE_NO_COMPRESSION 0x00008000
2247 #define FILE_RESERVE_OPFILTER 0x00100000
2248 #define FILE_OPEN_REPARSE_POINT 0x00200000
2249 #define FILE_OPEN_OFFLINE_FILE 0x00400000
2250 #define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000
2252 #define FILE_ATTRIBUTE_VALID_FLAGS 0x00007fb7
2253 #define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7
2255 /* status for NtCreateFile or NtOpenFile */
2256 #define FILE_SUPERSEDED 0
2257 #define FILE_OPENED 1
2258 #define FILE_CREATED 2
2259 #define FILE_OVERWRITTEN 3
2260 #define FILE_EXISTS 4
2261 #define FILE_DOES_NOT_EXIST 5
2263 /* disposition for NtCreateFile */
2264 #define FILE_SUPERSEDE 0
2265 #define FILE_OPEN 1
2266 #define FILE_CREATE 2
2267 #define FILE_OPEN_IF 3
2268 #define FILE_OVERWRITE 4
2269 #define FILE_OVERWRITE_IF 5
2270 #define FILE_MAXIMUM_DISPOSITION 5
2272 /* Characteristics of a File System */
2273 #define FILE_REMOVABLE_MEDIA 0x00000001
2274 #define FILE_READ_ONLY_DEVICE 0x00000002
2275 #define FILE_FLOPPY_DISKETTE 0x00000004
2276 #define FILE_WRITE_ONE_MEDIA 0x00000008
2277 #define FILE_REMOTE_DEVICE 0x00000010
2278 #define FILE_DEVICE_IS_MOUNTED 0x00000020
2279 #define FILE_VIRTUAL_VOLUME 0x00000040
2280 #define FILE_AUTOGENERATED_DEVICE_NAME 0x00000080
2281 #define FILE_DEVICE_SECURE_OPEN 0x00000100
2282 #define FILE_CHARACTERISTIC_PNP_DEVICE 0x00000800
2283 #define FILE_CHARACTERISTIC_TS_DEVICE 0x00001000
2284 #define FILE_CHARACTERISTIC_WEBDAV_DEVICE 0x00002000
2285 #define FILE_CHARACTERISTIC_CSV 0x00010000
2286 #define FILE_DEVICE_ALLOW_APPCONTAINER_TRAVERSAL 0x00020000
2287 #define FILE_PORTABLE_DEVICE 0x00040000
2289 /* options for NtCreateNamedPipeFile */
2290 #define FILE_PIPE_INBOUND 0x00000000
2291 #define FILE_PIPE_OUTBOUND 0x00000001
2292 #define FILE_PIPE_FULL_DUPLEX 0x00000002
2294 /* options for pipe's type */
2295 #define FILE_PIPE_TYPE_MESSAGE 0x00000001
2296 #define FILE_PIPE_TYPE_BYTE 0x00000000
2297 /* options for pipe's message mode */
2298 #define FILE_PIPE_MESSAGE_MODE 0x00000001
2299 #define FILE_PIPE_BYTE_STREAM_MODE 0x00000000
2300 /* options for pipe's blocking mode */
2301 #define FILE_PIPE_COMPLETE_OPERATION 0x00000001
2302 #define FILE_PIPE_QUEUE_OPERATION 0x00000000
2303 /* and client / server end */
2304 #define FILE_PIPE_SERVER_END 0x00000001
2305 #define FILE_PIPE_CLIENT_END 0x00000000
2307 #define INTERNAL_TS_ACTIVE_CONSOLE_ID ( *((volatile ULONG*)(0x7ffe02d8)) )
2309 #define LOGONID_CURRENT ((ULONG)-1)
2311 #define OBJ_PROTECT_CLOSE 0x00000001
2312 #define OBJ_INHERIT 0x00000002
2313 #define OBJ_PERMANENT 0x00000010
2314 #define OBJ_EXCLUSIVE 0x00000020
2315 #define OBJ_CASE_INSENSITIVE 0x00000040
2316 #define OBJ_OPENIF 0x00000080
2317 #define OBJ_OPENLINK 0x00000100
2318 #define OBJ_KERNEL_HANDLE 0x00000200
2319 #define OBJ_VALID_ATTRIBUTES 0x000003F2
2321 #define SERVERNAME_CURRENT ((HANDLE)NULL)
2323 typedef void (CALLBACK *PNTAPCFUNC)(ULONG_PTR,ULONG_PTR,ULONG_PTR); /* FIXME: not the right name */
2324 typedef void (CALLBACK *PRTL_THREAD_START_ROUTINE)(LPVOID); /* FIXME: not the right name */
2325 typedef DWORD (CALLBACK *PRTL_WORK_ITEM_ROUTINE)(LPVOID); /* FIXME: not the right name */
2326 typedef void (NTAPI *RTL_WAITORTIMERCALLBACKFUNC)(PVOID,BOOLEAN); /* FIXME: not the right name */
2329 /* DbgPrintEx default levels */
2330 #define DPFLTR_ERROR_LEVEL 0
2331 #define DPFLTR_WARNING_LEVEL 1
2332 #define DPFLTR_TRACE_LEVEL 2
2333 #define DPFLTR_INFO_LEVEL 3
2334 #define DPFLTR_MASK 0x8000000
2336 /* Well-known LUID values */
2337 #define SE_MIN_WELL_KNOWN_PRIVILEGE 2
2338 #define SE_CREATE_TOKEN_PRIVILEGE 2
2339 #define SE_ASSIGNPRIMARYTOKEN_PRIVILEGE 3
2340 #define SE_LOCK_MEMORY_PRIVILEGE 4
2341 #define SE_INCREASE_QUOTA_PRIVILEGE 5
2342 #define SE_UNSOLICITED_INPUT_PRIVILEGE 6 /* obsolete */
2343 #define SE_MACHINE_ACCOUNT_PRIVILEGE 6
2344 #define SE_TCB_PRIVILEGE 7
2345 #define SE_SECURITY_PRIVILEGE 8
2346 #define SE_TAKE_OWNERSHIP_PRIVILEGE 9
2347 #define SE_LOAD_DRIVER_PRIVILEGE 10
2348 #define SE_SYSTEM_PROFILE_PRIVILEGE 11
2349 #define SE_SYSTEMTIME_PRIVILEGE 12
2350 #define SE_PROF_SINGLE_PROCESS_PRIVILEGE 13
2351 #define SE_INC_BASE_PRIORITY_PRIVILEGE 14
2352 #define SE_CREATE_PAGEFILE_PRIVILEGE 15
2353 #define SE_CREATE_PERMANENT_PRIVILEGE 16
2354 #define SE_BACKUP_PRIVILEGE 17
2355 #define SE_RESTORE_PRIVILEGE 18
2356 #define SE_SHUTDOWN_PRIVILEGE 19
2357 #define SE_DEBUG_PRIVILEGE 20
2358 #define SE_AUDIT_PRIVILEGE 21
2359 #define SE_SYSTEM_ENVIRONMENT_PRIVILEGE 22
2360 #define SE_CHANGE_NOTIFY_PRIVILEGE 23
2361 #define SE_REMOTE_SHUTDOWN_PRIVILEGE 24
2362 #define SE_UNDOCK_PRIVILEGE 25
2363 #define SE_SYNC_AGENT_PRIVILEGE 26
2364 #define SE_ENABLE_DELEGATION_PRIVILEGE 27
2365 #define SE_MANAGE_VOLUME_PRIVILEGE 28
2366 #define SE_IMPERSONATE_PRIVILEGE 29
2367 #define SE_CREATE_GLOBAL_PRIVILEGE 30
2368 #define SE_MAX_WELL_KNOWN_PRIVILEGE SE_CREATE_GLOBAL_PRIVILEGE
2370 /* NtGlobalFlag bits */
2371 #define FLG_STOP_ON_EXCEPTION 0x00000001
2372 #define FLG_SHOW_LDR_SNAPS 0x00000002
2373 #define FLG_DEBUG_INITIAL_COMMAND 0x00000004
2374 #define FLG_STOP_ON_HUNG_GUI 0x00000008
2375 #define FLG_HEAP_ENABLE_TAIL_CHECK 0x00000010
2376 #define FLG_HEAP_ENABLE_FREE_CHECK 0x00000020
2377 #define FLG_HEAP_VALIDATE_PARAMETERS 0x00000040
2378 #define FLG_HEAP_VALIDATE_ALL 0x00000080
2379 #define FLG_APPLICATION_VERIFIER 0x00000100
2380 #define FLG_POOL_ENABLE_TAGGING 0x00000400
2381 #define FLG_HEAP_ENABLE_TAGGING 0x00000800
2382 #define FLG_USER_STACK_TRACE_DB 0x00001000
2383 #define FLG_KERNEL_STACK_TRACE_DB 0x00002000
2384 #define FLG_MAINTAIN_OBJECT_TYPELIST 0x00004000
2385 #define FLG_HEAP_ENABLE_TAG_BY_DLL 0x00008000
2386 #define FLG_DISABLE_STACK_EXTENSION 0x00010000
2387 #define FLG_ENABLE_CSRDEBUG 0x00020000
2388 #define FLG_ENABLE_KDEBUG_SYMBOL_LOAD 0x00040000
2389 #define FLG_DISABLE_PAGE_KERNEL_STACKS 0x00080000
2390 #define FLG_ENABLE_SYSTEM_CRIT_BREAKS 0x00100000
2391 #define FLG_HEAP_DISABLE_COALESCING 0x00200000
2392 #define FLG_ENABLE_CLOSE_EXCEPTIONS 0x00400000
2393 #define FLG_ENABLE_EXCEPTION_LOGGING 0x00800000
2394 #define FLG_ENABLE_HANDLE_TYPE_TAGGING 0x01000000
2395 #define FLG_HEAP_PAGE_ALLOCS 0x02000000
2396 #define FLG_DEBUG_INITIAL_COMMAND_EX 0x04000000
2397 #define FLG_DISABLE_DBGPRINT 0x08000000
2398 #define FLG_CRITSEC_EVENT_CREATION 0x10000000
2399 #define FLG_LDR_TOP_DOWN 0x20000000
2400 #define FLG_ENABLE_HANDLE_EXCEPTIONS 0x40000000
2401 #define FLG_DISABLE_PROTDLLS 0x80000000
2403 /* Rtl*Registry* functions structs and defines */
2404 #define RTL_REGISTRY_ABSOLUTE 0
2405 #define RTL_REGISTRY_SERVICES 1
2406 #define RTL_REGISTRY_CONTROL 2
2407 #define RTL_REGISTRY_WINDOWS_NT 3
2408 #define RTL_REGISTRY_DEVICEMAP 4
2409 #define RTL_REGISTRY_USER 5
2411 #define RTL_REGISTRY_HANDLE 0x40000000
2412 #define RTL_REGISTRY_OPTIONAL 0x80000000
2414 #define RTL_QUERY_REGISTRY_SUBKEY 0x00000001
2415 #define RTL_QUERY_REGISTRY_TOPKEY 0x00000002
2416 #define RTL_QUERY_REGISTRY_REQUIRED 0x00000004
2417 #define RTL_QUERY_REGISTRY_NOVALUE 0x00000008
2418 #define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010
2419 #define RTL_QUERY_REGISTRY_DIRECT 0x00000020
2420 #define RTL_QUERY_REGISTRY_DELETE 0x00000040
2421 #define RTL_QUERY_REGISTRY_TYPECHECK 0x00000100
2423 #define RTL_QUERY_REGISTRY_TYPECHECK_SHIFT 24
2425 typedef NTSTATUS (WINAPI *PRTL_QUERY_REGISTRY_ROUTINE)( PCWSTR ValueName,
2426 ULONG ValueType,
2427 PVOID ValueData,
2428 ULONG ValueLength,
2429 PVOID Context,
2430 PVOID EntryContext);
2432 typedef struct _RTL_QUERY_REGISTRY_TABLE
2434 PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;
2435 ULONG Flags;
2436 PWSTR Name;
2437 PVOID EntryContext;
2438 ULONG DefaultType;
2439 PVOID DefaultData;
2440 ULONG DefaultLength;
2441 } RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
2443 typedef struct _KEY_MULTIPLE_VALUE_INFORMATION
2445 PUNICODE_STRING ValueName;
2446 ULONG DataLength;
2447 ULONG DataOffset;
2448 ULONG Type;
2449 } KEY_MULTIPLE_VALUE_INFORMATION, *PKEY_MULTIPLE_VALUE_INFORMATION;
2451 typedef VOID (CALLBACK *PRTL_OVERLAPPED_COMPLETION_ROUTINE)(DWORD,DWORD,LPVOID);
2453 typedef VOID (CALLBACK *PTIMER_APC_ROUTINE) ( PVOID, ULONG, LONG );
2455 typedef enum _EVENT_INFORMATION_CLASS {
2456 EventBasicInformation
2457 } EVENT_INFORMATION_CLASS, *PEVENT_INFORMATION_CLASS;
2459 typedef struct _EVENT_BASIC_INFORMATION {
2460 EVENT_TYPE EventType;
2461 LONG EventState;
2462 } EVENT_BASIC_INFORMATION, *PEVENT_BASIC_INFORMATION;
2464 typedef enum _SEMAPHORE_INFORMATION_CLASS {
2465 SemaphoreBasicInformation
2466 } SEMAPHORE_INFORMATION_CLASS, *PSEMAPHORE_INFORMATION_CLASS;
2468 typedef struct _SEMAPHORE_BASIC_INFORMATION {
2469 ULONG CurrentCount;
2470 ULONG MaximumCount;
2471 } SEMAPHORE_BASIC_INFORMATION, *PSEMAPHORE_BASIC_INFORMATION;
2473 typedef enum _SECTION_INFORMATION_CLASS
2475 SectionBasicInformation,
2476 SectionImageInformation,
2477 SectionRelocationInformation,
2478 SectionOriginalBaseInformation,
2479 SectionInternalImageInformation
2480 } SECTION_INFORMATION_CLASS;
2482 typedef struct _SECTION_BASIC_INFORMATION {
2483 PVOID BaseAddress;
2484 ULONG Attributes;
2485 LARGE_INTEGER Size;
2486 } SECTION_BASIC_INFORMATION, *PSECTION_BASIC_INFORMATION;
2488 typedef struct _SECTION_IMAGE_INFORMATION {
2489 PVOID TransferAddress;
2490 ULONG ZeroBits;
2491 SIZE_T MaximumStackSize;
2492 SIZE_T CommittedStackSize;
2493 ULONG SubSystemType;
2494 USHORT MinorSubsystemVersion;
2495 USHORT MajorSubsystemVersion;
2496 USHORT MajorOperatingSystemVersion;
2497 USHORT MinorOperatingSystemVersion;
2498 USHORT ImageCharacteristics;
2499 USHORT DllCharacteristics;
2500 USHORT Machine;
2501 BOOLEAN ImageContainsCode;
2502 union
2504 UCHAR ImageFlags;
2505 struct
2507 UCHAR ComPlusNativeReady : 1;
2508 UCHAR ComPlusILOnly : 1;
2509 UCHAR ImageDynamicallyRelocated : 1;
2510 UCHAR ImageMappedFlat : 1;
2511 UCHAR BaseBelow4gb : 1;
2512 UCHAR ComPlusPrefer32bit : 1;
2513 #ifdef __WINESRC__ /* Wine extensions */
2514 UCHAR WineBuiltin : 1;
2515 UCHAR WineFakeDll : 1;
2516 #else
2517 UCHAR Reserved : 2;
2518 #endif
2519 } DUMMYSTRUCTNAME;
2520 } DUMMYUNIONNAME;
2521 ULONG LoaderFlags;
2522 ULONG ImageFileSize;
2523 ULONG CheckSum;
2524 } SECTION_IMAGE_INFORMATION, *PSECTION_IMAGE_INFORMATION;
2526 typedef struct _LPC_SECTION_WRITE {
2527 ULONG Length;
2528 HANDLE SectionHandle;
2529 ULONG SectionOffset;
2530 ULONG ViewSize;
2531 PVOID ViewBase;
2532 PVOID TargetViewBase;
2533 } LPC_SECTION_WRITE, *PLPC_SECTION_WRITE;
2535 typedef struct _LPC_SECTION_READ {
2536 ULONG Length;
2537 ULONG ViewSize;
2538 PVOID ViewBase;
2539 } LPC_SECTION_READ, *PLPC_SECTION_READ;
2541 typedef struct _LPC_MESSAGE {
2542 USHORT DataSize;
2543 USHORT MessageSize;
2544 USHORT MessageType;
2545 USHORT VirtualRangesOffset;
2546 CLIENT_ID ClientId;
2547 ULONG_PTR MessageId;
2548 ULONG_PTR SectionSize;
2549 UCHAR Data[ANYSIZE_ARRAY];
2550 } LPC_MESSAGE, *PLPC_MESSAGE;
2552 typedef struct _RTL_USER_PROCESS_INFORMATION
2554 ULONG Length;
2555 HANDLE Process;
2556 HANDLE Thread;
2557 CLIENT_ID ClientId;
2558 SECTION_IMAGE_INFORMATION ImageInformation;
2559 } RTL_USER_PROCESS_INFORMATION, *PRTL_USER_PROCESS_INFORMATION;
2561 typedef enum _SHUTDOWN_ACTION {
2562 ShutdownNoReboot,
2563 ShutdownReboot,
2564 ShutdownPowerOff
2565 } SHUTDOWN_ACTION, *PSHUTDOWN_ACTION;
2567 typedef struct _COUNTED_REASON_CONTEXT
2569 ULONG Version;
2570 ULONG Flags;
2571 union
2573 struct
2575 UNICODE_STRING ResourceFileName;
2576 USHORT ResourceReasonId;
2577 ULONG StringCount;
2578 UNICODE_STRING *ReasonStrings;
2579 } DUMMYSTRUCTNAME;
2580 UNICODE_STRING SimpleString;
2581 } DUMMYUNIONNAME;
2582 } COUNTED_REASON_CONTEXT, *PCOUNTED_REASON_CONTEXT;
2584 typedef enum _KPROFILE_SOURCE {
2585 ProfileTime,
2586 ProfileAlignmentFixup,
2587 ProfileTotalIssues,
2588 ProfilePipelineDry,
2589 ProfileLoadInstructions,
2590 ProfilePipelineFrozen,
2591 ProfileBranchInstructions,
2592 ProfileTotalNonissues,
2593 ProfileDcacheMisses,
2594 ProfileIcacheMisses,
2595 ProfileCacheMisses,
2596 ProfileBranchMispredictions,
2597 ProfileStoreInstructions,
2598 ProfileFpInstructions,
2599 ProfileIntegerInstructions,
2600 Profile2Issue,
2601 Profile3Issue,
2602 Profile4Issue,
2603 ProfileSpecialInstructions,
2604 ProfileTotalCycles,
2605 ProfileIcacheIssues,
2606 ProfileDcacheAccesses,
2607 ProfileMemoryBarrierCycles,
2608 ProfileLoadLinkedIssues,
2609 ProfileMaximum
2610 } KPROFILE_SOURCE, *PKPROFILE_SOURCE;
2612 typedef struct _DIRECTORY_BASIC_INFORMATION {
2613 UNICODE_STRING ObjectName;
2614 UNICODE_STRING ObjectTypeName;
2615 } DIRECTORY_BASIC_INFORMATION, *PDIRECTORY_BASIC_INFORMATION;
2617 typedef struct _INITIAL_TEB {
2618 void *OldStackBase;
2619 void *OldStackLimit;
2620 void *StackBase;
2621 void *StackLimit;
2622 void *DeallocationStack;
2623 } INITIAL_TEB, *PINITIAL_TEB;
2625 typedef enum _PORT_INFORMATION_CLASS {
2626 PortNoInformation
2627 } PORT_INFORMATION_CLASS, *PPORT_INFORMATION_CLASS;
2629 typedef enum _IO_COMPLETION_INFORMATION_CLASS {
2630 IoCompletionBasicInformation
2631 } IO_COMPLETION_INFORMATION_CLASS, *PIO_COMPLETION_INFORMATION_CLASS;
2633 typedef struct _FILE_COMPLETION_INFORMATION {
2634 HANDLE CompletionPort;
2635 ULONG_PTR CompletionKey;
2636 } FILE_COMPLETION_INFORMATION, *PFILE_COMPLETION_INFORMATION;
2638 #define IO_COMPLETION_QUERY_STATE 0x0001
2639 #define IO_COMPLETION_MODIFY_STATE 0x0002
2640 #define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
2642 typedef struct _FILE_IO_COMPLETION_INFORMATION {
2643 ULONG_PTR CompletionKey;
2644 ULONG_PTR CompletionValue;
2645 IO_STATUS_BLOCK IoStatusBlock;
2646 } FILE_IO_COMPLETION_INFORMATION, *PFILE_IO_COMPLETION_INFORMATION;
2648 typedef enum _HARDERROR_RESPONSE_OPTION {
2649 OptionAbortRetryIgnore,
2650 OptionOk,
2651 OptionOkCancel,
2652 OptionRetryCancel,
2653 OptionYesNo,
2654 OptionYesNoCancel,
2655 OptionShutdownSystem
2656 } HARDERROR_RESPONSE_OPTION, *PHARDERROR_RESPONSE_OPTION;
2658 typedef enum _HARDERROR_RESPONSE {
2659 ResponseReturnToCaller,
2660 ResponseNotHandled,
2661 ResponseAbort,
2662 ResponseCancel,
2663 ResponseIgnore,
2664 ResponseNo,
2665 ResponseOk,
2666 ResponseRetry,
2667 ResponseYes
2668 } HARDERROR_RESPONSE, *PHARDERROR_RESPONSE;
2670 typedef enum _SYSDBG_COMMAND {
2671 SysDbgQueryModuleInformation,
2672 SysDbgQueryTraceInformation,
2673 SysDbgSetTracepoint,
2674 SysDbgSetSpecialCall,
2675 SysDbgClearSpecialCalls,
2676 SysDbgQuerySpecialCalls,
2677 SysDbgBreakPoint,
2678 SysDbgQueryVersion,
2679 SysDbgReadVirtual,
2680 SysDbgWriteVirtual,
2681 SysDbgReadPhysical,
2682 SysDbgWritePhysical,
2683 SysDbgReadControlSpace,
2684 SysDbgWriteControlSpace,
2685 SysDbgReadIoSpace,
2686 SysDbgWriteIoSpace,
2687 SysDbgReadMsr,
2688 SysDbgWriteMsr,
2689 SysDbgReadBusData,
2690 SysDbgWriteBusData
2691 } SYSDBG_COMMAND, *PSYSDBG_COMMAND;
2693 typedef struct _CPTABLEINFO
2695 USHORT CodePage;
2696 USHORT MaximumCharacterSize;
2697 USHORT DefaultChar;
2698 USHORT UniDefaultChar;
2699 USHORT TransDefaultChar;
2700 USHORT TransUniDefaultChar;
2701 USHORT DBCSCodePage;
2702 UCHAR LeadByte[12];
2703 USHORT *MultiByteTable;
2704 void *WideCharTable;
2705 USHORT *DBCSRanges;
2706 USHORT *DBCSOffsets;
2707 } CPTABLEINFO, *PCPTABLEINFO;
2709 typedef struct _NLSTABLEINFO
2711 CPTABLEINFO OemTableInfo;
2712 CPTABLEINFO AnsiTableInfo;
2713 USHORT *UpperCaseTable;
2714 USHORT *LowerCaseTable;
2715 } NLSTABLEINFO, *PNLSTABLEINFO;
2717 /*************************************************************************
2718 * Loader structures
2720 * Those are not part of standard Winternl.h
2723 typedef struct _LDR_SERVICE_TAG_RECORD
2725 struct _LDR_SERVICE_TAG_RECORD *Next;
2726 ULONG ServiceTag;
2727 } LDR_SERVICE_TAG_RECORD, *PLDR_SERVICE_TAG_RECORD;
2729 typedef struct _LDRP_CSLIST
2731 SINGLE_LIST_ENTRY *Tail;
2732 } LDRP_CSLIST, *PLDRP_CSLIST;
2734 typedef enum _LDR_DDAG_STATE
2736 LdrModulesMerged = -5,
2737 LdrModulesInitError = -4,
2738 LdrModulesSnapError = -3,
2739 LdrModulesUnloaded = -2,
2740 LdrModulesUnloading = -1,
2741 LdrModulesPlaceHolder = 0,
2742 LdrModulesMapping = 1,
2743 LdrModulesMapped = 2,
2744 LdrModulesWaitingForDependencies = 3,
2745 LdrModulesSnapping = 4,
2746 LdrModulesSnapped = 5,
2747 LdrModulesCondensed = 6,
2748 LdrModulesReadyToInit = 7,
2749 LdrModulesInitializing = 8,
2750 LdrModulesReadyToRun = 9,
2751 } LDR_DDAG_STATE;
2753 typedef struct _LDR_DDAG_NODE
2755 LIST_ENTRY Modules;
2756 LDR_SERVICE_TAG_RECORD *ServiceTagList;
2757 ULONG LoadCount;
2758 ULONG ReferenceCount;
2759 ULONG DependencyCount;
2760 union
2762 LDRP_CSLIST Dependencies;
2763 SINGLE_LIST_ENTRY RemovalLink;
2765 LDRP_CSLIST IncomingDependencies;
2766 LDR_DDAG_STATE State;
2767 SINGLE_LIST_ENTRY CondenseLink;
2768 ULONG PreorderNumber;
2769 ULONG LowestLink;
2770 } LDR_DDAG_NODE, *PLDR_DDAG_NODE;
2772 typedef enum _LDR_DLL_LOAD_REASON
2774 LoadReasonStaticDependency,
2775 LoadReasonStaticForwarderDependency,
2776 LoadReasonDynamicForwarderDependency,
2777 LoadReasonDelayloadDependency,
2778 LoadReasonDynamicLoad,
2779 LoadReasonAsImageLoad,
2780 LoadReasonAsDataLoad,
2781 LoadReasonUnknown = -1
2782 } LDR_DLL_LOAD_REASON, *PLDR_DLL_LOAD_REASON;
2784 typedef struct _LDR_DATA_TABLE_ENTRY
2786 LIST_ENTRY InLoadOrderLinks;
2787 LIST_ENTRY InMemoryOrderLinks;
2788 LIST_ENTRY InInitializationOrderLinks;
2789 void* DllBase;
2790 void* EntryPoint;
2791 ULONG SizeOfImage;
2792 UNICODE_STRING FullDllName;
2793 UNICODE_STRING BaseDllName;
2794 ULONG Flags;
2795 SHORT LoadCount;
2796 SHORT TlsIndex;
2797 HANDLE SectionHandle;
2798 ULONG CheckSum;
2799 ULONG TimeDateStamp;
2800 HANDLE ActivationContext;
2801 void* Lock;
2802 LDR_DDAG_NODE* DdagNode;
2803 LIST_ENTRY NodeModuleLink;
2804 struct _LDRP_LOAD_CONTEXT *LoadContext;
2805 void* ParentDllBase;
2806 void* SwitchBackContext;
2807 RTL_BALANCED_NODE BaseAddressIndexNode;
2808 RTL_BALANCED_NODE MappingInfoIndexNode;
2809 ULONG_PTR OriginalBase;
2810 LARGE_INTEGER LoadTime;
2811 ULONG BaseNameHashValue;
2812 LDR_DLL_LOAD_REASON LoadReason;
2813 ULONG ImplicitPathOptions;
2814 ULONG ReferenceCount;
2815 } LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY;
2817 typedef struct _LDR_DLL_LOADED_NOTIFICATION_DATA
2819 ULONG Flags;
2820 const UNICODE_STRING *FullDllName;
2821 const UNICODE_STRING *BaseDllName;
2822 void *DllBase;
2823 ULONG SizeOfImage;
2824 } LDR_DLL_LOADED_NOTIFICATION_DATA, *PLDR_DLL_LOADED_NOTIFICATION_DATA;
2826 typedef struct _LDR_DLL_UNLOADED_NOTIFICATION_DATA
2828 ULONG Flags;
2829 const UNICODE_STRING *FullDllName;
2830 const UNICODE_STRING *BaseDllName;
2831 void *DllBase;
2832 ULONG SizeOfImage;
2833 } LDR_DLL_UNLOADED_NOTIFICATION_DATA, *PLDR_DLL_UNLOADED_NOTIFICATION_DATA;
2835 typedef union _LDR_DLL_NOTIFICATION_DATA
2837 LDR_DLL_LOADED_NOTIFICATION_DATA Loaded;
2838 LDR_DLL_UNLOADED_NOTIFICATION_DATA Unloaded;
2839 } LDR_DLL_NOTIFICATION_DATA, *PLDR_DLL_NOTIFICATION_DATA;
2841 typedef void (CALLBACK *PLDR_DLL_NOTIFICATION_FUNCTION)(ULONG, LDR_DLL_NOTIFICATION_DATA*, void*);
2843 /* those defines are (some of the) regular LDR_DATA_TABLE_ENTRY.Flags values */
2844 #define LDR_IMAGE_IS_DLL 0x00000004
2845 #define LDR_LOAD_IN_PROGRESS 0x00001000
2846 #define LDR_UNLOAD_IN_PROGRESS 0x00002000
2847 #define LDR_NO_DLL_CALLS 0x00040000
2848 #define LDR_PROCESS_ATTACHED 0x00080000
2849 #define LDR_COR_IMAGE 0x00400000
2850 #define LDR_COR_ILONLY 0x01000000
2852 /* these ones is Wine specific */
2853 #define LDR_DONT_RESOLVE_REFS 0x40000000
2854 #define LDR_WINE_INTERNAL 0x80000000
2856 /* flag for LdrAddRefDll */
2857 #define LDR_ADDREF_DLL_PIN 0x00000001
2859 #define LDR_DLL_NOTIFICATION_REASON_LOADED 1
2860 #define LDR_DLL_NOTIFICATION_REASON_UNLOADED 2
2862 /* FIXME: to be checked */
2863 #define MAXIMUM_FILENAME_LENGTH 256
2865 typedef struct _SYSTEM_MODULE
2867 PVOID Section; /* 00/00 */
2868 PVOID MappedBaseAddress; /* 04/08 */
2869 PVOID ImageBaseAddress; /* 08/10 */
2870 ULONG ImageSize; /* 0c/18 */
2871 ULONG Flags; /* 10/1c */
2872 WORD LoadOrderIndex; /* 14/20 */
2873 WORD InitOrderIndex; /* 16/22 */
2874 WORD LoadCount; /* 18/24 */
2875 WORD NameOffset; /* 1a/26 */
2876 BYTE Name[MAXIMUM_FILENAME_LENGTH]; /* 1c/28 */
2877 } SYSTEM_MODULE, *PSYSTEM_MODULE;
2879 typedef struct _SYSTEM_MODULE_INFORMATION
2881 ULONG ModulesCount;
2882 SYSTEM_MODULE Modules[1]; /* FIXME: should be Modules[0] */
2883 } SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;
2885 #define PROCESS_CREATE_FLAGS_BREAKAWAY 0x00000001
2886 #define PROCESS_CREATE_FLAGS_NO_DEBUG_INHERIT 0x00000002
2887 #define PROCESS_CREATE_FLAGS_INHERIT_HANDLES 0x00000004
2888 #define PROCESS_CREATE_FLAGS_OVERRIDE_ADDRESS_SPACE 0x00000008
2889 #define PROCESS_CREATE_FLAGS_LARGE_PAGES 0x00000010
2890 #define PROCESS_CREATE_FLAGS_LARGE_PAGE_SYSTEM_DLL 0x00000020
2891 #define PROCESS_CREATE_FLAGS_PROTECTED_PROCESS 0x00000040
2892 #define PROCESS_CREATE_FLAGS_CREATE_SESSION 0x00000080
2893 #define PROCESS_CREATE_FLAGS_INHERIT_FROM_PARENT 0x00000100
2894 #define PROCESS_CREATE_FLAGS_SUSPENDED 0x00000200
2895 #define PROCESS_CREATE_FLAGS_EXTENDED_UNKNOWN 0x00000400
2897 typedef struct _RTL_PROCESS_MODULE_INFORMATION_EX
2899 USHORT NextOffset;
2900 SYSTEM_MODULE BaseInfo;
2901 ULONG ImageCheckSum;
2902 ULONG TimeDateStamp;
2903 void *DefaultBase;
2904 } RTL_PROCESS_MODULE_INFORMATION_EX;
2906 #define THREAD_CREATE_FLAGS_CREATE_SUSPENDED 0x00000001
2907 #define THREAD_CREATE_FLAGS_SKIP_THREAD_ATTACH 0x00000002
2908 #define THREAD_CREATE_FLAGS_HIDE_FROM_DEBUGGER 0x00000004
2909 #define THREAD_CREATE_FLAGS_HAS_SECURITY_DESCRIPTOR 0x00000010
2910 #define THREAD_CREATE_FLAGS_ACCESS_CHECK_IN_TARGET 0x00000020
2911 #define THREAD_CREATE_FLAGS_INITIAL_THREAD 0x00000080
2913 typedef LONG (CALLBACK *PRTL_EXCEPTION_FILTER)(PEXCEPTION_POINTERS);
2915 typedef void (CALLBACK *PTP_IO_CALLBACK)(PTP_CALLBACK_INSTANCE,void*,void*,IO_STATUS_BLOCK*,PTP_IO);
2917 #define PS_ATTRIBUTE_THREAD 0x00010000
2918 #define PS_ATTRIBUTE_INPUT 0x00020000
2919 #define PS_ATTRIBUTE_ADDITIVE 0x00040000
2921 typedef enum _PS_ATTRIBUTE_NUM
2923 PsAttributeParentProcess,
2924 PsAttributeDebugPort,
2925 PsAttributeToken,
2926 PsAttributeClientId,
2927 PsAttributeTebAddress,
2928 PsAttributeImageName,
2929 PsAttributeImageInfo,
2930 PsAttributeMemoryReserve,
2931 PsAttributePriorityClass,
2932 PsAttributeErrorMode,
2933 PsAttributeStdHandleInfo,
2934 PsAttributeHandleList,
2935 PsAttributeGroupAffinity,
2936 PsAttributePreferredNode,
2937 PsAttributeIdealProcessor,
2938 PsAttributeUmsThread,
2939 PsAttributeMitigationOptions,
2940 PsAttributeProtectionLevel,
2941 PsAttributeSecureProcess,
2942 PsAttributeJobList,
2943 PsAttributeChildProcessPolicy,
2944 PsAttributeAllApplicationPackagesPolicy,
2945 PsAttributeWin32kFilter,
2946 PsAttributeSafeOpenPromptOriginClaim,
2947 PsAttributeBnoIsolation,
2948 PsAttributeDesktopAppPolicy,
2949 PsAttributeChpe,
2950 PsAttributeMax
2951 } PS_ATTRIBUTE_NUM;
2953 #define PS_ATTRIBUTE_PARENT_PROCESS (PsAttributeParentProcess | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE)
2954 #define PS_ATTRIBUTE_DEBUG_PORT (PsAttributeDebugPort | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE)
2955 #define PS_ATTRIBUTE_TOKEN (PsAttributeToken | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE)
2956 #define PS_ATTRIBUTE_CLIENT_ID (PsAttributeClientId | PS_ATTRIBUTE_THREAD)
2957 #define PS_ATTRIBUTE_TEB_ADDRESS (PsAttributeTebAddress | PS_ATTRIBUTE_THREAD)
2958 #define PS_ATTRIBUTE_IMAGE_NAME (PsAttributeImageName | PS_ATTRIBUTE_INPUT)
2959 #define PS_ATTRIBUTE_IMAGE_INFO (PsAttributeImageInfo)
2960 #define PS_ATTRIBUTE_MEMORY_RESERVE (PsAttributeMemoryReserve | PS_ATTRIBUTE_INPUT)
2961 #define PS_ATTRIBUTE_PRIORITY_CLASS (PsAttributePriorityClass | PS_ATTRIBUTE_INPUT)
2962 #define PS_ATTRIBUTE_ERROR_MODE (PsAttributeErrorMode | PS_ATTRIBUTE_INPUT)
2963 #define PS_ATTRIBUTE_STD_HANDLE_INFO (PsAttributeStdHandleInfo | PS_ATTRIBUTE_INPUT)
2964 #define PS_ATTRIBUTE_HANDLE_LIST (PsAttributeHandleList | PS_ATTRIBUTE_INPUT)
2965 #define PS_ATTRIBUTE_GROUP_AFFINITY (PsAttributeGroupAffinity | PS_ATTRIBUTE_THREAD | PS_ATTRIBUTE_INPUT)
2966 #define PS_ATTRIBUTE_PREFERRED_NODE (PsAttributePreferredNode | PS_ATTRIBUTE_INPUT)
2967 #define PS_ATTRIBUTE_IDEAL_PROCESSOR (PsAttributeIdealProcessor | PS_ATTRIBUTE_THREAD | PS_ATTRIBUTE_INPUT)
2968 #define PS_ATTRIBUTE_MITIGATION_OPTIONS (PsAttributeMitigationOptions | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_UNKNOWN)
2969 #define PS_ATTRIBUTE_PROTECTION_LEVEL (PsAttributeProtectionLevel | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_UNKNOWN)
2970 #define PS_ATTRIBUTE_SECURE_PROCESS (PsAttributeSecureProcess | PS_ATTRIBUTE_INPUT)
2971 #define PS_ATTRIBUTE_JOB_LIST (PsAttributeJobList | PS_ATTRIBUTE_INPUT)
2972 #define PS_ATTRIBUTE_CHILD_PROCESS_POLICY (PsAttributeChildProcessPolicy | PS_ATTRIBUTE_INPUT)
2973 #define PS_ATTRIBUTE_ALL_APPLICATION_PACKAGES_POLICY (PsAttributeAllApplicationPackagesPolicy | PS_ATTRIBUTE_INPUT)
2974 #define PS_ATTRIBUTE_WIN32K_FILTER (PsAttributeWin32kFilter | PS_ATTRIBUTE_INPUT)
2975 #define PS_ATTRIBUTE_SAFE_OPEN_PROMPT_ORIGIN_CLAIM (PsAttributeSafeOpenPromptOriginClaim | PS_ATTRIBUTE_INPUT)
2976 #define PS_ATTRIBUTE_BNO_ISOLATION (PsAttributeBnoIsolation | PS_ATTRIBUTE_INPUT)
2977 #define PS_ATTRIBUTE_DESKTOP_APP_POLICY (PsAttributeDesktopAppPolicy | PS_ATTRIBUTE_INPUT)
2979 typedef struct _PS_ATTRIBUTE
2981 ULONG_PTR Attribute;
2982 SIZE_T Size;
2983 union
2985 ULONG_PTR Value;
2986 void *ValuePtr;
2988 SIZE_T *ReturnLength;
2989 } PS_ATTRIBUTE;
2991 typedef struct _PS_ATTRIBUTE_LIST
2993 SIZE_T TotalLength;
2994 PS_ATTRIBUTE Attributes[1];
2995 } PS_ATTRIBUTE_LIST, *PPS_ATTRIBUTE_LIST;
2997 typedef enum _PS_CREATE_STATE
2999 PsCreateInitialState,
3000 PsCreateFailOnFileOpen,
3001 PsCreateFailOnSectionCreate,
3002 PsCreateFailExeFormat,
3003 PsCreateFailMachineMismatch,
3004 PsCreateFailExeName,
3005 PsCreateSuccess,
3006 PsCreateMaximumStates
3007 } PS_CREATE_STATE;
3009 typedef struct _PS_CREATE_INFO
3011 SIZE_T Size;
3012 PS_CREATE_STATE State;
3013 union
3015 struct
3017 union
3019 ULONG InitFlags;
3020 struct
3022 UCHAR WriteOutputOnExit : 1;
3023 UCHAR DetectManifest : 1;
3024 UCHAR IFEOSkipDebugger : 1;
3025 UCHAR IFEODoNotPropagateKeyState : 1;
3026 UCHAR SpareBits1 : 4;
3027 UCHAR SpareBits2 : 8;
3028 USHORT ProhibitedImageCharacteristics : 16;
3031 ACCESS_MASK AdditionalFileAccess;
3032 } InitState;
3033 struct
3035 HANDLE FileHandle;
3036 } FailSection;
3037 struct
3039 USHORT DllCharacteristics;
3040 } ExeFormat;
3041 struct
3043 HANDLE IFEOKey;
3044 } ExeName;
3045 struct
3047 union
3049 ULONG OutputFlags;
3050 struct
3052 UCHAR ProtectedProcess : 1;
3053 UCHAR AddressSpaceOverride : 1;
3054 UCHAR DevOverrideEnabled : 1;
3055 UCHAR ManifestDetected : 1;
3056 UCHAR ProtectedProcessLight : 1;
3057 UCHAR SpareBits1 : 3;
3058 UCHAR SpareBits2 : 8;
3059 USHORT SpareBits3 : 16;
3062 HANDLE FileHandle;
3063 HANDLE SectionHandle;
3064 ULONGLONG UserProcessParametersNative;
3065 ULONG UserProcessParametersWow64;
3066 ULONG CurrentParameterFlags;
3067 ULONGLONG PebAddressNative;
3068 ULONG PebAddressWow64;
3069 ULONGLONG ManifestAddress;
3070 ULONG ManifestSize;
3071 } SuccessState;
3073 } PS_CREATE_INFO, *PPS_CREATE_INFO;
3075 typedef struct _DBGKM_EXCEPTION
3077 EXCEPTION_RECORD ExceptionRecord;
3078 ULONG FirstChance;
3079 } DBGKM_EXCEPTION, *PDBGKM_EXCEPTION;
3081 typedef struct _DBGKM_CREATE_THREAD
3083 ULONG SubSystemKey;
3084 PVOID StartAddress;
3085 } DBGKM_CREATE_THREAD, *PDBGKM_CREATE_THREAD;
3087 typedef struct _DBGKM_CREATE_PROCESS
3089 ULONG SubSystemKey;
3090 HANDLE FileHandle;
3091 PVOID BaseOfImage;
3092 ULONG DebugInfoFileOffset;
3093 ULONG DebugInfoSize;
3094 DBGKM_CREATE_THREAD InitialThread;
3095 } DBGKM_CREATE_PROCESS, *PDBGKM_CREATE_PROCESS;
3097 typedef struct _DBGKM_EXIT_THREAD
3099 NTSTATUS ExitStatus;
3100 } DBGKM_EXIT_THREAD, *PDBGKM_EXIT_THREAD;
3102 typedef struct _DBGKM_EXIT_PROCESS
3104 NTSTATUS ExitStatus;
3105 } DBGKM_EXIT_PROCESS, *PDBGKM_EXIT_PROCESS;
3107 typedef struct _DBGKM_LOAD_DLL
3109 HANDLE FileHandle;
3110 PVOID BaseOfDll;
3111 ULONG DebugInfoFileOffset;
3112 ULONG DebugInfoSize;
3113 PVOID NamePointer;
3114 } DBGKM_LOAD_DLL, *PDBGKM_LOAD_DLL;
3116 typedef struct _DBGKM_UNLOAD_DLL
3118 PVOID BaseAddress;
3119 } DBGKM_UNLOAD_DLL, *PDBGKM_UNLOAD_DLL;
3121 typedef enum _DBG_STATE
3123 DbgIdle,
3124 DbgReplyPending,
3125 DbgCreateThreadStateChange,
3126 DbgCreateProcessStateChange,
3127 DbgExitThreadStateChange,
3128 DbgExitProcessStateChange,
3129 DbgExceptionStateChange,
3130 DbgBreakpointStateChange,
3131 DbgSingleStepStateChange,
3132 DbgLoadDllStateChange,
3133 DbgUnloadDllStateChange
3134 } DBG_STATE, *PDBG_STATE;
3136 typedef struct _DBGUI_CREATE_THREAD
3138 HANDLE HandleToThread;
3139 DBGKM_CREATE_THREAD NewThread;
3140 } DBGUI_CREATE_THREAD, *PDBGUI_CREATE_THREAD;
3142 typedef struct _DBGUI_CREATE_PROCESS
3144 HANDLE HandleToProcess;
3145 HANDLE HandleToThread;
3146 DBGKM_CREATE_PROCESS NewProcess;
3147 } DBGUI_CREATE_PROCESS, *PDBGUI_CREATE_PROCESS;
3149 typedef struct _DBGUI_WAIT_STATE_CHANGE
3151 DBG_STATE NewState;
3152 CLIENT_ID AppClientId;
3153 union
3155 DBGKM_EXCEPTION Exception;
3156 DBGUI_CREATE_THREAD CreateThread;
3157 DBGUI_CREATE_PROCESS CreateProcessInfo;
3158 DBGKM_EXIT_THREAD ExitThread;
3159 DBGKM_EXIT_PROCESS ExitProcess;
3160 DBGKM_LOAD_DLL LoadDll;
3161 DBGKM_UNLOAD_DLL UnloadDll;
3162 } StateInfo;
3163 } DBGUI_WAIT_STATE_CHANGE, *PDBGUI_WAIT_STATE_CHANGE;
3165 struct _DEBUG_EVENT;
3167 #define DEBUG_READ_EVENT 0x0001
3168 #define DEBUG_PROCESS_ASSIGN 0x0002
3169 #define DEBUG_SET_INFORMATION 0x0004
3170 #define DEBUG_QUERY_INFORMATION 0x0008
3171 #define DEBUG_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x0f)
3173 #define DEBUG_KILL_ON_CLOSE 0x1
3175 typedef enum _DEBUGOBJECTINFOCLASS
3177 DebugObjectKillProcessOnExitInformation = 1,
3178 MaxDebugObjectInfoClass
3179 } DEBUGOBJECTINFOCLASS, *PDEBUGOBJECTINFOCLASS;
3181 /***********************************************************************
3182 * Function declarations
3185 NTSYSAPI void WINAPI DbgBreakPoint(void);
3186 NTSYSAPI NTSTATUS WINAPIV DbgPrint(LPCSTR fmt, ...);
3187 NTSYSAPI NTSTATUS WINAPIV DbgPrintEx(ULONG iComponentId, ULONG Level, LPCSTR fmt, ...);
3188 NTSYSAPI NTSTATUS WINAPI DbgUiConnectToDbg(void);
3189 NTSYSAPI NTSTATUS WINAPI DbgUiContinue(CLIENT_ID*,NTSTATUS);
3190 NTSYSAPI NTSTATUS WINAPI DbgUiConvertStateChangeStructure(DBGUI_WAIT_STATE_CHANGE*,struct _DEBUG_EVENT*);
3191 NTSYSAPI NTSTATUS WINAPI DbgUiDebugActiveProcess(HANDLE);
3192 NTSYSAPI HANDLE WINAPI DbgUiGetThreadDebugObject(void);
3193 NTSYSAPI NTSTATUS WINAPI DbgUiIssueRemoteBreakin(HANDLE);
3194 NTSYSAPI void WINAPI DbgUiRemoteBreakin(void*);
3195 NTSYSAPI void WINAPI DbgUiSetThreadDebugObject(HANDLE);
3196 NTSYSAPI NTSTATUS WINAPI DbgUiStopDebugging(HANDLE);
3197 NTSYSAPI NTSTATUS WINAPI DbgUiWaitStateChange(DBGUI_WAIT_STATE_CHANGE*,LARGE_INTEGER*);
3198 NTSYSAPI void WINAPI DbgUserBreakPoint(void);
3199 NTSYSAPI NTSTATUS WINAPI LdrAccessResource(HMODULE,const IMAGE_RESOURCE_DATA_ENTRY*,void**,PULONG);
3200 NTSYSAPI NTSTATUS WINAPI LdrAddDllDirectory(const UNICODE_STRING*,void**);
3201 NTSYSAPI NTSTATUS WINAPI LdrAddRefDll(ULONG,HMODULE);
3202 NTSYSAPI NTSTATUS WINAPI LdrDisableThreadCalloutsForDll(HMODULE);
3203 NTSYSAPI NTSTATUS WINAPI LdrFindEntryForAddress(const void*, PLDR_DATA_TABLE_ENTRY*);
3204 NTSYSAPI NTSTATUS WINAPI LdrFindResourceDirectory_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DIRECTORY**);
3205 NTSYSAPI NTSTATUS WINAPI LdrFindResource_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DATA_ENTRY**);
3206 NTSYSAPI NTSTATUS WINAPI LdrGetDllDirectory(UNICODE_STRING*);
3207 NTSYSAPI NTSTATUS WINAPI LdrGetDllHandle(LPCWSTR, ULONG, const UNICODE_STRING*, HMODULE*);
3208 NTSYSAPI NTSTATUS WINAPI LdrGetDllPath(PCWSTR,ULONG,PWSTR*,PWSTR*);
3209 NTSYSAPI NTSTATUS WINAPI LdrGetProcedureAddress(HMODULE, const ANSI_STRING*, ULONG, void**);
3210 NTSYSAPI NTSTATUS WINAPI LdrLoadDll(LPCWSTR, DWORD, const UNICODE_STRING*, HMODULE*);
3211 NTSYSAPI NTSTATUS WINAPI LdrLockLoaderLock(ULONG,ULONG*,ULONG_PTR*);
3212 IMAGE_BASE_RELOCATION * WINAPI LdrProcessRelocationBlock(void*,UINT,USHORT*,INT_PTR);
3213 NTSYSAPI NTSTATUS WINAPI LdrQueryImageFileExecutionOptions(const UNICODE_STRING*,LPCWSTR,ULONG,void*,ULONG,ULONG*);
3214 NTSYSAPI NTSTATUS WINAPI LdrQueryProcessModuleInformation(SYSTEM_MODULE_INFORMATION*, ULONG, ULONG*);
3215 NTSYSAPI NTSTATUS WINAPI LdrRegisterDllNotification(ULONG,PLDR_DLL_NOTIFICATION_FUNCTION,void*,void**);
3216 NTSYSAPI NTSTATUS WINAPI LdrRemoveDllDirectory(void*);
3217 NTSYSAPI NTSTATUS WINAPI LdrSetDefaultDllDirectories(ULONG);
3218 NTSYSAPI NTSTATUS WINAPI LdrSetDllDirectory(const UNICODE_STRING*);
3219 NTSYSAPI void WINAPI LdrShutdownProcess(void);
3220 NTSYSAPI void WINAPI LdrShutdownThread(void);
3221 NTSYSAPI NTSTATUS WINAPI LdrUnloadDll(HMODULE);
3222 NTSYSAPI NTSTATUS WINAPI LdrUnlockLoaderLock(ULONG,ULONG_PTR);
3223 NTSYSAPI NTSTATUS WINAPI LdrUnregisterDllNotification(void*);
3224 NTSYSAPI NTSTATUS WINAPI NtAcceptConnectPort(PHANDLE,ULONG,PLPC_MESSAGE,BOOLEAN,PLPC_SECTION_WRITE,PLPC_SECTION_READ);
3225 NTSYSAPI NTSTATUS WINAPI NtAccessCheck(PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,PGENERIC_MAPPING,PPRIVILEGE_SET,PULONG,PULONG,NTSTATUS*);
3226 NTSYSAPI NTSTATUS WINAPI NtAccessCheckAndAuditAlarm(PUNICODE_STRING,HANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,ACCESS_MASK,PGENERIC_MAPPING,BOOLEAN,PACCESS_MASK,PBOOLEAN,PBOOLEAN);
3227 NTSYSAPI NTSTATUS WINAPI NtAddAtom(const WCHAR*,ULONG,RTL_ATOM*);
3228 NTSYSAPI NTSTATUS WINAPI NtAdjustGroupsToken(HANDLE,BOOLEAN,PTOKEN_GROUPS,ULONG,PTOKEN_GROUPS,PULONG);
3229 NTSYSAPI NTSTATUS WINAPI NtAdjustPrivilegesToken(HANDLE,BOOLEAN,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD);
3230 NTSYSAPI NTSTATUS WINAPI NtAlertResumeThread(HANDLE,PULONG);
3231 NTSYSAPI NTSTATUS WINAPI NtAlertThread(HANDLE ThreadHandle);
3232 NTSYSAPI NTSTATUS WINAPI NtAllocateLocallyUniqueId(PLUID lpLuid);
3233 NTSYSAPI NTSTATUS WINAPI NtAllocateUuids(PULARGE_INTEGER,PULONG,PULONG,PUCHAR);
3234 NTSYSAPI NTSTATUS WINAPI NtAllocateVirtualMemory(HANDLE,PVOID*,ULONG_PTR,SIZE_T*,ULONG,ULONG);
3235 NTSYSAPI NTSTATUS WINAPI NtAllocateVirtualMemoryEx(HANDLE,PVOID*,SIZE_T*,ULONG,ULONG,MEM_EXTENDED_PARAMETER*,ULONG);
3236 NTSYSAPI NTSTATUS WINAPI NtAreMappedFilesTheSame(PVOID,PVOID);
3237 NTSYSAPI NTSTATUS WINAPI NtAssignProcessToJobObject(HANDLE,HANDLE);
3238 NTSYSAPI NTSTATUS WINAPI NtCallbackReturn(PVOID,ULONG,NTSTATUS);
3239 NTSYSAPI NTSTATUS WINAPI NtCancelIoFile(HANDLE,PIO_STATUS_BLOCK);
3240 NTSYSAPI NTSTATUS WINAPI NtCancelIoFileEx(HANDLE,PIO_STATUS_BLOCK,PIO_STATUS_BLOCK);
3241 NTSYSAPI NTSTATUS WINAPI NtCancelTimer(HANDLE, BOOLEAN*);
3242 NTSYSAPI NTSTATUS WINAPI NtClearEvent(HANDLE);
3243 NTSYSAPI NTSTATUS WINAPI NtClearPowerRequest(HANDLE,POWER_REQUEST_TYPE);
3244 NTSYSAPI NTSTATUS WINAPI NtClose(HANDLE);
3245 NTSYSAPI NTSTATUS WINAPI NtCloseObjectAuditAlarm(PUNICODE_STRING,HANDLE,BOOLEAN);
3246 NTSYSAPI NTSTATUS WINAPI NtCompleteConnectPort(HANDLE);
3247 NTSYSAPI NTSTATUS WINAPI NtConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
3248 NTSYSAPI NTSTATUS WINAPI NtContinue(PCONTEXT,BOOLEAN);
3249 NTSYSAPI NTSTATUS WINAPI NtCreateDebugObject(HANDLE*,ACCESS_MASK,OBJECT_ATTRIBUTES*,ULONG);
3250 NTSYSAPI NTSTATUS WINAPI NtCreateDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
3251 NTSYSAPI NTSTATUS WINAPI NtCreateEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *,EVENT_TYPE,BOOLEAN);
3252 NTSYSAPI NTSTATUS WINAPI NtCreateEventPair(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
3253 NTSYSAPI NTSTATUS WINAPI NtCreateFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,PLARGE_INTEGER,ULONG,ULONG,ULONG,ULONG,PVOID,ULONG);
3254 NTSYSAPI NTSTATUS WINAPI NtCreateIoCompletion(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,ULONG);
3255 NTSYSAPI NTSTATUS WINAPI NtCreateJobObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3256 NTSYSAPI NTSTATUS WINAPI NtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
3257 NTSYSAPI NTSTATUS WINAPI NtCreateKeyTransacted(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,HANDLE,ULONG*);
3258 NTSYSAPI NTSTATUS WINAPI NtCreateKeyedEvent(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG);
3259 NTSYSAPI NTSTATUS WINAPI NtCreateMailslotFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,PLARGE_INTEGER);
3260 NTSYSAPI NTSTATUS WINAPI NtCreateMutant(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,BOOLEAN);
3261 NTSYSAPI NTSTATUS WINAPI NtCreateNamedPipeFile(PHANDLE,ULONG,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,PLARGE_INTEGER);
3262 NTSYSAPI NTSTATUS WINAPI NtCreatePagingFile(PUNICODE_STRING,PLARGE_INTEGER,PLARGE_INTEGER,PLARGE_INTEGER);
3263 NTSYSAPI NTSTATUS WINAPI NtCreatePort(PHANDLE,POBJECT_ATTRIBUTES,ULONG,ULONG,PULONG);
3264 NTSYSAPI NTSTATUS WINAPI NtCreatePowerRequest(HANDLE*,COUNTED_REASON_CONTEXT*);
3265 NTSYSAPI NTSTATUS WINAPI NtCreateProcess(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,HANDLE,BOOLEAN,HANDLE,HANDLE,HANDLE);
3266 NTSYSAPI NTSTATUS WINAPI NtCreateProfile(PHANDLE,HANDLE,PVOID,ULONG,ULONG,PVOID,ULONG,KPROFILE_SOURCE,KAFFINITY);
3267 NTSYSAPI NTSTATUS WINAPI NtCreateSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const LARGE_INTEGER*,ULONG,ULONG,HANDLE);
3268 NTSYSAPI NTSTATUS WINAPI NtCreateSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,LONG,LONG);
3269 NTSYSAPI NTSTATUS WINAPI NtCreateSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PUNICODE_STRING);
3270 NTSYSAPI NTSTATUS WINAPI NtCreateThread(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,HANDLE,PCLIENT_ID,PCONTEXT,PINITIAL_TEB,BOOLEAN);
3271 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*);
3272 NTSYSAPI NTSTATUS WINAPI NtCreateTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*, TIMER_TYPE);
3273 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);
3274 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*);
3275 NTSYSAPI NTSTATUS WINAPI NtDebugActiveProcess(HANDLE,HANDLE);
3276 NTSYSAPI NTSTATUS WINAPI NtDebugContinue(HANDLE,CLIENT_ID*,NTSTATUS);
3277 NTSYSAPI NTSTATUS WINAPI NtDelayExecution(BOOLEAN,const LARGE_INTEGER*);
3278 NTSYSAPI NTSTATUS WINAPI NtDeleteAtom(RTL_ATOM);
3279 NTSYSAPI NTSTATUS WINAPI NtDeleteFile(POBJECT_ATTRIBUTES);
3280 NTSYSAPI NTSTATUS WINAPI NtDeleteKey(HANDLE);
3281 NTSYSAPI NTSTATUS WINAPI NtDeleteValueKey(HANDLE,const UNICODE_STRING *);
3282 NTSYSAPI NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
3283 NTSYSAPI NTSTATUS WINAPI NtDisplayString(PUNICODE_STRING);
3284 NTSYSAPI NTSTATUS WINAPI NtDuplicateObject(HANDLE,HANDLE,HANDLE,PHANDLE,ACCESS_MASK,ULONG,ULONG);
3285 NTSYSAPI NTSTATUS WINAPI NtDuplicateToken(HANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,PHANDLE);
3286 NTSYSAPI NTSTATUS WINAPI NtEnumerateKey(HANDLE,ULONG,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
3287 NTSYSAPI NTSTATUS WINAPI NtEnumerateValueKey(HANDLE,ULONG,KEY_VALUE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
3288 NTSYSAPI NTSTATUS WINAPI NtExtendSection(HANDLE,PLARGE_INTEGER);
3289 NTSYSAPI NTSTATUS WINAPI NtFilterToken(HANDLE,ULONG,TOKEN_GROUPS*,TOKEN_PRIVILEGES*,TOKEN_GROUPS*,HANDLE*);
3290 NTSYSAPI NTSTATUS WINAPI NtFindAtom(const WCHAR*,ULONG,RTL_ATOM*);
3291 NTSYSAPI NTSTATUS WINAPI NtFlushBuffersFile(HANDLE,IO_STATUS_BLOCK*);
3292 NTSYSAPI NTSTATUS WINAPI NtFlushInstructionCache(HANDLE,LPCVOID,SIZE_T);
3293 NTSYSAPI NTSTATUS WINAPI NtFlushKey(HANDLE);
3294 NTSYSAPI void WINAPI NtFlushProcessWriteBuffers(void);
3295 NTSYSAPI NTSTATUS WINAPI NtFlushVirtualMemory(HANDLE,LPCVOID*,SIZE_T*,ULONG);
3296 NTSYSAPI NTSTATUS WINAPI NtFlushWriteBuffer(VOID);
3297 NTSYSAPI NTSTATUS WINAPI NtFreeVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
3298 NTSYSAPI NTSTATUS WINAPI NtFsControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
3299 NTSYSAPI NTSTATUS WINAPI NtGetContextThread(HANDLE,CONTEXT*);
3300 NTSYSAPI ULONG WINAPI NtGetCurrentProcessorNumber(void);
3301 NTSYSAPI NTSTATUS WINAPI NtGetNlsSectionPtr(ULONG,ULONG,void*,void**,SIZE_T*);
3302 NTSYSAPI NTSTATUS WINAPI NtGetPlugPlayEvent(ULONG,ULONG,PVOID,ULONG);
3303 NTSYSAPI ULONG WINAPI NtGetTickCount(VOID);
3304 NTSYSAPI NTSTATUS WINAPI NtGetWriteWatch(HANDLE,ULONG,PVOID,SIZE_T,PVOID*,ULONG_PTR*,ULONG*);
3305 NTSYSAPI NTSTATUS WINAPI NtImpersonateAnonymousToken(HANDLE);
3306 NTSYSAPI NTSTATUS WINAPI NtImpersonateClientOfPort(HANDLE,PPORT_MESSAGE);
3307 NTSYSAPI NTSTATUS WINAPI NtImpersonateThread(HANDLE,HANDLE,PSECURITY_QUALITY_OF_SERVICE);
3308 NTSYSAPI NTSTATUS WINAPI NtInitializeRegistry(BOOLEAN);
3309 NTSYSAPI NTSTATUS WINAPI NtInitiatePowerAction(POWER_ACTION,SYSTEM_POWER_STATE,ULONG,BOOLEAN);
3310 NTSYSAPI NTSTATUS WINAPI NtIsProcessInJob(HANDLE,HANDLE);
3311 NTSYSAPI NTSTATUS WINAPI NtListenPort(HANDLE,PLPC_MESSAGE);
3312 NTSYSAPI NTSTATUS WINAPI NtLoadDriver(const UNICODE_STRING *);
3313 NTSYSAPI NTSTATUS WINAPI NtLoadKey(const OBJECT_ATTRIBUTES *,OBJECT_ATTRIBUTES *);
3314 NTSYSAPI NTSTATUS WINAPI NtLockFile(HANDLE,HANDLE,PIO_APC_ROUTINE,void*,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,ULONG*,BOOLEAN,BOOLEAN);
3315 NTSYSAPI NTSTATUS WINAPI NtLockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
3316 NTSYSAPI NTSTATUS WINAPI NtMakeTemporaryObject(HANDLE);
3317 NTSYSAPI NTSTATUS WINAPI NtMapViewOfSection(HANDLE,HANDLE,PVOID*,ULONG_PTR,SIZE_T,const LARGE_INTEGER*,SIZE_T*,SECTION_INHERIT,ULONG,ULONG);
3318 NTSYSAPI NTSTATUS WINAPI NtNotifyChangeDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,ULONG,BOOLEAN);
3319 NTSYSAPI NTSTATUS WINAPI NtNotifyChangeKey(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN);
3320 NTSYSAPI NTSTATUS WINAPI NtNotifyChangeMultipleKeys(HANDLE,ULONG,OBJECT_ATTRIBUTES*,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN);
3321 NTSYSAPI NTSTATUS WINAPI NtOpenDirectoryObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3322 NTSYSAPI NTSTATUS WINAPI NtOpenEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
3323 NTSYSAPI NTSTATUS WINAPI NtOpenEventPair(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3324 NTSYSAPI NTSTATUS WINAPI NtOpenFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG);
3325 NTSYSAPI NTSTATUS WINAPI NtOpenIoCompletion(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3326 NTSYSAPI NTSTATUS WINAPI NtOpenJobObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3327 NTSYSAPI NTSTATUS WINAPI NtOpenKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
3328 NTSYSAPI NTSTATUS WINAPI NtOpenKeyEx(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG);
3329 NTSYSAPI NTSTATUS WINAPI NtOpenKeyTransacted(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,HANDLE);
3330 NTSYSAPI NTSTATUS WINAPI NtOpenKeyTransactedEx(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,HANDLE);
3331 NTSYSAPI NTSTATUS WINAPI NtOpenKeyedEvent(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3332 NTSYSAPI NTSTATUS WINAPI NtOpenMutant(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3333 NTSYSAPI NTSTATUS WINAPI NtOpenObjectAuditAlarm(PUNICODE_STRING,PHANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,ACCESS_MASK,PPRIVILEGE_SET,BOOLEAN,BOOLEAN,PBOOLEAN);
3334 NTSYSAPI NTSTATUS WINAPI NtOpenProcess(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
3335 NTSYSAPI NTSTATUS WINAPI NtOpenProcessToken(HANDLE,DWORD,HANDLE *);
3336 NTSYSAPI NTSTATUS WINAPI NtOpenProcessTokenEx(HANDLE,DWORD,DWORD,HANDLE *);
3337 NTSYSAPI NTSTATUS WINAPI NtOpenSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3338 NTSYSAPI NTSTATUS WINAPI NtOpenSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3339 NTSYSAPI NTSTATUS WINAPI NtOpenSymbolicLinkObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
3340 NTSYSAPI NTSTATUS WINAPI NtOpenThread(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
3341 NTSYSAPI NTSTATUS WINAPI NtOpenThreadToken(HANDLE,DWORD,BOOLEAN,HANDLE *);
3342 NTSYSAPI NTSTATUS WINAPI NtOpenThreadTokenEx(HANDLE,DWORD,BOOLEAN,DWORD,HANDLE *);
3343 NTSYSAPI NTSTATUS WINAPI NtOpenTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*);
3344 NTSYSAPI NTSTATUS WINAPI NtPowerInformation(POWER_INFORMATION_LEVEL,PVOID,ULONG,PVOID,ULONG);
3345 NTSYSAPI NTSTATUS WINAPI NtPrivilegeCheck(HANDLE,PPRIVILEGE_SET,PBOOLEAN);
3346 NTSYSAPI NTSTATUS WINAPI NtPrivilegeObjectAuditAlarm(PUNICODE_STRING,HANDLE,HANDLE,ULONG,PPRIVILEGE_SET,BOOLEAN);
3347 NTSYSAPI NTSTATUS WINAPI NtPrivilegedServiceAuditAlarm(PUNICODE_STRING,PUNICODE_STRING,HANDLE,PPRIVILEGE_SET,BOOLEAN);
3348 NTSYSAPI NTSTATUS WINAPI NtProtectVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG,ULONG*);
3349 NTSYSAPI NTSTATUS WINAPI NtPulseEvent(HANDLE,LONG*);
3350 NTSYSAPI NTSTATUS WINAPI NtQueueApcThread(HANDLE,PNTAPCFUNC,ULONG_PTR,ULONG_PTR,ULONG_PTR);
3351 NTSYSAPI NTSTATUS WINAPI NtQueryAttributesFile(const OBJECT_ATTRIBUTES*,FILE_BASIC_INFORMATION*);
3352 NTSYSAPI NTSTATUS WINAPI NtQueryDefaultLocale(BOOLEAN,LCID*);
3353 NTSYSAPI NTSTATUS WINAPI NtQueryDefaultUILanguage(LANGID*);
3354 NTSYSAPI NTSTATUS WINAPI NtQueryDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS,BOOLEAN,PUNICODE_STRING,BOOLEAN);
3355 NTSYSAPI NTSTATUS WINAPI NtQueryDirectoryObject(HANDLE,PDIRECTORY_BASIC_INFORMATION,ULONG,BOOLEAN,BOOLEAN,PULONG,PULONG);
3356 NTSYSAPI NTSTATUS WINAPI NtQueryEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,BOOLEAN,PVOID,ULONG,PULONG,BOOLEAN);
3357 NTSYSAPI NTSTATUS WINAPI NtQueryEvent(HANDLE,EVENT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
3358 NTSYSAPI NTSTATUS WINAPI NtQueryFullAttributesFile(const OBJECT_ATTRIBUTES*,FILE_NETWORK_OPEN_INFORMATION*);
3359 NTSYSAPI NTSTATUS WINAPI NtQueryInformationAtom(RTL_ATOM,ATOM_INFORMATION_CLASS,PVOID,ULONG,ULONG*);
3360 NTSYSAPI NTSTATUS WINAPI NtQueryInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,LONG,FILE_INFORMATION_CLASS);
3361 NTSYSAPI NTSTATUS WINAPI NtQueryInformationJobObject(HANDLE,JOBOBJECTINFOCLASS,PVOID,ULONG,PULONG);
3362 NTSYSAPI NTSTATUS WINAPI NtQueryInformationPort(HANDLE,PORT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
3363 NTSYSAPI NTSTATUS WINAPI NtQueryInformationProcess(HANDLE,PROCESSINFOCLASS,PVOID,ULONG,PULONG);
3364 NTSYSAPI NTSTATUS WINAPI NtQueryInformationThread(HANDLE,THREADINFOCLASS,PVOID,ULONG,PULONG);
3365 NTSYSAPI NTSTATUS WINAPI NtQueryInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG,PULONG);
3366 NTSYSAPI NTSTATUS WINAPI NtQueryInstallUILanguage(LANGID*);
3367 NTSYSAPI NTSTATUS WINAPI NtQueryIntervalProfile(KPROFILE_SOURCE,PULONG);
3368 NTSYSAPI NTSTATUS WINAPI NtQueryIoCompletion(HANDLE,IO_COMPLETION_INFORMATION_CLASS,PVOID,ULONG,PULONG);
3369 NTSYSAPI NTSTATUS WINAPI NtQueryKey(HANDLE,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
3370 NTSYSAPI NTSTATUS WINAPI NtQueryMultipleValueKey(HANDLE,PKEY_MULTIPLE_VALUE_INFORMATION,ULONG,PVOID,ULONG,PULONG);
3371 NTSYSAPI NTSTATUS WINAPI NtQueryMutant(HANDLE,MUTANT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
3372 NTSYSAPI NTSTATUS WINAPI NtQueryObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG, PULONG);
3373 NTSYSAPI NTSTATUS WINAPI NtQueryOpenSubKeys(POBJECT_ATTRIBUTES,PULONG);
3374 NTSYSAPI NTSTATUS WINAPI NtQueryPerformanceCounter(PLARGE_INTEGER, PLARGE_INTEGER);
3375 NTSYSAPI NTSTATUS WINAPI NtQuerySecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,ULONG,PULONG);
3376 NTSYSAPI NTSTATUS WINAPI NtQuerySection(HANDLE,SECTION_INFORMATION_CLASS,PVOID,SIZE_T,SIZE_T*);
3377 NTSYSAPI NTSTATUS WINAPI NtQuerySemaphore(HANDLE,SEMAPHORE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
3378 NTSYSAPI NTSTATUS WINAPI NtQuerySymbolicLinkObject(HANDLE,PUNICODE_STRING,PULONG);
3379 NTSYSAPI NTSTATUS WINAPI NtQuerySystemEnvironmentValue(PUNICODE_STRING,PWCHAR,ULONG,PULONG);
3380 NTSYSAPI NTSTATUS WINAPI NtQuerySystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG,PULONG);
3381 NTSYSAPI NTSTATUS WINAPI NtQuerySystemInformationEx(SYSTEM_INFORMATION_CLASS,void*,ULONG,void*,ULONG,ULONG*);
3382 NTSYSAPI NTSTATUS WINAPI NtQuerySystemTime(PLARGE_INTEGER);
3383 NTSYSAPI NTSTATUS WINAPI NtQueryTimer(HANDLE,TIMER_INFORMATION_CLASS,PVOID,ULONG,PULONG);
3384 NTSYSAPI NTSTATUS WINAPI NtQueryTimerResolution(PULONG,PULONG,PULONG);
3385 NTSYSAPI NTSTATUS WINAPI NtQueryValueKey(HANDLE,const UNICODE_STRING *,KEY_VALUE_INFORMATION_CLASS,void *,DWORD,DWORD *);
3386 NTSYSAPI NTSTATUS WINAPI NtQueryLicenseValue(const UNICODE_STRING *,ULONG *,PVOID,ULONG,ULONG *);
3387 NTSYSAPI NTSTATUS WINAPI NtQueryVirtualMemory(HANDLE,LPCVOID,MEMORY_INFORMATION_CLASS,PVOID,SIZE_T,SIZE_T*);
3388 NTSYSAPI NTSTATUS WINAPI NtQueryVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
3389 NTSYSAPI NTSTATUS WINAPI NtRaiseException(PEXCEPTION_RECORD,PCONTEXT,BOOL);
3390 NTSYSAPI NTSTATUS WINAPI NtRaiseHardError(NTSTATUS,ULONG,PUNICODE_STRING,PVOID*,HARDERROR_RESPONSE_OPTION,PHARDERROR_RESPONSE);
3391 NTSYSAPI NTSTATUS WINAPI NtReadFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,PLARGE_INTEGER,PULONG);
3392 NTSYSAPI NTSTATUS WINAPI NtReadFileScatter(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,FILE_SEGMENT_ELEMENT*,ULONG,PLARGE_INTEGER,PULONG);
3393 NTSYSAPI NTSTATUS WINAPI NtReadRequestData(HANDLE,PLPC_MESSAGE,ULONG,PVOID,ULONG,PULONG);
3394 NTSYSAPI NTSTATUS WINAPI NtReadVirtualMemory(HANDLE,const void*,void*,SIZE_T,SIZE_T*);
3395 NTSYSAPI NTSTATUS WINAPI NtRegisterThreadTerminatePort(HANDLE);
3396 NTSYSAPI NTSTATUS WINAPI NtReleaseKeyedEvent(HANDLE,const void*,BOOLEAN,const LARGE_INTEGER*);
3397 NTSYSAPI NTSTATUS WINAPI NtReleaseMutant(HANDLE,PLONG);
3398 NTSYSAPI NTSTATUS WINAPI NtReleaseSemaphore(HANDLE,ULONG,PULONG);
3399 NTSYSAPI NTSTATUS WINAPI NtRemoveIoCompletion(HANDLE,PULONG_PTR,PULONG_PTR,PIO_STATUS_BLOCK,PLARGE_INTEGER);
3400 NTSYSAPI NTSTATUS WINAPI NtRemoveIoCompletionEx(HANDLE,FILE_IO_COMPLETION_INFORMATION*,ULONG,ULONG*,LARGE_INTEGER*,BOOLEAN);
3401 NTSYSAPI NTSTATUS WINAPI NtRemoveProcessDebug(HANDLE,HANDLE);
3402 NTSYSAPI NTSTATUS WINAPI NtRenameKey(HANDLE,UNICODE_STRING*);
3403 NTSYSAPI NTSTATUS WINAPI NtReplaceKey(POBJECT_ATTRIBUTES,HANDLE,POBJECT_ATTRIBUTES);
3404 NTSYSAPI NTSTATUS WINAPI NtReplyPort(HANDLE,PLPC_MESSAGE);
3405 NTSYSAPI NTSTATUS WINAPI NtReplyWaitReceivePort(HANDLE,PULONG,PLPC_MESSAGE,PLPC_MESSAGE);
3406 NTSYSAPI NTSTATUS WINAPI NtReplyWaitReceivePortEx(HANDLE,PVOID*,PPORT_MESSAGE,PPORT_MESSAGE,PLARGE_INTEGER);
3407 NTSYSAPI NTSTATUS WINAPI NtReplyWaitReplyPort(HANDLE,PLPC_MESSAGE);
3408 NTSYSAPI NTSTATUS WINAPI NtRequestPort(HANDLE,PLPC_MESSAGE);
3409 NTSYSAPI NTSTATUS WINAPI NtRequestWaitReplyPort(HANDLE,PLPC_MESSAGE,PLPC_MESSAGE);
3410 NTSYSAPI NTSTATUS WINAPI NtResetEvent(HANDLE,LONG*);
3411 NTSYSAPI NTSTATUS WINAPI NtResetWriteWatch(HANDLE,PVOID,SIZE_T);
3412 NTSYSAPI NTSTATUS WINAPI NtRestoreKey(HANDLE,HANDLE,ULONG);
3413 NTSYSAPI NTSTATUS WINAPI NtResumeProcess(HANDLE);
3414 NTSYSAPI NTSTATUS WINAPI NtResumeThread(HANDLE,PULONG);
3415 NTSYSAPI NTSTATUS WINAPI NtSaveKey(HANDLE,HANDLE);
3416 NTSYSAPI NTSTATUS WINAPI NtSecureConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PSID,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
3417 NTSYSAPI NTSTATUS WINAPI NtSetContextThread(HANDLE,const CONTEXT*);
3418 NTSYSAPI NTSTATUS WINAPI NtSetDefaultHardErrorPort(HANDLE);
3419 NTSYSAPI NTSTATUS WINAPI NtSetDefaultLocale(BOOLEAN,LCID);
3420 NTSYSAPI NTSTATUS WINAPI NtSetDefaultUILanguage(LANGID);
3421 NTSYSAPI NTSTATUS WINAPI NtSetEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG);
3422 NTSYSAPI NTSTATUS WINAPI NtSetEvent(HANDLE,LONG*);
3423 NTSYSAPI NTSTATUS WINAPI NtSetHighEventPair(HANDLE);
3424 NTSYSAPI NTSTATUS WINAPI NtSetHighWaitLowEventPair(HANDLE);
3425 NTSYSAPI NTSTATUS WINAPI NtSetHighWaitLowThread(VOID);
3426 NTSYSAPI NTSTATUS WINAPI NtSetInformationDebugObject(HANDLE,DEBUGOBJECTINFOCLASS,PVOID,ULONG,ULONG*);
3427 NTSYSAPI NTSTATUS WINAPI NtSetInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS);
3428 NTSYSAPI NTSTATUS WINAPI NtSetInformationJobObject(HANDLE,JOBOBJECTINFOCLASS,PVOID,ULONG);
3429 NTSYSAPI NTSTATUS WINAPI NtSetInformationKey(HANDLE,const int,PVOID,ULONG);
3430 NTSYSAPI NTSTATUS WINAPI NtSetInformationObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG);
3431 NTSYSAPI NTSTATUS WINAPI NtSetInformationProcess(HANDLE,PROCESS_INFORMATION_CLASS,PVOID,ULONG);
3432 NTSYSAPI NTSTATUS WINAPI NtSetInformationThread(HANDLE,THREADINFOCLASS,LPCVOID,ULONG);
3433 NTSYSAPI NTSTATUS WINAPI NtSetInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG);
3434 NTSYSAPI NTSTATUS WINAPI NtSetIntervalProfile(ULONG,KPROFILE_SOURCE);
3435 NTSYSAPI NTSTATUS WINAPI NtSetIoCompletion(HANDLE,ULONG_PTR,ULONG_PTR,NTSTATUS,SIZE_T);
3436 NTSYSAPI NTSTATUS WINAPI NtSetLdtEntries(ULONG,LDT_ENTRY,ULONG,LDT_ENTRY);
3437 NTSYSAPI NTSTATUS WINAPI NtSetLowEventPair(HANDLE);
3438 NTSYSAPI NTSTATUS WINAPI NtSetLowWaitHighEventPair(HANDLE);
3439 NTSYSAPI NTSTATUS WINAPI NtSetLowWaitHighThread(VOID);
3440 NTSYSAPI NTSTATUS WINAPI NtSetPowerRequest(HANDLE,POWER_REQUEST_TYPE);
3441 NTSYSAPI NTSTATUS WINAPI NtSetSecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
3442 NTSYSAPI NTSTATUS WINAPI NtSetSystemEnvironmentValue(PUNICODE_STRING,PUNICODE_STRING);
3443 NTSYSAPI NTSTATUS WINAPI NtSetSystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG);
3444 NTSYSAPI NTSTATUS WINAPI NtSetSystemPowerState(POWER_ACTION,SYSTEM_POWER_STATE,ULONG);
3445 NTSYSAPI NTSTATUS WINAPI NtSetSystemTime(const LARGE_INTEGER*,LARGE_INTEGER*);
3446 NTSYSAPI NTSTATUS WINAPI NtSetThreadExecutionState(EXECUTION_STATE,EXECUTION_STATE*);
3447 NTSYSAPI NTSTATUS WINAPI NtSetTimer(HANDLE, const LARGE_INTEGER*, PTIMER_APC_ROUTINE, PVOID, BOOLEAN, ULONG, BOOLEAN*);
3448 NTSYSAPI NTSTATUS WINAPI NtSetTimerResolution(ULONG,BOOLEAN,PULONG);
3449 NTSYSAPI NTSTATUS WINAPI NtSetValueKey(HANDLE,const UNICODE_STRING *,ULONG,ULONG,const void *,ULONG);
3450 NTSYSAPI NTSTATUS WINAPI NtSetVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
3451 NTSYSAPI NTSTATUS WINAPI NtSignalAndWaitForSingleObject(HANDLE,HANDLE,BOOLEAN,const LARGE_INTEGER*);
3452 NTSYSAPI NTSTATUS WINAPI NtShutdownSystem(SHUTDOWN_ACTION);
3453 NTSYSAPI NTSTATUS WINAPI NtStartProfile(HANDLE);
3454 NTSYSAPI NTSTATUS WINAPI NtStopProfile(HANDLE);
3455 NTSYSAPI NTSTATUS WINAPI NtSuspendProcess(HANDLE);
3456 NTSYSAPI NTSTATUS WINAPI NtSuspendThread(HANDLE,PULONG);
3457 NTSYSAPI NTSTATUS WINAPI NtSystemDebugControl(SYSDBG_COMMAND,PVOID,ULONG,PVOID,ULONG,PULONG);
3458 NTSYSAPI NTSTATUS WINAPI NtTerminateJobObject(HANDLE,NTSTATUS);
3459 NTSYSAPI NTSTATUS WINAPI NtTerminateProcess(HANDLE,LONG);
3460 NTSYSAPI NTSTATUS WINAPI NtTerminateThread(HANDLE,LONG);
3461 NTSYSAPI NTSTATUS WINAPI NtTestAlert(VOID);
3462 NTSYSAPI NTSTATUS WINAPI NtUnloadDriver(const UNICODE_STRING *);
3463 NTSYSAPI NTSTATUS WINAPI NtUnloadKey(POBJECT_ATTRIBUTES);
3464 NTSYSAPI NTSTATUS WINAPI NtUnloadKeyEx(POBJECT_ATTRIBUTES,HANDLE);
3465 NTSYSAPI NTSTATUS WINAPI NtUnlockFile(HANDLE,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,PULONG);
3466 NTSYSAPI NTSTATUS WINAPI NtUnlockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
3467 NTSYSAPI NTSTATUS WINAPI NtUnmapViewOfSection(HANDLE,PVOID);
3468 NTSYSAPI NTSTATUS WINAPI NtVdmControl(ULONG,PVOID);
3469 NTSYSAPI NTSTATUS WINAPI NtWaitForDebugEvent(HANDLE,BOOLEAN,LARGE_INTEGER*,DBGUI_WAIT_STATE_CHANGE*);
3470 NTSYSAPI NTSTATUS WINAPI NtWaitForKeyedEvent(HANDLE,const void*,BOOLEAN,const LARGE_INTEGER*);
3471 NTSYSAPI NTSTATUS WINAPI NtWaitForSingleObject(HANDLE,BOOLEAN,const LARGE_INTEGER*);
3472 NTSYSAPI NTSTATUS WINAPI NtWaitForMultipleObjects(ULONG,const HANDLE*,BOOLEAN,BOOLEAN,const LARGE_INTEGER*);
3473 NTSYSAPI NTSTATUS WINAPI NtWaitHighEventPair(HANDLE);
3474 NTSYSAPI NTSTATUS WINAPI NtWaitLowEventPair(HANDLE);
3475 NTSYSAPI NTSTATUS WINAPI NtWriteFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,const void*,ULONG,PLARGE_INTEGER,PULONG);
3476 NTSYSAPI NTSTATUS WINAPI NtWriteFileGather(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,FILE_SEGMENT_ELEMENT*,ULONG,PLARGE_INTEGER,PULONG);
3477 NTSYSAPI NTSTATUS WINAPI NtWriteRequestData(HANDLE,PLPC_MESSAGE,ULONG,PVOID,ULONG,PULONG);
3478 NTSYSAPI NTSTATUS WINAPI NtWriteVirtualMemory(HANDLE,void*,const void*,SIZE_T,SIZE_T*);
3479 NTSYSAPI NTSTATUS WINAPI NtYieldExecution(void);
3481 NTSYSAPI NTSTATUS WINAPI RtlAbsoluteToSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PULONG);
3482 NTSYSAPI void WINAPI RtlAcquirePebLock(void);
3483 NTSYSAPI BYTE WINAPI RtlAcquireResourceExclusive(LPRTL_RWLOCK,BYTE);
3484 NTSYSAPI BYTE WINAPI RtlAcquireResourceShared(LPRTL_RWLOCK,BYTE);
3485 NTSYSAPI void WINAPI RtlAcquireSRWLockExclusive(RTL_SRWLOCK*);
3486 NTSYSAPI void WINAPI RtlAcquireSRWLockShared(RTL_SRWLOCK*);
3487 NTSYSAPI NTSTATUS WINAPI RtlActivateActivationContext(DWORD,HANDLE,ULONG_PTR*);
3488 NTSYSAPI NTSTATUS WINAPI RtlActivateActivationContextEx(ULONG,TEB*,HANDLE,ULONG_PTR*);
3489 NTSYSAPI NTSTATUS WINAPI RtlAddAce(PACL,DWORD,DWORD,PACE_HEADER,DWORD);
3490 NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAce(PACL,DWORD,DWORD,PSID);
3491 NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
3492 NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedObjectAce(PACL,DWORD,DWORD,DWORD,GUID*,GUID*,PSID);
3493 NTSYSAPI NTSTATUS WINAPI RtlAddAccessDeniedAce(PACL,DWORD,DWORD,PSID);
3494 NTSYSAPI NTSTATUS WINAPI RtlAddAccessDeniedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
3495 NTSYSAPI NTSTATUS WINAPI RtlAddAccessDeniedObjectAce(PACL,DWORD,DWORD,DWORD,GUID*,GUID*,PSID);
3496 NTSYSAPI NTSTATUS WINAPI RtlAddAtomToAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*);
3497 NTSYSAPI NTSTATUS WINAPI RtlAddAuditAccessAce(PACL,DWORD,DWORD,PSID,BOOL,BOOL);
3498 NTSYSAPI NTSTATUS WINAPI RtlAddAuditAccessAceEx(PACL,DWORD,DWORD,DWORD,PSID,BOOL,BOOL);
3499 NTSYSAPI NTSTATUS WINAPI RtlAddAuditAccessObjectAce(PACL,DWORD,DWORD,DWORD,GUID*,GUID*,PSID,BOOL,BOOL);
3500 NTSYSAPI NTSTATUS WINAPI RtlAddMandatoryAce(PACL,DWORD,DWORD,DWORD,DWORD,PSID);
3501 NTSYSAPI void WINAPI RtlAddRefActivationContext(HANDLE);
3502 NTSYSAPI PVOID WINAPI RtlAddVectoredExceptionHandler(ULONG,PVECTORED_EXCEPTION_HANDLER);
3503 NTSYSAPI NTSTATUS WINAPI RtlAdjustPrivilege(ULONG,BOOLEAN,BOOLEAN,PBOOLEAN);
3504 NTSYSAPI NTSTATUS WINAPI RtlAllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PSID *);
3505 NTSYSAPI RTL_HANDLE * WINAPI RtlAllocateHandle(RTL_HANDLE_TABLE *,ULONG *);
3506 NTSYSAPI PVOID WINAPI RtlAllocateHeap(HANDLE,ULONG,SIZE_T) __WINE_ALLOC_SIZE(3);
3507 NTSYSAPI WCHAR WINAPI RtlAnsiCharToUnicodeChar(LPSTR *);
3508 NTSYSAPI DWORD WINAPI RtlAnsiStringToUnicodeSize(const STRING *);
3509 NTSYSAPI NTSTATUS WINAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING,PCANSI_STRING,BOOLEAN);
3510 NTSYSAPI NTSTATUS WINAPI RtlAppendAsciizToString(STRING *,LPCSTR);
3511 NTSYSAPI NTSTATUS WINAPI RtlAppendStringToString(STRING *,const STRING *);
3512 NTSYSAPI NTSTATUS WINAPI RtlAppendUnicodeStringToString(UNICODE_STRING *,const UNICODE_STRING *);
3513 NTSYSAPI NTSTATUS WINAPI RtlAppendUnicodeToString(UNICODE_STRING *,LPCWSTR);
3514 NTSYSAPI BOOLEAN WINAPI RtlAreAllAccessesGranted(ACCESS_MASK,ACCESS_MASK);
3515 NTSYSAPI BOOLEAN WINAPI RtlAreAnyAccessesGranted(ACCESS_MASK,ACCESS_MASK);
3516 NTSYSAPI BOOLEAN WINAPI RtlAreBitsSet(PCRTL_BITMAP,ULONG,ULONG);
3517 NTSYSAPI BOOLEAN WINAPI RtlAreBitsClear(PCRTL_BITMAP,ULONG,ULONG);
3518 NTSYSAPI NTSTATUS WINAPI RtlCharToInteger(PCSZ,ULONG,PULONG);
3519 NTSYSAPI NTSTATUS WINAPI RtlCheckRegistryKey(ULONG, PWSTR);
3520 NTSYSAPI void WINAPI RtlClearAllBits(PRTL_BITMAP);
3521 NTSYSAPI void WINAPI RtlClearBits(PRTL_BITMAP,ULONG,ULONG);
3522 NTSYSAPI NTSTATUS WINAPI RtlCreateActivationContext(HANDLE*,const void*);
3523 NTSYSAPI PDEBUG_BUFFER WINAPI RtlCreateQueryDebugBuffer(ULONG,BOOLEAN);
3524 NTSYSAPI NTSTATUS WINAPI RtlCreateRegistryKey(ULONG,PWSTR);
3525 NTSYSAPI ULONG WINAPI RtlCompactHeap(HANDLE,ULONG);
3526 NTSYSAPI LONG WINAPI RtlCompareString(const STRING*,const STRING*,BOOLEAN);
3527 NTSYSAPI LONG WINAPI RtlCompareUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
3528 NTSYSAPI LONG WINAPI RtlCompareUnicodeStrings(const WCHAR*,SIZE_T,const WCHAR*,SIZE_T,BOOLEAN);
3529 NTSYSAPI NTSTATUS WINAPI RtlCompressBuffer(USHORT,PUCHAR,ULONG,PUCHAR,ULONG,ULONG,PULONG,PVOID);
3530 NTSYSAPI DWORD WINAPI RtlComputeCrc32(DWORD,const BYTE*,INT);
3531 NTSYSAPI NTSTATUS WINAPI RtlConvertSidToUnicodeString(PUNICODE_STRING,PSID,BOOLEAN);
3532 NTSYSAPI NTSTATUS WINAPI RtlConvertToAutoInheritSecurityObject(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,GUID*,BOOL,PGENERIC_MAPPING);
3533 NTSYSAPI void WINAPI RtlCopyLuid(PLUID,const LUID*);
3534 NTSYSAPI void WINAPI RtlCopyLuidAndAttributesArray(ULONG,const LUID_AND_ATTRIBUTES*,PLUID_AND_ATTRIBUTES);
3535 NTSYSAPI BOOLEAN WINAPI RtlCopySid(DWORD,PSID,PSID);
3536 NTSYSAPI NTSTATUS WINAPI RtlCopySecurityDescriptor(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR);
3537 NTSYSAPI void WINAPI RtlCopyString(STRING*,const STRING*);
3538 NTSYSAPI void WINAPI RtlCopyUnicodeString(UNICODE_STRING*,const UNICODE_STRING*);
3539 NTSYSAPI NTSTATUS WINAPI RtlCreateAcl(PACL,DWORD,DWORD);
3540 NTSYSAPI NTSTATUS WINAPI RtlCreateAtomTable(ULONG,RTL_ATOM_TABLE*);
3541 NTSYSAPI NTSTATUS WINAPI RtlCreateEnvironment(BOOLEAN, PWSTR*);
3542 NTSYSAPI HANDLE WINAPI RtlCreateHeap(ULONG,PVOID,SIZE_T,SIZE_T,PVOID,PRTL_HEAP_DEFINITION);
3543 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*);
3544 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);
3545 NTSYSAPI NTSTATUS WINAPI RtlCreateSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD);
3546 NTSYSAPI NTSTATUS WINAPI RtlCreateTimerQueue(PHANDLE);
3547 NTSYSAPI NTSTATUS WINAPI RtlCreateTimer(PHANDLE, HANDLE, RTL_WAITORTIMERCALLBACKFUNC, PVOID, DWORD, DWORD, ULONG);
3548 NTSYSAPI BOOLEAN WINAPI RtlCreateUnicodeString(PUNICODE_STRING,LPCWSTR);
3549 NTSYSAPI BOOLEAN WINAPI RtlCreateUnicodeStringFromAsciiz(PUNICODE_STRING,LPCSTR);
3550 NTSYSAPI NTSTATUS WINAPI RtlCreateUserProcess(UNICODE_STRING*,ULONG,RTL_USER_PROCESS_PARAMETERS*,SECURITY_DESCRIPTOR*,SECURITY_DESCRIPTOR*,HANDLE,BOOLEAN,HANDLE,HANDLE,RTL_USER_PROCESS_INFORMATION*);
3551 NTSYSAPI NTSTATUS WINAPI RtlCreateUserThread(HANDLE,SECURITY_DESCRIPTOR*,BOOLEAN,PVOID,SIZE_T,SIZE_T,PRTL_THREAD_START_ROUTINE,void*,HANDLE*,CLIENT_ID*);
3552 NTSYSAPI NTSTATUS WINAPI RtlCreateUserStack(SIZE_T,SIZE_T,ULONG,SIZE_T,SIZE_T,INITIAL_TEB*);
3553 NTSYSAPI NTSTATUS WINAPI RtlCustomCPToUnicodeN(CPTABLEINFO*,WCHAR*,DWORD,DWORD*,const char*,DWORD);
3554 NTSYSAPI void WINAPI RtlDeactivateActivationContext(DWORD,ULONG_PTR);
3555 NTSYSAPI PVOID WINAPI RtlDecodePointer(PVOID);
3556 NTSYSAPI NTSTATUS WINAPI RtlDecompressBuffer(USHORT,PUCHAR,ULONG,PUCHAR,ULONG,PULONG);
3557 NTSYSAPI NTSTATUS WINAPI RtlDecompressFragment(USHORT,PUCHAR,ULONG,PUCHAR,ULONG,ULONG,PULONG,PVOID);
3558 NTSYSAPI NTSTATUS WINAPI RtlDeleteAce(PACL,DWORD);
3559 NTSYSAPI NTSTATUS WINAPI RtlDeleteAtomFromAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
3560 NTSYSAPI NTSTATUS WINAPI RtlDeleteCriticalSection(RTL_CRITICAL_SECTION *);
3561 NTSYSAPI NTSTATUS WINAPI RtlDeleteRegistryValue(ULONG, PCWSTR, PCWSTR);
3562 NTSYSAPI void WINAPI RtlDeleteResource(LPRTL_RWLOCK);
3563 NTSYSAPI NTSTATUS WINAPI RtlDeleteSecurityObject(PSECURITY_DESCRIPTOR*);
3564 NTSYSAPI NTSTATUS WINAPI RtlDeleteTimer(HANDLE, HANDLE, HANDLE);
3565 NTSYSAPI NTSTATUS WINAPI RtlDeleteTimerQueueEx(HANDLE, HANDLE);
3566 NTSYSAPI PRTL_USER_PROCESS_PARAMETERS WINAPI RtlDeNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
3567 NTSYSAPI NTSTATUS WINAPI RtlDeregisterWait(HANDLE);
3568 NTSYSAPI NTSTATUS WINAPI RtlDeregisterWaitEx(HANDLE,HANDLE);
3569 NTSYSAPI NTSTATUS WINAPI RtlDestroyAtomTable(RTL_ATOM_TABLE);
3570 NTSYSAPI NTSTATUS WINAPI RtlDestroyEnvironment(PWSTR);
3571 NTSYSAPI NTSTATUS WINAPI RtlDestroyHandleTable(RTL_HANDLE_TABLE *);
3572 NTSYSAPI HANDLE WINAPI RtlDestroyHeap(HANDLE);
3573 NTSYSAPI void WINAPI RtlDestroyProcessParameters(RTL_USER_PROCESS_PARAMETERS*);
3574 NTSYSAPI NTSTATUS WINAPI RtlDestroyQueryDebugBuffer(PDEBUG_BUFFER);
3575 NTSYSAPI DOS_PATHNAME_TYPE WINAPI RtlDetermineDosPathNameType_U(PCWSTR);
3576 NTSYSAPI BOOLEAN WINAPI RtlDllShutdownInProgress(void);
3577 NTSYSAPI BOOLEAN WINAPI RtlDoesFileExists_U(LPCWSTR);
3578 NTSYSAPI BOOLEAN WINAPI RtlDosPathNameToNtPathName_U(PCWSTR,PUNICODE_STRING,PWSTR*,CURDIR*);
3579 NTSYSAPI NTSTATUS WINAPI RtlDosPathNameToNtPathName_U_WithStatus(PCWSTR,PUNICODE_STRING,PWSTR*,CURDIR*);
3580 NTSYSAPI ULONG WINAPI RtlDosSearchPath_U(LPCWSTR, LPCWSTR, LPCWSTR, ULONG, LPWSTR, LPWSTR*);
3581 NTSYSAPI WCHAR WINAPI RtlDowncaseUnicodeChar(WCHAR);
3582 NTSYSAPI NTSTATUS WINAPI RtlDowncaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
3583 NTSYSAPI void WINAPI RtlDumpResource(LPRTL_RWLOCK);
3584 NTSYSAPI NTSTATUS WINAPI RtlDuplicateUnicodeString(int,const UNICODE_STRING*,UNICODE_STRING*);
3585 NTSYSAPI NTSTATUS WINAPI RtlEmptyAtomTable(RTL_ATOM_TABLE,BOOLEAN);
3586 NTSYSAPI PVOID WINAPI RtlEncodePointer(PVOID);
3587 NTSYSAPI NTSTATUS WINAPI RtlEnterCriticalSection(RTL_CRITICAL_SECTION *);
3588 NTSYSAPI void WINAPI RtlEraseUnicodeString(UNICODE_STRING*);
3589 NTSYSAPI NTSTATUS WINAPI RtlEqualComputerName(const UNICODE_STRING*,const UNICODE_STRING*);
3590 NTSYSAPI NTSTATUS WINAPI RtlEqualDomainName(const UNICODE_STRING*,const UNICODE_STRING*);
3591 NTSYSAPI BOOLEAN WINAPI RtlEqualLuid(const LUID*,const LUID*);
3592 NTSYSAPI BOOL WINAPI RtlEqualPrefixSid(PSID,PSID);
3593 NTSYSAPI BOOL WINAPI RtlEqualSid(PSID,PSID);
3594 NTSYSAPI BOOLEAN WINAPI RtlEqualString(const STRING*,const STRING*,BOOLEAN);
3595 NTSYSAPI BOOLEAN WINAPI RtlEqualUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
3596 NTSYSAPI void DECLSPEC_NORETURN WINAPI RtlExitUserProcess(ULONG);
3597 NTSYSAPI void DECLSPEC_NORETURN WINAPI RtlExitUserThread(ULONG);
3598 NTSYSAPI NTSTATUS WINAPI RtlExpandEnvironmentStrings(const WCHAR*,WCHAR*,SIZE_T,WCHAR*,SIZE_T,SIZE_T*);
3599 NTSYSAPI NTSTATUS WINAPI RtlExpandEnvironmentStrings_U(PCWSTR, const UNICODE_STRING*, UNICODE_STRING*, ULONG*);
3600 NTSYSAPI NTSTATUS WINAPI RtlFindActivationContextSectionString(ULONG,const GUID*,ULONG,const UNICODE_STRING*,PVOID);
3601 NTSYSAPI NTSTATUS WINAPI RtlFindActivationContextSectionGuid(ULONG,const GUID*,ULONG,const GUID*,PVOID);
3602 NTSYSAPI NTSTATUS WINAPI RtlFindCharInUnicodeString(int,const UNICODE_STRING*,const UNICODE_STRING*,USHORT*);
3603 NTSYSAPI ULONG WINAPI RtlFindClearBits(PCRTL_BITMAP,ULONG,ULONG);
3604 NTSYSAPI ULONG WINAPI RtlFindClearBitsAndSet(PRTL_BITMAP,ULONG,ULONG);
3605 NTSYSAPI ULONG WINAPI RtlFindClearRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
3606 NTSYSAPI ULONG WINAPI RtlFindLastBackwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
3607 NTSYSAPI ULONG WINAPI RtlFindLastBackwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
3608 NTSYSAPI CCHAR WINAPI RtlFindLeastSignificantBit(ULONGLONG);
3609 NTSYSAPI ULONG WINAPI RtlFindLongestRunSet(PCRTL_BITMAP,PULONG);
3610 NTSYSAPI ULONG WINAPI RtlFindLongestRunClear(PCRTL_BITMAP,PULONG);
3611 NTSYSAPI NTSTATUS WINAPI RtlFindMessage(HMODULE,ULONG,ULONG,ULONG,const MESSAGE_RESOURCE_ENTRY**);
3612 NTSYSAPI CCHAR WINAPI RtlFindMostSignificantBit(ULONGLONG);
3613 NTSYSAPI ULONG WINAPI RtlFindNextForwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
3614 NTSYSAPI ULONG WINAPI RtlFindNextForwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
3615 NTSYSAPI ULONG WINAPI RtlFindSetBits(PCRTL_BITMAP,ULONG,ULONG);
3616 NTSYSAPI ULONG WINAPI RtlFindSetBitsAndClear(PRTL_BITMAP,ULONG,ULONG);
3617 NTSYSAPI ULONG WINAPI RtlFindSetRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
3618 NTSYSAPI BOOLEAN WINAPI RtlFirstFreeAce(PACL,PACE_HEADER *);
3619 NTSYSAPI NTSTATUS WINAPI RtlFlsAlloc(PFLS_CALLBACK_FUNCTION,ULONG *);
3620 NTSYSAPI NTSTATUS WINAPI RtlFlsFree(ULONG);
3621 NTSYSAPI NTSTATUS WINAPI RtlFlsGetValue(ULONG,void **);
3622 NTSYSAPI NTSTATUS WINAPI RtlFlsSetValue(ULONG,void *);
3623 NTSYSAPI NTSTATUS WINAPI RtlFormatCurrentUserKeyPath(PUNICODE_STRING);
3624 NTSYSAPI NTSTATUS WINAPI RtlFormatMessage(LPCWSTR,ULONG,BOOLEAN,BOOLEAN,BOOLEAN,__ms_va_list *,LPWSTR,ULONG,ULONG*);
3625 NTSYSAPI NTSTATUS WINAPI RtlFormatMessageEx(LPCWSTR,ULONG,BOOLEAN,BOOLEAN,BOOLEAN,__ms_va_list *,LPWSTR,ULONG,ULONG*,ULONG);
3626 NTSYSAPI void WINAPI RtlFreeAnsiString(PANSI_STRING);
3627 NTSYSAPI BOOLEAN WINAPI RtlFreeHandle(RTL_HANDLE_TABLE *,RTL_HANDLE *);
3628 NTSYSAPI BOOLEAN WINAPI RtlFreeHeap(HANDLE,ULONG,PVOID);
3629 NTSYSAPI void WINAPI RtlFreeOemString(POEM_STRING);
3630 NTSYSAPI DWORD WINAPI RtlFreeSid(PSID);
3631 NTSYSAPI void WINAPI RtlFreeThreadActivationContextStack(void);
3632 NTSYSAPI void WINAPI RtlFreeUnicodeString(PUNICODE_STRING);
3633 NTSYSAPI void WINAPI RtlFreeUserStack(void*);
3634 NTSYSAPI NTSTATUS WINAPI RtlGetAce(PACL,DWORD,LPVOID *);
3635 NTSYSAPI NTSTATUS WINAPI RtlGetActiveActivationContext(HANDLE*);
3636 NTSYSAPI NTSTATUS WINAPI RtlGetCompressionWorkSpaceSize(USHORT,PULONG,PULONG);
3637 NTSYSAPI NTSTATUS WINAPI RtlGetControlSecurityDescriptor(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL,LPDWORD);
3638 NTSYSAPI ULONG WINAPI RtlGetCurrentDirectory_U(ULONG, LPWSTR);
3639 NTSYSAPI PEB * WINAPI RtlGetCurrentPeb(void);
3640 NTSYSAPI NTSTATUS WINAPI RtlGetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
3641 NTSYSAPI NTSTATUS WINAPI RtlGetExePath(PCWSTR,PWSTR*);
3642 NTSYSAPI TEB_ACTIVE_FRAME * WINAPI RtlGetFrame(void);
3643 NTSYSAPI ULONG WINAPI RtlGetFullPathName_U(PCWSTR,ULONG,PWSTR,PWSTR*);
3644 NTSYSAPI NTSTATUS WINAPI RtlGetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
3645 NTSYSAPI NTSTATUS WINAPI RtlGetLastNtStatus(void);
3646 NTSYSAPI DWORD WINAPI RtlGetLastWin32Error(void);
3647 NTSYSAPI DWORD WINAPI RtlGetLongestNtPathLength(void);
3648 NTSYSAPI ULONG WINAPI RtlGetNtGlobalFlags(void);
3649 NTSYSAPI BOOLEAN WINAPI RtlGetNtProductType(LPDWORD);
3650 NTSYSAPI NTSTATUS WINAPI RtlGetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
3651 NTSYSAPI ULONG WINAPI RtlGetProcessHeaps(ULONG,HANDLE*);
3652 NTSYSAPI NTSTATUS WINAPI RtlGetProcessPreferredUILanguages(DWORD,ULONG*,WCHAR*,ULONG*);
3653 NTSYSAPI NTSTATUS WINAPI RtlGetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
3654 NTSYSAPI NTSTATUS WINAPI RtlGetSearchPath(PWSTR*);
3655 NTSYSAPI NTSTATUS WINAPI RtlGetSystemPreferredUILanguages(DWORD,ULONG,ULONG*,WCHAR*,ULONG*);
3656 NTSYSAPI LONGLONG WINAPI RtlGetSystemTimePrecise(void);
3657 NTSYSAPI DWORD WINAPI RtlGetThreadErrorMode(void);
3658 NTSYSAPI NTSTATUS WINAPI RtlGetThreadPreferredUILanguages(DWORD,ULONG*,WCHAR*,ULONG*);
3659 NTSYSAPI NTSTATUS WINAPI RtlGetUserPreferredUILanguages(DWORD,ULONG,ULONG*,WCHAR*,ULONG*);
3660 NTSYSAPI NTSTATUS WINAPI RtlGetVersion(RTL_OSVERSIONINFOEXW*);
3661 NTSYSAPI NTSTATUS WINAPI RtlGUIDFromString(PUNICODE_STRING,GUID*);
3662 NTSYSAPI PSID_IDENTIFIER_AUTHORITY WINAPI RtlIdentifierAuthoritySid(PSID);
3663 NTSYSAPI NTSTATUS WINAPI RtlIdnToAscii(DWORD,const WCHAR*,INT,WCHAR*,INT*);
3664 NTSYSAPI NTSTATUS WINAPI RtlIdnToNameprepUnicode(DWORD,const WCHAR*,INT,WCHAR*,INT*);
3665 NTSYSAPI NTSTATUS WINAPI RtlIdnToUnicode(DWORD,const WCHAR*,INT,WCHAR*,INT*);
3666 NTSYSAPI PVOID WINAPI RtlImageDirectoryEntryToData(HMODULE,BOOL,WORD,ULONG *);
3667 NTSYSAPI PIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE);
3668 NTSYSAPI PIMAGE_SECTION_HEADER WINAPI RtlImageRvaToSection(const IMAGE_NT_HEADERS *,HMODULE,DWORD);
3669 NTSYSAPI PVOID WINAPI RtlImageRvaToVa(const IMAGE_NT_HEADERS *,HMODULE,DWORD,IMAGE_SECTION_HEADER **);
3670 NTSYSAPI NTSTATUS WINAPI RtlImpersonateSelf(SECURITY_IMPERSONATION_LEVEL);
3671 NTSYSAPI void WINAPI RtlInitString(PSTRING,PCSZ);
3672 NTSYSAPI void WINAPI RtlInitAnsiString(PANSI_STRING,PCSZ);
3673 NTSYSAPI NTSTATUS WINAPI RtlInitAnsiStringEx(PANSI_STRING,PCSZ);
3674 NTSYSAPI void WINAPI RtlInitCodePageTable(USHORT*,CPTABLEINFO*);
3675 NTSYSAPI void WINAPI RtlInitNlsTables(USHORT*,USHORT*,USHORT*,NLSTABLEINFO*);
3676 NTSYSAPI void WINAPI RtlInitUnicodeString(PUNICODE_STRING,PCWSTR);
3677 NTSYSAPI NTSTATUS WINAPI RtlInitUnicodeStringEx(PUNICODE_STRING,PCWSTR);
3678 NTSYSAPI void WINAPI RtlInitializeBitMap(PRTL_BITMAP,PULONG,ULONG);
3679 NTSYSAPI void WINAPI RtlInitializeConditionVariable(RTL_CONDITION_VARIABLE *);
3680 NTSYSAPI NTSTATUS WINAPI RtlInitializeCriticalSection(RTL_CRITICAL_SECTION *);
3681 NTSYSAPI NTSTATUS WINAPI RtlInitializeCriticalSectionAndSpinCount(RTL_CRITICAL_SECTION *,ULONG);
3682 NTSYSAPI NTSTATUS WINAPI RtlInitializeCriticalSectionEx(RTL_CRITICAL_SECTION *,ULONG,ULONG);
3683 NTSYSAPI void WINAPI RtlInitializeHandleTable(ULONG,ULONG,RTL_HANDLE_TABLE *);
3684 NTSYSAPI void WINAPI RtlInitializeResource(LPRTL_RWLOCK);
3685 NTSYSAPI void WINAPI RtlInitializeSRWLock(RTL_SRWLOCK*);
3686 NTSYSAPI BOOL WINAPI RtlInitializeSid(PSID,PSID_IDENTIFIER_AUTHORITY,BYTE);
3687 NTSYSAPI NTSTATUS WINAPI RtlInt64ToUnicodeString(ULONGLONG,ULONG,UNICODE_STRING *);
3688 NTSYSAPI NTSTATUS WINAPI RtlIntegerToChar(ULONG,ULONG,ULONG,PCHAR);
3689 NTSYSAPI NTSTATUS WINAPI RtlIntegerToUnicodeString(ULONG,ULONG,UNICODE_STRING *);
3690 NTSYSAPI BOOLEAN WINAPI RtlIsActivationContextActive(HANDLE);
3691 NTSYSAPI BOOL WINAPI RtlIsCriticalSectionLocked(RTL_CRITICAL_SECTION *);
3692 NTSYSAPI BOOL WINAPI RtlIsCriticalSectionLockedByThread(RTL_CRITICAL_SECTION *);
3693 NTSYSAPI ULONG WINAPI RtlIsDosDeviceName_U(PCWSTR);
3694 NTSYSAPI BOOLEAN WINAPI RtlIsNameLegalDOS8Dot3(const UNICODE_STRING*,POEM_STRING,PBOOLEAN);
3695 NTSYSAPI NTSTATUS WINAPI RtlIsNormalizedString(ULONG,const WCHAR*,INT,BOOLEAN*);
3696 NTSYSAPI BOOLEAN WINAPI RtlIsProcessorFeaturePresent(UINT);
3697 NTSYSAPI BOOLEAN WINAPI RtlIsTextUnicode(LPCVOID,INT,INT *);
3698 NTSYSAPI BOOLEAN WINAPI RtlIsValidHandle(const RTL_HANDLE_TABLE *, const RTL_HANDLE *);
3699 NTSYSAPI BOOLEAN WINAPI RtlIsValidIndexHandle(const RTL_HANDLE_TABLE *, ULONG Index, RTL_HANDLE **);
3700 NTSYSAPI NTSTATUS WINAPI RtlLeaveCriticalSection(RTL_CRITICAL_SECTION *);
3701 NTSYSAPI DWORD WINAPI RtlLengthRequiredSid(DWORD);
3702 NTSYSAPI ULONG WINAPI RtlLengthSecurityDescriptor(PSECURITY_DESCRIPTOR);
3703 NTSYSAPI DWORD WINAPI RtlLengthSid(PSID);
3704 NTSYSAPI NTSTATUS WINAPI RtlLocalTimeToSystemTime(const LARGE_INTEGER*,PLARGE_INTEGER);
3705 NTSYSAPI NTSTATUS WINAPI RtlLocaleNameToLcid(const WCHAR*,LCID*,ULONG);
3706 NTSYSAPI BOOLEAN WINAPI RtlLockHeap(HANDLE);
3707 NTSYSAPI NTSTATUS WINAPI RtlLookupAtomInAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*);
3708 NTSYSAPI NTSTATUS WINAPI RtlMakeSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,LPDWORD);
3709 NTSYSAPI void WINAPI RtlMapGenericMask(PACCESS_MASK,const GENERIC_MAPPING*);
3710 NTSYSAPI NTSTATUS WINAPI RtlMultiByteToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
3711 NTSYSAPI NTSTATUS WINAPI RtlMultiByteToUnicodeSize(DWORD*,LPCSTR,UINT);
3712 NTSYSAPI NTSTATUS WINAPI RtlNewSecurityObject(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,BOOLEAN,HANDLE,PGENERIC_MAPPING);
3713 NTSYSAPI PRTL_USER_PROCESS_PARAMETERS WINAPI RtlNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
3714 NTSYSAPI NTSTATUS WINAPI RtlNormalizeString(ULONG,const WCHAR*,INT,WCHAR*,INT*);
3715 NTSYSAPI ULONG WINAPI RtlNtStatusToDosError(NTSTATUS);
3716 NTSYSAPI ULONG WINAPI RtlNtStatusToDosErrorNoTeb(NTSTATUS);
3717 NTSYSAPI ULONG WINAPI RtlNumberOfSetBits(PCRTL_BITMAP);
3718 NTSYSAPI ULONG WINAPI RtlNumberOfClearBits(PCRTL_BITMAP);
3719 NTSYSAPI UINT WINAPI RtlOemStringToUnicodeSize(const STRING*);
3720 NTSYSAPI NTSTATUS WINAPI RtlOemStringToUnicodeString(UNICODE_STRING*,const STRING*,BOOLEAN);
3721 NTSYSAPI NTSTATUS WINAPI RtlOemToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
3722 NTSYSAPI NTSTATUS WINAPI RtlOpenCurrentUser(ACCESS_MASK,PHANDLE);
3723 NTSYSAPI PVOID WINAPI RtlPcToFileHeader(PVOID,PVOID*);
3724 NTSYSAPI NTSTATUS WINAPI RtlPinAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
3725 NTSYSAPI void WINAPI RtlPopFrame(TEB_ACTIVE_FRAME*);
3726 NTSYSAPI BOOLEAN WINAPI RtlPrefixString(const STRING*,const STRING*,BOOLEAN);
3727 NTSYSAPI BOOLEAN WINAPI RtlPrefixUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
3728 NTSYSAPI void WINAPI RtlProcessFlsData(void*,ULONG);
3729 NTSYSAPI void WINAPI RtlPushFrame(TEB_ACTIVE_FRAME*);
3730 NTSYSAPI NTSTATUS WINAPI RtlQueryActivationContextApplicationSettings(DWORD,HANDLE,const WCHAR*,const WCHAR*,WCHAR*,SIZE_T,SIZE_T*);
3731 NTSYSAPI NTSTATUS WINAPI RtlQueryAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM,ULONG*,ULONG*,WCHAR*,ULONG*);
3732 NTSYSAPI NTSTATUS WINAPI RtlQueryDynamicTimeZoneInformation(RTL_DYNAMIC_TIME_ZONE_INFORMATION*);
3733 NTSYSAPI NTSTATUS WINAPI RtlQueryEnvironmentVariable(WCHAR*,const WCHAR*,SIZE_T,WCHAR*,SIZE_T,SIZE_T*);
3734 NTSYSAPI NTSTATUS WINAPI RtlQueryEnvironmentVariable_U(PWSTR,PUNICODE_STRING,PUNICODE_STRING);
3735 NTSYSAPI NTSTATUS WINAPI RtlQueryHeapInformation(HANDLE,HEAP_INFORMATION_CLASS,PVOID,SIZE_T,PSIZE_T);
3736 NTSYSAPI NTSTATUS WINAPI RtlQueryInformationAcl(PACL,LPVOID,DWORD,ACL_INFORMATION_CLASS);
3737 NTSYSAPI NTSTATUS WINAPI RtlQueryInformationActivationContext(ULONG,HANDLE,PVOID,ULONG,PVOID,SIZE_T,SIZE_T*);
3738 NTSYSAPI BOOL WINAPI RtlQueryPerformanceCounter(LARGE_INTEGER*);
3739 NTSYSAPI BOOL WINAPI RtlQueryPerformanceFrequency(LARGE_INTEGER*);
3740 NTSYSAPI NTSTATUS WINAPI RtlQueryProcessDebugInformation(ULONG,ULONG,PDEBUG_BUFFER);
3741 NTSYSAPI NTSTATUS WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID);
3742 NTSYSAPI NTSTATUS WINAPI RtlQueryTimeZoneInformation(RTL_TIME_ZONE_INFORMATION*);
3743 NTSYSAPI BOOL WINAPI RtlQueryUnbiasedInterruptTime(ULONGLONG*);
3744 NTSYSAPI NTSTATUS WINAPI RtlQueueWorkItem(PRTL_WORK_ITEM_ROUTINE,PVOID,ULONG);
3745 NTSYSAPI void WINAPI RtlRaiseException(PEXCEPTION_RECORD);
3746 NTSYSAPI void WINAPI RtlRaiseStatus(NTSTATUS);
3747 NTSYSAPI ULONG WINAPI RtlRandom(PULONG);
3748 NTSYSAPI PVOID WINAPI RtlReAllocateHeap(HANDLE,ULONG,PVOID,SIZE_T);
3749 NTSYSAPI NTSTATUS WINAPI RtlRegisterWait(PHANDLE,HANDLE,RTL_WAITORTIMERCALLBACKFUNC,PVOID,ULONG,ULONG);
3750 NTSYSAPI void WINAPI RtlReleaseActivationContext(HANDLE);
3751 NTSYSAPI void WINAPI RtlReleasePath(PWSTR);
3752 NTSYSAPI void WINAPI RtlReleasePebLock(void);
3753 NTSYSAPI void WINAPI RtlReleaseResource(LPRTL_RWLOCK);
3754 NTSYSAPI void WINAPI RtlReleaseSRWLockExclusive(RTL_SRWLOCK*);
3755 NTSYSAPI void WINAPI RtlReleaseSRWLockShared(RTL_SRWLOCK*);
3756 NTSYSAPI ULONG WINAPI RtlRemoveVectoredExceptionHandler(PVOID);
3757 NTSYSAPI void WINAPI RtlResetRtlTranslations(const NLSTABLEINFO*);
3758 NTSYSAPI void WINAPI RtlRestoreLastWin32Error(DWORD);
3759 NTSYSAPI void WINAPI RtlSecondsSince1970ToTime(DWORD,LARGE_INTEGER *);
3760 NTSYSAPI void WINAPI RtlSecondsSince1980ToTime(DWORD,LARGE_INTEGER *);
3761 NTSYSAPI NTSTATUS WINAPI RtlSelfRelativeToAbsoluteSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PDWORD,PACL,PDWORD,PACL,PDWORD,PSID,PDWORD,PSID,PDWORD);
3762 NTSYSAPI void WINAPI RtlSetAllBits(PRTL_BITMAP);
3763 NTSYSAPI void WINAPI RtlSetBits(PRTL_BITMAP,ULONG,ULONG);
3764 NTSYSAPI ULONG WINAPI RtlSetCriticalSectionSpinCount(RTL_CRITICAL_SECTION*,ULONG);
3765 NTSYSAPI NTSTATUS WINAPI RtlSetControlSecurityDescriptor(PSECURITY_DESCRIPTOR,SECURITY_DESCRIPTOR_CONTROL,SECURITY_DESCRIPTOR_CONTROL);
3766 NTSYSAPI NTSTATUS WINAPI RtlSetCurrentDirectory_U(const UNICODE_STRING*);
3767 NTSYSAPI void WINAPI RtlSetCurrentEnvironment(PWSTR, PWSTR*);
3768 NTSYSAPI NTSTATUS WINAPI RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
3769 NTSYSAPI NTSTATUS WINAPI RtlSetEnvironmentVariable(PWSTR*,PUNICODE_STRING,PUNICODE_STRING);
3770 NTSYSAPI NTSTATUS WINAPI RtlSetHeapInformation(HANDLE,HEAP_INFORMATION_CLASS,PVOID,SIZE_T);
3771 NTSYSAPI NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
3772 NTSYSAPI NTSTATUS WINAPI RtlSetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
3773 NTSYSAPI NTSTATUS WINAPI RtlSetIoCompletionCallback(HANDLE,PRTL_OVERLAPPED_COMPLETION_ROUTINE,ULONG);
3774 NTSYSAPI void WINAPI RtlSetLastWin32Error(DWORD);
3775 NTSYSAPI void WINAPI RtlSetLastWin32ErrorAndNtStatusFromNtStatus(NTSTATUS);
3776 NTSYSAPI NTSTATUS WINAPI RtlSetProcessPreferredUILanguages(DWORD,PCZZWSTR,ULONG*);
3777 NTSYSAPI NTSTATUS WINAPI RtlSetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
3778 NTSYSAPI NTSTATUS WINAPI RtlSetSearchPathMode(ULONG);
3779 NTSYSAPI NTSTATUS WINAPI RtlSetThreadErrorMode(DWORD,LPDWORD);
3780 NTSYSAPI NTSTATUS WINAPI RtlSetThreadPreferredUILanguages(DWORD,PCZZWSTR,ULONG*);
3781 NTSYSAPI NTSTATUS WINAPI RtlSetTimeZoneInformation(const RTL_TIME_ZONE_INFORMATION*);
3782 NTSYSAPI void WINAPI RtlSetUnhandledExceptionFilter(PRTL_EXCEPTION_FILTER);
3783 NTSYSAPI SIZE_T WINAPI RtlSizeHeap(HANDLE,ULONG,const void*);
3784 NTSYSAPI NTSTATUS WINAPI RtlSleepConditionVariableCS(RTL_CONDITION_VARIABLE*,RTL_CRITICAL_SECTION*,const LARGE_INTEGER*);
3785 NTSYSAPI NTSTATUS WINAPI RtlSleepConditionVariableSRW(RTL_CONDITION_VARIABLE*,RTL_SRWLOCK*,const LARGE_INTEGER*,ULONG);
3786 NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID,PUNICODE_STRING);
3787 NTSYSAPI LPDWORD WINAPI RtlSubAuthoritySid(PSID,DWORD);
3788 NTSYSAPI LPBYTE WINAPI RtlSubAuthorityCountSid(PSID);
3789 NTSYSAPI NTSTATUS WINAPI RtlSystemTimeToLocalTime(const LARGE_INTEGER*,PLARGE_INTEGER);
3790 NTSYSAPI void WINAPI RtlTimeToTimeFields(const LARGE_INTEGER*,PTIME_FIELDS);
3791 NTSYSAPI BOOLEAN WINAPI RtlTimeFieldsToTime(PTIME_FIELDS,PLARGE_INTEGER);
3792 NTSYSAPI void WINAPI RtlTimeToElapsedTimeFields(const LARGE_INTEGER *,PTIME_FIELDS);
3793 NTSYSAPI BOOLEAN WINAPI RtlTimeToSecondsSince1970(const LARGE_INTEGER *,LPDWORD);
3794 NTSYSAPI BOOLEAN WINAPI RtlTimeToSecondsSince1980(const LARGE_INTEGER *,LPDWORD);
3795 NTSYSAPI BOOLEAN WINAPI RtlTryAcquireSRWLockExclusive(RTL_SRWLOCK *);
3796 NTSYSAPI BOOLEAN WINAPI RtlTryAcquireSRWLockShared(RTL_SRWLOCK *);
3797 NTSYSAPI BOOL WINAPI RtlTryEnterCriticalSection(RTL_CRITICAL_SECTION *);
3798 NTSYSAPI NTSTATUS WINAPI RtlUTF8ToUnicodeN(WCHAR*,DWORD,DWORD*,const char*,DWORD);
3799 NTSYSAPI ULONGLONG __cdecl RtlUlonglongByteSwap(ULONGLONG);
3800 NTSYSAPI DWORD WINAPI RtlUnicodeStringToAnsiSize(const UNICODE_STRING*);
3801 NTSYSAPI NTSTATUS WINAPI RtlUnicodeStringToAnsiString(PANSI_STRING,PCUNICODE_STRING,BOOLEAN);
3802 NTSYSAPI NTSTATUS WINAPI RtlUnicodeStringToInteger(const UNICODE_STRING *,ULONG,ULONG *);
3803 NTSYSAPI DWORD WINAPI RtlUnicodeStringToOemSize(const UNICODE_STRING*);
3804 NTSYSAPI NTSTATUS WINAPI RtlUnicodeStringToOemString(POEM_STRING,PCUNICODE_STRING,BOOLEAN);
3805 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToCustomCPN(CPTABLEINFO*,char*,DWORD,DWORD*,const WCHAR*,DWORD);
3806 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
3807 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToMultiByteSize(PULONG,PCWSTR,ULONG);
3808 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
3809 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToUTF8N(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
3810 NTSYSAPI ULONG WINAPI RtlUniform(PULONG);
3811 NTSYSAPI BOOLEAN WINAPI RtlUnlockHeap(HANDLE);
3812 NTSYSAPI void WINAPI RtlUnwind(PVOID,PVOID,PEXCEPTION_RECORD,PVOID);
3813 #ifdef __x86_64__
3814 NTSYSAPI void WINAPI RtlUnwindEx(PVOID,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT,PUNWIND_HISTORY_TABLE);
3815 #elif defined(__ia64__)
3816 NTSYSAPI void WINAPI RtlUnwind2(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT);
3817 NTSYSAPI void WINAPI RtlUnwindEx(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT,PUNWIND_HISTORY_TABLE);
3818 #endif
3819 NTSYSAPI WCHAR WINAPI RtlUpcaseUnicodeChar(WCHAR);
3820 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING *,BOOLEAN);
3821 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToAnsiString(STRING*,const UNICODE_STRING*,BOOLEAN);
3822 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToCountedOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
3823 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
3824 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeToCustomCPN(CPTABLEINFO*,char*,DWORD,DWORD*,const WCHAR*,DWORD);
3825 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
3826 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
3827 NTSYSAPI NTSTATUS WINAPI RtlUpdateTimer(HANDLE, HANDLE, DWORD, DWORD);
3828 NTSYSAPI CHAR WINAPI RtlUpperChar(CHAR);
3829 NTSYSAPI void WINAPI RtlUpperString(STRING *,const STRING *);
3830 NTSYSAPI void WINAPI RtlUserThreadStart(PRTL_THREAD_START_ROUTINE,void*);
3831 NTSYSAPI NTSTATUS WINAPI RtlValidSecurityDescriptor(PSECURITY_DESCRIPTOR);
3832 NTSYSAPI BOOLEAN WINAPI RtlValidRelativeSecurityDescriptor(PSECURITY_DESCRIPTOR,ULONG,SECURITY_INFORMATION);
3833 NTSYSAPI BOOLEAN WINAPI RtlValidAcl(PACL);
3834 NTSYSAPI BOOLEAN WINAPI RtlValidSid(PSID);
3835 NTSYSAPI BOOLEAN WINAPI RtlValidateHeap(HANDLE,ULONG,LPCVOID);
3836 NTSYSAPI NTSTATUS WINAPI RtlVerifyVersionInfo(const RTL_OSVERSIONINFOEXW*,DWORD,DWORDLONG);
3837 NTSYSAPI NTSTATUS WINAPI RtlWaitOnAddress(const void *,const void *,SIZE_T,const LARGE_INTEGER *);
3838 NTSYSAPI void WINAPI RtlWakeAddressAll(const void *);
3839 NTSYSAPI void WINAPI RtlWakeAddressSingle(const void *);
3840 NTSYSAPI void WINAPI RtlWakeAllConditionVariable(RTL_CONDITION_VARIABLE *);
3841 NTSYSAPI void WINAPI RtlWakeConditionVariable(RTL_CONDITION_VARIABLE *);
3842 NTSYSAPI NTSTATUS WINAPI RtlWalkHeap(HANDLE,PVOID);
3843 NTSYSAPI NTSTATUS WINAPI RtlWow64EnableFsRedirection(BOOLEAN);
3844 NTSYSAPI NTSTATUS WINAPI RtlWow64EnableFsRedirectionEx(ULONG,ULONG*);
3845 #ifdef __x86_64__
3846 NTSYSAPI NTSTATUS WINAPI RtlWow64GetThreadContext(HANDLE, WOW64_CONTEXT *);
3847 NTSYSAPI NTSTATUS WINAPI RtlWow64SetThreadContext(HANDLE, const WOW64_CONTEXT *);
3848 #endif
3849 NTSYSAPI NTSTATUS WINAPI RtlWriteRegistryValue(ULONG,PCWSTR,PCWSTR,ULONG,PVOID,ULONG);
3850 NTSYSAPI NTSTATUS WINAPI RtlZombifyActivationContext(HANDLE);
3851 NTSYSAPI NTSTATUS WINAPI RtlpNtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
3852 NTSYSAPI NTSTATUS WINAPI RtlpNtEnumerateSubKey(HANDLE,UNICODE_STRING *, ULONG);
3853 NTSYSAPI NTSTATUS WINAPI RtlpWaitForCriticalSection(RTL_CRITICAL_SECTION *);
3854 NTSYSAPI NTSTATUS WINAPI RtlpUnWaitCriticalSection(RTL_CRITICAL_SECTION *);
3855 NTSYSAPI NTSTATUS WINAPI vDbgPrintEx(ULONG,ULONG,LPCSTR,__ms_va_list);
3856 NTSYSAPI NTSTATUS WINAPI vDbgPrintExWithPrefix(LPCSTR,ULONG,ULONG,LPCSTR,__ms_va_list);
3858 #if defined(__x86_64__) || defined(__i386__)
3859 NTSYSAPI NTSTATUS WINAPI RtlCopyExtendedContext(CONTEXT_EX*,ULONG,CONTEXT_EX*);
3860 NTSYSAPI NTSTATUS WINAPI RtlInitializeExtendedContext(void*,ULONG,CONTEXT_EX**);
3861 NTSYSAPI NTSTATUS WINAPI RtlInitializeExtendedContext2(void*,ULONG,CONTEXT_EX**,ULONG64);
3862 NTSYSAPI ULONG64 WINAPI RtlGetEnabledExtendedFeatures(ULONG64);
3863 NTSYSAPI NTSTATUS WINAPI RtlGetExtendedContextLength(ULONG,ULONG*);
3864 NTSYSAPI NTSTATUS WINAPI RtlGetExtendedContextLength2(ULONG,ULONG*,ULONG64);
3865 NTSYSAPI void * WINAPI RtlLocateLegacyContext(CONTEXT_EX*,ULONG*);
3866 NTSYSAPI void * WINAPI RtlLocateExtendedFeature(CONTEXT_EX*,ULONG,ULONG*);
3867 NTSYSAPI void * WINAPI RtlLocateExtendedFeature2(CONTEXT_EX*,ULONG,XSTATE_CONFIGURATION*,ULONG*);
3868 NTSYSAPI ULONG64 WINAPI RtlGetExtendedFeaturesMask(CONTEXT_EX*);
3869 NTSYSAPI void WINAPI RtlSetExtendedFeaturesMask(CONTEXT_EX*,ULONG64);
3870 #endif
3872 #ifndef __WINE_USE_MSVCRT
3873 NTSYSAPI int __cdecl _strnicmp(LPCSTR,LPCSTR,size_t);
3874 #endif
3876 /* 32-bit only functions */
3878 #ifndef _WIN64
3879 NTSYSAPI LONGLONG WINAPI RtlConvertLongToLargeInteger(LONG);
3880 NTSYSAPI ULONGLONG WINAPI RtlConvertUlongToLargeInteger(ULONG);
3881 NTSYSAPI LONGLONG WINAPI RtlEnlargedIntegerMultiply(INT,INT);
3882 NTSYSAPI ULONGLONG WINAPI RtlEnlargedUnsignedMultiply(UINT,UINT);
3883 NTSYSAPI UINT WINAPI RtlEnlargedUnsignedDivide(ULONGLONG,UINT,UINT *);
3884 NTSYSAPI LONGLONG WINAPI RtlExtendedMagicDivide(LONGLONG,LONGLONG,INT);
3885 NTSYSAPI LONGLONG WINAPI RtlExtendedIntegerMultiply(LONGLONG,INT);
3886 NTSYSAPI LONGLONG WINAPI RtlExtendedLargeIntegerDivide(LONGLONG,INT,INT *);
3887 NTSYSAPI LONGLONG WINAPI RtlInterlockedCompareExchange64(LONGLONG*,LONGLONG,LONGLONG);
3888 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerAdd(LONGLONG,LONGLONG);
3889 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerArithmeticShift(LONGLONG,INT);
3890 NTSYSAPI ULONGLONG WINAPI RtlLargeIntegerDivide( ULONGLONG,ULONGLONG,ULONGLONG *);
3891 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerNegate(LONGLONG);
3892 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerShiftLeft(LONGLONG,INT);
3893 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerShiftRight(LONGLONG,INT);
3894 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerSubtract(LONGLONG,LONGLONG);
3895 NTSYSAPI NTSTATUS WINAPI RtlLargeIntegerToChar(const ULONGLONG *,ULONG,ULONG,PCHAR);
3896 #endif
3898 /* Threadpool functions */
3900 NTSYSAPI NTSTATUS WINAPI TpAllocCleanupGroup(TP_CLEANUP_GROUP **);
3901 NTSYSAPI NTSTATUS WINAPI TpAllocIoCompletion(TP_IO **,HANDLE,PTP_IO_CALLBACK,void *,TP_CALLBACK_ENVIRON *);
3902 NTSYSAPI NTSTATUS WINAPI TpAllocPool(TP_POOL **,PVOID);
3903 NTSYSAPI NTSTATUS WINAPI TpAllocTimer(TP_TIMER **,PTP_TIMER_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *);
3904 NTSYSAPI NTSTATUS WINAPI TpAllocWait(TP_WAIT **,PTP_WAIT_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *);
3905 NTSYSAPI NTSTATUS WINAPI TpAllocWork(TP_WORK **,PTP_WORK_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *);
3906 NTSYSAPI void WINAPI TpCallbackLeaveCriticalSectionOnCompletion(TP_CALLBACK_INSTANCE *,RTL_CRITICAL_SECTION *);
3907 NTSYSAPI NTSTATUS WINAPI TpCallbackMayRunLong(TP_CALLBACK_INSTANCE *);
3908 NTSYSAPI void WINAPI TpCallbackReleaseMutexOnCompletion(TP_CALLBACK_INSTANCE *,HANDLE);
3909 NTSYSAPI void WINAPI TpCallbackReleaseSemaphoreOnCompletion(TP_CALLBACK_INSTANCE *,HANDLE,DWORD);
3910 NTSYSAPI void WINAPI TpCallbackSetEventOnCompletion(TP_CALLBACK_INSTANCE *,HANDLE);
3911 NTSYSAPI void WINAPI TpCallbackUnloadDllOnCompletion(TP_CALLBACK_INSTANCE *,HMODULE);
3912 NTSYSAPI void WINAPI TpCancelAsyncIoOperation(TP_IO *);
3913 NTSYSAPI void WINAPI TpDisassociateCallback(TP_CALLBACK_INSTANCE *);
3914 NTSYSAPI BOOL WINAPI TpIsTimerSet(TP_TIMER *);
3915 NTSYSAPI void WINAPI TpPostWork(TP_WORK *);
3916 NTSYSAPI NTSTATUS WINAPI TpQueryPoolStackInformation(TP_POOL *, TP_POOL_STACK_INFORMATION *stack_info);
3917 NTSYSAPI void WINAPI TpReleaseCleanupGroup(TP_CLEANUP_GROUP *);
3918 NTSYSAPI void WINAPI TpReleaseCleanupGroupMembers(TP_CLEANUP_GROUP *,BOOL,PVOID);
3919 NTSYSAPI void WINAPI TpReleaseIoCompletion(TP_IO *);
3920 NTSYSAPI void WINAPI TpReleasePool(TP_POOL *);
3921 NTSYSAPI void WINAPI TpReleaseTimer(TP_TIMER *);
3922 NTSYSAPI void WINAPI TpReleaseWait(TP_WAIT *);
3923 NTSYSAPI void WINAPI TpReleaseWork(TP_WORK *);
3924 NTSYSAPI void WINAPI TpSetPoolMaxThreads(TP_POOL *,DWORD);
3925 NTSYSAPI BOOL WINAPI TpSetPoolMinThreads(TP_POOL *,DWORD);
3926 NTSYSAPI NTSTATUS WINAPI TpSetPoolStackInformation(TP_POOL *, TP_POOL_STACK_INFORMATION *stack_info);
3927 NTSYSAPI void WINAPI TpSetTimer(TP_TIMER *, LARGE_INTEGER *,LONG,LONG);
3928 NTSYSAPI void WINAPI TpSetWait(TP_WAIT *,HANDLE,LARGE_INTEGER *);
3929 NTSYSAPI NTSTATUS WINAPI TpSimpleTryPost(PTP_SIMPLE_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *);
3930 NTSYSAPI void WINAPI TpStartAsyncIoOperation(TP_IO *);
3931 NTSYSAPI void WINAPI TpWaitForIoCompletion(TP_IO *,BOOL);
3932 NTSYSAPI void WINAPI TpWaitForTimer(TP_TIMER *,BOOL);
3933 NTSYSAPI void WINAPI TpWaitForWait(TP_WAIT *,BOOL);
3934 NTSYSAPI void WINAPI TpWaitForWork(TP_WORK *,BOOL);
3936 /* Wine internal functions */
3938 NTSYSAPI NTSTATUS CDECL wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, char *nameA, SIZE_T *size,
3939 UINT disposition );
3940 NTSYSAPI NTSTATUS CDECL wine_unix_to_nt_file_name( const char *name, WCHAR *buffer, SIZE_T *size );
3943 /***********************************************************************
3944 * Inline functions
3947 #define InitializeObjectAttributes(p,n,a,r,s) \
3948 do { \
3949 (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
3950 (p)->RootDirectory = r; \
3951 (p)->Attributes = a; \
3952 (p)->ObjectName = n; \
3953 (p)->SecurityDescriptor = s; \
3954 (p)->SecurityQualityOfService = NULL; \
3955 } while (0)
3957 #define NtCurrentProcess() ((HANDLE)-1)
3959 #define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length))
3960 #define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length))
3961 #define RtlStoreUlong(p,v) do { ULONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
3962 #define RtlStoreUlonglong(p,v) do { ULONGLONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
3963 #define RtlRetrieveUlong(p,s) memcpy((p), (s), sizeof(ULONG))
3964 #define RtlRetrieveUlonglong(p,s) memcpy((p), (s), sizeof(ULONGLONG))
3965 #define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))
3967 static inline BOOLEAN RtlCheckBit(PCRTL_BITMAP lpBits, ULONG ulBit)
3969 if (lpBits && ulBit < lpBits->SizeOfBitMap &&
3970 lpBits->Buffer[ulBit >> 5] & (1 << (ulBit & 31)))
3971 return TRUE;
3972 return FALSE;
3975 /* These are implemented as __fastcall, so we can't let Winelib apps link with them */
3976 static inline USHORT RtlUshortByteSwap(USHORT s)
3978 return (s >> 8) | (s << 8);
3980 static inline ULONG RtlUlongByteSwap(ULONG i)
3982 #if defined(__i386__) && defined(__GNUC__)
3983 ULONG ret;
3984 __asm__("bswap %0" : "=r" (ret) : "0" (i) );
3985 return ret;
3986 #else
3987 return ((ULONG)RtlUshortByteSwap((USHORT)i) << 16) | RtlUshortByteSwap((USHORT)(i >> 16));
3988 #endif
3991 /* list manipulation macros */
3992 #define InitializeListHead(le) (void)((le)->Flink = (le)->Blink = (le))
3993 #define InsertHeadList(le,e) do { PLIST_ENTRY f = (le)->Flink; (e)->Flink = f; (e)->Blink = (le); f->Blink = (e); (le)->Flink = (e); } while (0)
3994 #define InsertTailList(le,e) do { PLIST_ENTRY b = (le)->Blink; (e)->Flink = (le); (e)->Blink = b; b->Flink = (e); (le)->Blink = (e); } while (0)
3995 #define IsListEmpty(le) ((le)->Flink == (le))
3996 #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)
3997 static inline PLIST_ENTRY RemoveHeadList(PLIST_ENTRY le)
3999 PLIST_ENTRY f, b, e;
4001 e = le->Flink;
4002 f = le->Flink->Flink;
4003 b = le->Flink->Blink;
4004 f->Blink = b;
4005 b->Flink = f;
4007 if (e != le) e->Flink = e->Blink = NULL;
4008 return e;
4010 static inline PLIST_ENTRY RemoveTailList(PLIST_ENTRY le)
4012 PLIST_ENTRY f, b, e;
4014 e = le->Blink;
4015 f = le->Blink->Flink;
4016 b = le->Blink->Blink;
4017 f->Blink = b;
4018 b->Flink = f;
4020 if (e != le) e->Flink = e->Blink = NULL;
4021 return e;
4025 #ifdef __WINESRC__
4027 /* Wine internal functions */
4028 extern NTSTATUS CDECL __wine_init_unix_lib( HMODULE module, DWORD reason, const void *ptr_in, void *ptr_out );
4030 /* The thread information for 16-bit threads */
4031 /* NtCurrentTeb()->SubSystemTib points to this */
4032 typedef struct
4034 void *unknown; /* 00 unknown */
4035 UNICODE_STRING *exe_name; /* 04 exe module name */
4037 /* the following fields do not exist under Windows */
4038 UNICODE_STRING exe_str; /* exe name string pointed to by exe_name */
4039 CURDIR curdir; /* current directory */
4040 WCHAR curdir_buffer[MAX_PATH];
4041 } WIN16_SUBSYSTEM_TIB;
4043 #endif /* __WINESRC__ */
4045 #ifdef __cplusplus
4046 } /* extern "C" */
4047 #endif /* defined(__cplusplus) */
4049 #endif /* __WINE_WINTERNL_H */