crypt32: Check CRYPT_ConstructBitBlob() return value in CRYPT_ExportKeyTrans().
[wine.git] / include / winternl.h
blobb3fbb90feff8acf44e853e26ce26df76737a696e
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 } RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;
204 /* value for Flags field (FIXME: not the correct name) */
205 #define PROCESS_PARAMS_FLAG_NORMALIZED 1
207 typedef struct _PEB_LDR_DATA
209 ULONG Length;
210 BOOLEAN Initialized;
211 PVOID SsHandle;
212 LIST_ENTRY InLoadOrderModuleList;
213 LIST_ENTRY InMemoryOrderModuleList;
214 LIST_ENTRY InInitializationOrderModuleList;
215 PVOID EntryInProgress;
216 BOOLEAN ShutdownInProgress;
217 HANDLE ShutdownThreadId;
218 } PEB_LDR_DATA, *PPEB_LDR_DATA;
220 typedef struct _GDI_TEB_BATCH
222 ULONG Offset;
223 HANDLE HDC;
224 ULONG Buffer[0x136];
225 } GDI_TEB_BATCH;
227 typedef struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME
229 struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME *Previous;
230 struct _ACTIVATION_CONTEXT *ActivationContext;
231 ULONG Flags;
232 } RTL_ACTIVATION_CONTEXT_STACK_FRAME, *PRTL_ACTIVATION_CONTEXT_STACK_FRAME;
234 typedef struct _ACTIVATION_CONTEXT_STACK
236 ULONG Flags;
237 ULONG NextCookieSequenceNumber;
238 RTL_ACTIVATION_CONTEXT_STACK_FRAME *ActiveFrame;
239 LIST_ENTRY FrameListCache;
240 } ACTIVATION_CONTEXT_STACK, *PACTIVATION_CONTEXT_STACK;
242 typedef struct _TEB_ACTIVE_FRAME_CONTEXT
244 ULONG Flags;
245 const char *FrameName;
246 } TEB_ACTIVE_FRAME_CONTEXT, *PTEB_ACTIVE_FRAME_CONTEXT;
248 typedef struct _TEB_ACTIVE_FRAME_CONTEXT_EX
250 TEB_ACTIVE_FRAME_CONTEXT BasicContext;
251 const char *SourceLocation;
252 } TEB_ACTIVE_FRAME_CONTEXT_EX, *PTEB_ACTIVE_FRAME_CONTEXT_EX;
254 typedef struct _TEB_ACTIVE_FRAME
256 ULONG Flags;
257 struct _TEB_ACTIVE_FRAME *Previous;
258 TEB_ACTIVE_FRAME_CONTEXT *Context;
259 } TEB_ACTIVE_FRAME, *PTEB_ACTIVE_FRAME;
261 typedef struct _TEB_ACTIVE_FRAME_EX
263 TEB_ACTIVE_FRAME BasicFrame;
264 void *ExtensionIdentifier;
265 } TEB_ACTIVE_FRAME_EX, *PTEB_ACTIVE_FRAME_EX;
267 #define TEB_ACTIVE_FRAME_CONTEXT_FLAG_EXTENDED 0x00000001
268 #define TEB_ACTIVE_FRAME_FLAG_EXTENDED 0x00000001
270 /***********************************************************************
271 * PEB data structure
273 typedef struct _PEB
274 { /* win32/win64 */
275 BOOLEAN InheritedAddressSpace; /* 000/000 */
276 BOOLEAN ReadImageFileExecOptions; /* 001/001 */
277 BOOLEAN BeingDebugged; /* 002/002 */
278 BOOLEAN SpareBool; /* 003/003 */
279 HANDLE Mutant; /* 004/008 */
280 HMODULE ImageBaseAddress; /* 008/010 */
281 PPEB_LDR_DATA LdrData; /* 00c/018 */
282 RTL_USER_PROCESS_PARAMETERS *ProcessParameters; /* 010/020 */
283 PVOID SubSystemData; /* 014/028 */
284 HANDLE ProcessHeap; /* 018/030 */
285 PRTL_CRITICAL_SECTION FastPebLock; /* 01c/038 */
286 PVOID /*PPEBLOCKROUTINE*/ FastPebLockRoutine; /* 020/040 */
287 PVOID /*PPEBLOCKROUTINE*/ FastPebUnlockRoutine; /* 024/048 */
288 ULONG EnvironmentUpdateCount; /* 028/050 */
289 PVOID KernelCallbackTable; /* 02c/058 */
290 ULONG Reserved[2]; /* 030/060 */
291 PVOID /*PPEB_FREE_BLOCK*/ FreeList; /* 038/068 */
292 ULONG TlsExpansionCounter; /* 03c/070 */
293 PRTL_BITMAP TlsBitmap; /* 040/078 */
294 ULONG TlsBitmapBits[2]; /* 044/080 */
295 PVOID ReadOnlySharedMemoryBase; /* 04c/088 */
296 PVOID ReadOnlySharedMemoryHeap; /* 050/090 */
297 PVOID *ReadOnlyStaticServerData; /* 054/098 */
298 PVOID AnsiCodePageData; /* 058/0a0 */
299 PVOID OemCodePageData; /* 05c/0a8 */
300 PVOID UnicodeCaseTableData; /* 060/0b0 */
301 ULONG NumberOfProcessors; /* 064/0b8 */
302 ULONG NtGlobalFlag; /* 068/0bc */
303 LARGE_INTEGER CriticalSectionTimeout; /* 070/0c0 */
304 SIZE_T HeapSegmentReserve; /* 078/0c8 */
305 SIZE_T HeapSegmentCommit; /* 07c/0d0 */
306 SIZE_T HeapDeCommitTotalFreeThreshold; /* 080/0d8 */
307 SIZE_T HeapDeCommitFreeBlockThreshold; /* 084/0e0 */
308 ULONG NumberOfHeaps; /* 088/0e8 */
309 ULONG MaximumNumberOfHeaps; /* 08c/0ec */
310 PVOID *ProcessHeaps; /* 090/0f0 */
311 PVOID GdiSharedHandleTable; /* 094/0f8 */
312 PVOID ProcessStarterHelper; /* 098/100 */
313 PVOID GdiDCAttributeList; /* 09c/108 */
314 PVOID LoaderLock; /* 0a0/110 */
315 ULONG OSMajorVersion; /* 0a4/118 */
316 ULONG OSMinorVersion; /* 0a8/11c */
317 ULONG OSBuildNumber; /* 0ac/120 */
318 ULONG OSPlatformId; /* 0b0/124 */
319 ULONG ImageSubSystem; /* 0b4/128 */
320 ULONG ImageSubSystemMajorVersion; /* 0b8/12c */
321 ULONG ImageSubSystemMinorVersion; /* 0bc/130 */
322 ULONG ImageProcessAffinityMask; /* 0c0/134 */
323 HANDLE GdiHandleBuffer[28]; /* 0c4/138 */
324 ULONG unknown[6]; /* 134/218 */
325 PVOID PostProcessInitRoutine; /* 14c/230 */
326 PRTL_BITMAP TlsExpansionBitmap; /* 150/238 */
327 ULONG TlsExpansionBitmapBits[32]; /* 154/240 */
328 ULONG SessionId; /* 1d4/2c0 */
329 ULARGE_INTEGER AppCompatFlags; /* 1d8/2c8 */
330 ULARGE_INTEGER AppCompatFlagsUser; /* 1e0/2d0 */
331 PVOID ShimData; /* 1e8/2d8 */
332 PVOID AppCompatInfo; /* 1ec/2e0 */
333 UNICODE_STRING CSDVersion; /* 1f0/2e8 */
334 PVOID ActivationContextData; /* 1f8/2f8 */
335 PVOID ProcessAssemblyStorageMap; /* 1fc/300 */
336 PVOID SystemDefaultActivationData; /* 200/308 */
337 PVOID SystemAssemblyStorageMap; /* 204/310 */
338 SIZE_T MinimumStackCommit; /* 208/318 */
339 PVOID *FlsCallback; /* 20c/320 */
340 LIST_ENTRY FlsListHead; /* 210/328 */
341 PRTL_BITMAP FlsBitmap; /* 218/338 */
342 ULONG FlsBitmapBits[4]; /* 21c/340 */
343 } PEB, *PPEB;
346 /***********************************************************************
347 * TEB data structure
349 typedef struct _TEB
350 { /* win32/win64 */
351 NT_TIB Tib; /* 000/0000 */
352 PVOID EnvironmentPointer; /* 01c/0038 */
353 CLIENT_ID ClientId; /* 020/0040 */
354 PVOID ActiveRpcHandle; /* 028/0050 */
355 PVOID ThreadLocalStoragePointer; /* 02c/0058 */
356 PPEB Peb; /* 030/0060 */
357 ULONG LastErrorValue; /* 034/0068 */
358 ULONG CountOfOwnedCriticalSections; /* 038/006c */
359 PVOID CsrClientThread; /* 03c/0070 */
360 PVOID Win32ThreadInfo; /* 040/0078 */
361 ULONG Win32ClientInfo[31]; /* 044/0080 used for user32 private data in Wine */
362 PVOID WOW32Reserved; /* 0c0/0100 */
363 ULONG CurrentLocale; /* 0c4/0108 */
364 ULONG FpSoftwareStatusRegister; /* 0c8/010c */
365 PVOID SystemReserved1[54]; /* 0cc/0110 used for kernel32 private data in Wine */
366 LONG ExceptionCode; /* 1a4/02c0 */
367 ACTIVATION_CONTEXT_STACK ActivationContextStack; /* 1a8/02c8 */
368 BYTE SpareBytes1[24]; /* 1bc/02e8 */
369 PVOID SystemReserved2[10]; /* 1d4/0300 used for ntdll platform-specific private data in Wine */
370 GDI_TEB_BATCH GdiTebBatch; /* 1fc/0350 used for ntdll private data in Wine */
371 HANDLE gdiRgn; /* 6dc/0838 */
372 HANDLE gdiPen; /* 6e0/0840 */
373 HANDLE gdiBrush; /* 6e4/0848 */
374 CLIENT_ID RealClientId; /* 6e8/0850 */
375 HANDLE GdiCachedProcessHandle; /* 6f0/0860 */
376 ULONG GdiClientPID; /* 6f4/0868 */
377 ULONG GdiClientTID; /* 6f8/086c */
378 PVOID GdiThreadLocaleInfo; /* 6fc/0870 */
379 ULONG UserReserved[5]; /* 700/0878 */
380 PVOID glDispatchTable[280]; /* 714/0890 */
381 PVOID glReserved1[26]; /* b74/1150 */
382 PVOID glReserved2; /* bdc/1220 */
383 PVOID glSectionInfo; /* be0/1228 */
384 PVOID glSection; /* be4/1230 */
385 PVOID glTable; /* be8/1238 */
386 PVOID glCurrentRC; /* bec/1240 */
387 PVOID glContext; /* bf0/1248 */
388 ULONG LastStatusValue; /* bf4/1250 */
389 UNICODE_STRING StaticUnicodeString; /* bf8/1258 used by advapi32 */
390 WCHAR StaticUnicodeBuffer[261]; /* c00/1268 used by advapi32 */
391 PVOID DeallocationStack; /* e0c/1478 */
392 PVOID TlsSlots[64]; /* e10/1480 */
393 LIST_ENTRY TlsLinks; /* f10/1680 */
394 PVOID Vdm; /* f18/1690 */
395 PVOID ReservedForNtRpc; /* f1c/1698 */
396 PVOID DbgSsReserved[2]; /* f20/16a0 */
397 ULONG HardErrorDisabled; /* f28/16b0 */
398 PVOID Instrumentation[16]; /* f2c/16b8 */
399 PVOID WinSockData; /* f6c/1738 */
400 ULONG GdiBatchCount; /* f70/1740 */
401 ULONG Spare2; /* f74/1744 */
402 ULONG GuaranteedStackBytes; /* f78/1748 */
403 PVOID ReservedForPerf; /* f7c/1750 */
404 PVOID ReservedForOle; /* f80/1758 */
405 ULONG WaitingOnLoaderLock; /* f84/1760 */
406 PVOID Reserved5[3]; /* f88/1768 */
407 PVOID *TlsExpansionSlots; /* f94/1780 */
408 #ifdef _WIN64
409 PVOID DeallocationBStore; /* /1788 */
410 PVOID BStoreLimit; /* /1790 */
411 #endif
412 ULONG ImpersonationLocale; /* f98/1798 */
413 ULONG IsImpersonating; /* f9c/179c */
414 PVOID NlsCache; /* fa0/17a0 */
415 PVOID ShimData; /* fa4/17a8 */
416 ULONG HeapVirtualAffinity; /* fa8/17b0 */
417 PVOID CurrentTransactionHandle; /* fac/17b8 */
418 TEB_ACTIVE_FRAME *ActiveFrame; /* fb0/17c0 */
419 PVOID *FlsSlots; /* fb4/17c8 */
420 } TEB, *PTEB;
422 /***********************************************************************
423 * Enums
426 typedef enum _FILE_INFORMATION_CLASS {
427 FileDirectoryInformation = 1,
428 FileFullDirectoryInformation,
429 FileBothDirectoryInformation,
430 FileBasicInformation,
431 FileStandardInformation,
432 FileInternalInformation,
433 FileEaInformation,
434 FileAccessInformation,
435 FileNameInformation,
436 FileRenameInformation,
437 FileLinkInformation,
438 FileNamesInformation,
439 FileDispositionInformation,
440 FilePositionInformation,
441 FileFullEaInformation,
442 FileModeInformation,
443 FileAlignmentInformation,
444 FileAllInformation,
445 FileAllocationInformation,
446 FileEndOfFileInformation,
447 FileAlternateNameInformation,
448 FileStreamInformation,
449 FilePipeInformation,
450 FilePipeLocalInformation,
451 FilePipeRemoteInformation,
452 FileMailslotQueryInformation,
453 FileMailslotSetInformation,
454 FileCompressionInformation,
455 FileObjectIdInformation,
456 FileCompletionInformation,
457 FileMoveClusterInformation,
458 FileQuotaInformation,
459 FileReparsePointInformation,
460 FileNetworkOpenInformation,
461 FileAttributeTagInformation,
462 FileTrackingInformation,
463 FileIdBothDirectoryInformation,
464 FileIdFullDirectoryInformation,
465 FileValidDataLengthInformation,
466 FileShortNameInformation,
467 FileIoCompletionNotificationInformation,
468 FileIoStatusBlockRangeInformation,
469 FileIoPriorityHintInformation,
470 FileSfioReserveInformation,
471 FileSfioVolumeInformation,
472 FileHardLinkInformation,
473 FileProcessIdsUsingFileInformation,
474 FileNormalizedNameInformation,
475 FileNetworkPhysicalNameInformation,
476 FileIdGlobalTxDirectoryInformation,
477 FileIsRemoteDeviceInformation,
478 FileAttributeCacheInformation,
479 FileNumaNodeInformation,
480 FileStandardLinkInformation,
481 FileRemoteProtocolInformation,
482 FileRenameInformationBypassAccessCheck,
483 FileLinkInformationBypassAccessCheck,
484 FileVolumeNameInformation,
485 FileIdInformation,
486 FileIdExtdDirectoryInformation,
487 FileReplaceCompletionInformation,
488 FileHardLinkFullIdInformation,
489 FileIdExtdBothDirectoryInformation,
490 FileMaximumInformation
491 } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
493 typedef struct _FILE_DIRECTORY_INFORMATION {
494 ULONG NextEntryOffset;
495 ULONG FileIndex;
496 LARGE_INTEGER CreationTime;
497 LARGE_INTEGER LastAccessTime;
498 LARGE_INTEGER LastWriteTime;
499 LARGE_INTEGER ChangeTime;
500 LARGE_INTEGER EndOfFile;
501 LARGE_INTEGER AllocationSize;
502 ULONG FileAttributes;
503 ULONG FileNameLength;
504 WCHAR FileName[ANYSIZE_ARRAY];
505 } FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION;
507 typedef struct _FILE_FULL_DIRECTORY_INFORMATION {
508 ULONG NextEntryOffset;
509 ULONG FileIndex;
510 LARGE_INTEGER CreationTime;
511 LARGE_INTEGER LastAccessTime;
512 LARGE_INTEGER LastWriteTime;
513 LARGE_INTEGER ChangeTime;
514 LARGE_INTEGER EndOfFile;
515 LARGE_INTEGER AllocationSize;
516 ULONG FileAttributes;
517 ULONG FileNameLength;
518 ULONG EaSize;
519 WCHAR FileName[ANYSIZE_ARRAY];
520 } FILE_FULL_DIRECTORY_INFORMATION, *PFILE_FULL_DIRECTORY_INFORMATION,
521 FILE_FULL_DIR_INFORMATION, *PFILE_FULL_DIR_INFORMATION;
523 typedef struct _FILE_ID_FULL_DIRECTORY_INFORMATION {
524 ULONG NextEntryOffset;
525 ULONG FileIndex;
526 LARGE_INTEGER CreationTime;
527 LARGE_INTEGER LastAccessTime;
528 LARGE_INTEGER LastWriteTime;
529 LARGE_INTEGER ChangeTime;
530 LARGE_INTEGER EndOfFile;
531 LARGE_INTEGER AllocationSize;
532 ULONG FileAttributes;
533 ULONG FileNameLength;
534 ULONG EaSize;
535 LARGE_INTEGER FileId;
536 WCHAR FileName[ANYSIZE_ARRAY];
537 } FILE_ID_FULL_DIRECTORY_INFORMATION, *PFILE_ID_FULL_DIRECTORY_INFORMATION;
539 typedef struct _FILE_BOTH_DIRECTORY_INFORMATION {
540 ULONG NextEntryOffset;
541 ULONG FileIndex;
542 LARGE_INTEGER CreationTime;
543 LARGE_INTEGER LastAccessTime;
544 LARGE_INTEGER LastWriteTime;
545 LARGE_INTEGER ChangeTime;
546 LARGE_INTEGER EndOfFile;
547 LARGE_INTEGER AllocationSize;
548 ULONG FileAttributes;
549 ULONG FileNameLength;
550 ULONG EaSize;
551 CHAR ShortNameLength;
552 WCHAR ShortName[12];
553 WCHAR FileName[ANYSIZE_ARRAY];
554 } FILE_BOTH_DIRECTORY_INFORMATION, *PFILE_BOTH_DIRECTORY_INFORMATION,
555 FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;
557 typedef struct _FILE_ID_BOTH_DIRECTORY_INFORMATION {
558 ULONG NextEntryOffset;
559 ULONG FileIndex;
560 LARGE_INTEGER CreationTime;
561 LARGE_INTEGER LastAccessTime;
562 LARGE_INTEGER LastWriteTime;
563 LARGE_INTEGER ChangeTime;
564 LARGE_INTEGER EndOfFile;
565 LARGE_INTEGER AllocationSize;
566 ULONG FileAttributes;
567 ULONG FileNameLength;
568 ULONG EaSize;
569 CHAR ShortNameLength;
570 WCHAR ShortName[12];
571 LARGE_INTEGER FileId;
572 WCHAR FileName[ANYSIZE_ARRAY];
573 } FILE_ID_BOTH_DIRECTORY_INFORMATION, *PFILE_ID_BOTH_DIRECTORY_INFORMATION;
575 typedef struct _FILE_ID_GLOBAL_TX_DIR_INFORMATION {
576 ULONG NextEntryOffset;
577 ULONG FileIndex;
578 LARGE_INTEGER CreationTime;
579 LARGE_INTEGER LastAccessTime;
580 LARGE_INTEGER LastWriteTime;
581 LARGE_INTEGER ChangeTime;
582 LARGE_INTEGER EndOfFile;
583 LARGE_INTEGER AllocationSize;
584 ULONG FileAttributes;
585 ULONG FileNameLength;
586 LARGE_INTEGER FileId;
587 GUID LockingTransactionId;
588 ULONG TxInfoFlags;
589 WCHAR FileName[ANYSIZE_ARRAY];
590 } FILE_ID_GLOBAL_TX_DIR_INFORMATION, *PFILE_ID_GLOBAL_TX_DIR_INFORMATION;
592 typedef struct _FILE_BASIC_INFORMATION {
593 LARGE_INTEGER CreationTime;
594 LARGE_INTEGER LastAccessTime;
595 LARGE_INTEGER LastWriteTime;
596 LARGE_INTEGER ChangeTime;
597 ULONG FileAttributes;
598 } FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
600 typedef struct _FILE_STANDARD_INFORMATION {
601 LARGE_INTEGER AllocationSize;
602 LARGE_INTEGER EndOfFile;
603 ULONG NumberOfLinks;
604 BOOLEAN DeletePending;
605 BOOLEAN Directory;
606 } FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;
608 typedef struct _FILE_INTERNAL_INFORMATION {
609 LARGE_INTEGER IndexNumber;
610 } FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;
612 typedef struct _FILE_ID_128 {
613 UCHAR Identifier[16];
614 } FILE_ID_128, *PFILE_ID_128;
616 typedef struct _FILE_ID_INFORMATION {
617 ULONGLONG VolumeSerialNumber;
618 FILE_ID_128 FileId;
619 } FILE_ID_INFORMATION, *PFILE_ID_INFORMATION;
621 typedef struct _FILE_EA_INFORMATION {
622 ULONG EaSize;
623 } FILE_EA_INFORMATION, *PFILE_EA_INFORMATION;
625 typedef struct _FILE_ACCESS_INFORMATION {
626 ACCESS_MASK AccessFlags;
627 } FILE_ACCESS_INFORMATION, *PFILE_ACCESS_INFORMATION;
629 typedef struct _FILE_NAME_INFORMATION {
630 ULONG FileNameLength;
631 WCHAR FileName[1];
632 } FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
634 typedef struct _FILE_RENAME_INFORMATION {
635 BOOLEAN ReplaceIfExists;
636 HANDLE RootDirectory;
637 ULONG FileNameLength;
638 WCHAR FileName[1];
639 } FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;
641 typedef struct _FILE_LINK_INFORMATION {
642 BOOLEAN ReplaceIfExists;
643 HANDLE RootDirectory;
644 ULONG FileNameLength;
645 WCHAR FileName[1];
646 } FILE_LINK_INFORMATION, *PFILE_LINK_INFORMATION;
648 typedef struct _FILE_NAMES_INFORMATION {
649 ULONG NextEntryOffset;
650 ULONG FileIndex;
651 ULONG FileNameLength;
652 WCHAR FileName[1];
653 } FILE_NAMES_INFORMATION, *PFILE_NAMES_INFORMATION;
655 typedef struct _FILE_DISPOSITION_INFORMATION {
656 BOOLEAN DoDeleteFile;
657 } FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION;
659 typedef struct _FILE_POSITION_INFORMATION {
660 LARGE_INTEGER CurrentByteOffset;
661 } FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;
663 typedef struct _FILE_ALIGNMENT_INFORMATION {
664 ULONG AlignmentRequirement;
665 } FILE_ALIGNMENT_INFORMATION, *PFILE_ALIGNMENT_INFORMATION;
667 typedef struct _FILE_ALLOCATION_INFORMATION {
668 LARGE_INTEGER AllocationSize;
669 } FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION;
671 typedef struct _FILE_END_OF_FILE_INFORMATION {
672 LARGE_INTEGER EndOfFile;
673 } FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;
675 typedef struct _FILE_NETWORK_OPEN_INFORMATION {
676 LARGE_INTEGER CreationTime;
677 LARGE_INTEGER LastAccessTime;
678 LARGE_INTEGER LastWriteTime;
679 LARGE_INTEGER ChangeTime;
680 LARGE_INTEGER AllocationSize;
681 LARGE_INTEGER EndOfFile;
682 ULONG FileAttributes;
683 } FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;
685 typedef struct _FILE_FULL_EA_INFORMATION {
686 ULONG NextEntryOffset;
687 UCHAR Flags;
688 UCHAR EaNameLength;
689 USHORT EaValueLength;
690 CHAR EaName[1];
691 } FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
693 typedef struct _FILE_MODE_INFORMATION {
694 ULONG Mode;
695 } FILE_MODE_INFORMATION, *PFILE_MODE_INFORMATION;
697 typedef struct _FILE_STREAM_INFORMATION
699 ULONG NextEntryOffset;
700 ULONG StreamNameLength;
701 LARGE_INTEGER StreamSize;
702 LARGE_INTEGER StreamAllocationSize;
703 WCHAR StreamName[1];
704 } FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
706 typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION
708 ULONG FileAttributes;
709 ULONG ReparseTag;
710 } FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION;
712 typedef struct _FILE_MAILSLOT_QUERY_INFORMATION {
713 ULONG MaximumMessageSize;
714 ULONG MailslotQuota;
715 ULONG NextMessageSize;
716 ULONG MessagesAvailable;
717 LARGE_INTEGER ReadTimeout;
718 } FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION;
720 typedef struct _FILE_MAILSLOT_SET_INFORMATION {
721 LARGE_INTEGER ReadTimeout;
722 } FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION;
724 typedef struct _FILE_PIPE_INFORMATION {
725 ULONG ReadMode;
726 ULONG CompletionMode;
727 } FILE_PIPE_INFORMATION, *PFILE_PIPE_INFORMATION;
729 typedef struct _FILE_PIPE_LOCAL_INFORMATION {
730 ULONG NamedPipeType;
731 ULONG NamedPipeConfiguration;
732 ULONG MaximumInstances;
733 ULONG CurrentInstances;
734 ULONG InboundQuota;
735 ULONG ReadDataAvailable;
736 ULONG OutboundQuota;
737 ULONG WriteQuotaAvailable;
738 ULONG NamedPipeState;
739 ULONG NamedPipeEnd;
740 } FILE_PIPE_LOCAL_INFORMATION, *PFILE_PIPE_LOCAL_INFORMATION;
742 #define FILE_PIPE_DISCONNECTED_STATE 0x00000001
743 #define FILE_PIPE_LISTENING_STATE 0x00000002
744 #define FILE_PIPE_CONNECTED_STATE 0x00000003
745 #define FILE_PIPE_CLOSING_STATE 0x00000004
747 typedef struct _FILE_OBJECTID_BUFFER
749 BYTE ObjectId[16];
750 union
752 struct
754 BYTE BirthVolumeId[16];
755 BYTE BirthObjectId[16];
756 BYTE DomainId[16];
757 } DUMMYSTRUCTNAME;
758 BYTE ExtendedInfo[48];
759 } DUMMYUNIONNAME;
760 } FILE_OBJECTID_BUFFER, *PFILE_OBJECTID_BUFFER;
762 typedef struct _FILE_OBJECTID_INFORMATION {
763 LONGLONG FileReference;
764 UCHAR ObjectId[16];
765 union {
766 struct {
767 UCHAR BirthVolumeId[16];
768 UCHAR BirthObjectId[16];
769 UCHAR DomainId[16];
770 } DUMMYSTRUCTNAME;
771 UCHAR ExtendedInfo[48];
772 } DUMMYUNIONNAME;
773 } FILE_OBJECTID_INFORMATION, *PFILE_OBJECTID_INFORMATION;
775 typedef struct _FILE_QUOTA_INFORMATION {
776 ULONG NextEntryOffset;
777 ULONG SidLength;
778 LARGE_INTEGER ChangeTime;
779 LARGE_INTEGER QuotaUsed;
780 LARGE_INTEGER QuotaThreshold;
781 LARGE_INTEGER QuotaLimit;
782 SID Sid;
783 } FILE_QUOTA_INFORMATION, *PFILE_QUOTA_INFORMATION;
785 typedef struct _FILE_REPARSE_POINT_INFORMATION {
786 LONGLONG FileReference;
787 ULONG Tag;
788 } FILE_REPARSE_POINT_INFORMATION, *PFILE_REPARSE_POINT_INFORMATION;
790 typedef struct _FILE_ALL_INFORMATION {
791 FILE_BASIC_INFORMATION BasicInformation;
792 FILE_STANDARD_INFORMATION StandardInformation;
793 FILE_INTERNAL_INFORMATION InternalInformation;
794 FILE_EA_INFORMATION EaInformation;
795 FILE_ACCESS_INFORMATION AccessInformation;
796 FILE_POSITION_INFORMATION PositionInformation;
797 FILE_MODE_INFORMATION ModeInformation;
798 FILE_ALIGNMENT_INFORMATION AlignmentInformation;
799 FILE_NAME_INFORMATION NameInformation;
800 } FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION;
802 typedef struct _FILE_IO_COMPLETION_NOTIFICATION_INFORMATION {
803 ULONG Flags;
804 } FILE_IO_COMPLETION_NOTIFICATION_INFORMATION, *PFILE_IO_COMPLETION_NOTIFICATION_INFORMATION;
806 #define FILE_SKIP_COMPLETION_PORT_ON_SUCCESS 0x1
807 #define FILE_SKIP_SET_EVENT_ON_HANDLE 0x2
808 #define FILE_SKIP_SET_USER_EVENT_ON_FAST_IO 0x4
810 typedef enum _FSINFOCLASS {
811 FileFsVolumeInformation = 1,
812 FileFsLabelInformation,
813 FileFsSizeInformation,
814 FileFsDeviceInformation,
815 FileFsAttributeInformation,
816 FileFsControlInformation,
817 FileFsFullSizeInformation,
818 FileFsObjectIdInformation,
819 FileFsMaximumInformation
820 } FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
822 typedef enum _KEY_INFORMATION_CLASS {
823 KeyBasicInformation,
824 KeyNodeInformation,
825 KeyFullInformation,
826 KeyNameInformation,
827 KeyCachedInformation,
828 KeyFlagsInformation,
829 KeyVirtualizationInformation,
830 KeyHandleTagsInformation,
831 MaxKeyInfoClass
832 } KEY_INFORMATION_CLASS;
834 typedef enum _KEY_VALUE_INFORMATION_CLASS {
835 KeyValueBasicInformation,
836 KeyValueFullInformation,
837 KeyValuePartialInformation,
838 KeyValueFullInformationAlign64,
839 KeyValuePartialInformationAlign64
840 } KEY_VALUE_INFORMATION_CLASS;
842 typedef enum _OBJECT_INFORMATION_CLASS {
843 ObjectBasicInformation,
844 ObjectNameInformation,
845 ObjectTypeInformation,
846 ObjectAllInformation,
847 ObjectDataInformation
848 } OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS;
850 typedef enum _PROCESSINFOCLASS {
851 ProcessBasicInformation = 0,
852 ProcessQuotaLimits = 1,
853 ProcessIoCounters = 2,
854 ProcessVmCounters = 3,
855 ProcessTimes = 4,
856 ProcessBasePriority = 5,
857 ProcessRaisePriority = 6,
858 ProcessDebugPort = 7,
859 ProcessExceptionPort = 8,
860 ProcessAccessToken = 9,
861 ProcessLdtInformation = 10,
862 ProcessLdtSize = 11,
863 ProcessDefaultHardErrorMode = 12,
864 ProcessIoPortHandlers = 13,
865 ProcessPooledUsageAndLimits = 14,
866 ProcessWorkingSetWatch = 15,
867 ProcessUserModeIOPL = 16,
868 ProcessEnableAlignmentFaultFixup = 17,
869 ProcessPriorityClass = 18,
870 ProcessWx86Information = 19,
871 ProcessHandleCount = 20,
872 ProcessAffinityMask = 21,
873 ProcessPriorityBoost = 22,
874 ProcessDeviceMap = 23,
875 ProcessSessionInformation = 24,
876 ProcessForegroundInformation = 25,
877 ProcessWow64Information = 26,
878 ProcessImageFileName = 27,
879 ProcessLUIDDeviceMapsEnabled = 28,
880 ProcessBreakOnTermination = 29,
881 ProcessDebugObjectHandle = 30,
882 ProcessDebugFlags = 31,
883 ProcessHandleTracing = 32,
884 ProcessExecuteFlags = 34,
885 ProcessTlsInformation = 35,
886 ProcessCookie = 36,
887 ProcessImageInformation = 37,
888 ProcessCycleTime = 38,
889 ProcessPagePriority = 39,
890 ProcessInstrumentationCallback = 40,
891 ProcessThreadStackAllocation = 41,
892 ProcessWorkingSetWatchEx = 42,
893 ProcessImageFileNameWin32 = 43,
894 MaxProcessInfoClass
895 } PROCESSINFOCLASS, PROCESS_INFORMATION_CLASS;
897 #define MEM_EXECUTE_OPTION_DISABLE 0x01
898 #define MEM_EXECUTE_OPTION_ENABLE 0x02
899 #define MEM_EXECUTE_OPTION_DISABLE_THUNK_EMULATION 0x04
900 #define MEM_EXECUTE_OPTION_PERMANENT 0x08
902 typedef enum _SECTION_INHERIT {
903 ViewShare = 1,
904 ViewUnmap = 2
905 } SECTION_INHERIT;
907 typedef enum _SYSTEM_INFORMATION_CLASS {
908 SystemBasicInformation = 0,
909 SystemCpuInformation = 1,
910 SystemPerformanceInformation = 2,
911 SystemTimeOfDayInformation = 3, /* was SystemTimeInformation */
912 Unknown4,
913 SystemProcessInformation = 5,
914 Unknown6,
915 Unknown7,
916 SystemProcessorPerformanceInformation = 8,
917 Unknown9,
918 Unknown10,
919 SystemModuleInformation = 11,
920 Unknown12,
921 Unknown13,
922 Unknown14,
923 Unknown15,
924 SystemHandleInformation = 16,
925 Unknown17,
926 SystemPageFileInformation = 18,
927 Unknown19,
928 Unknown20,
929 SystemCacheInformation = 21,
930 Unknown22,
931 SystemInterruptInformation = 23,
932 SystemDpcBehaviourInformation = 24,
933 SystemFullMemoryInformation = 25,
934 SystemNotImplemented6 = 25,
935 SystemLoadImage = 26,
936 SystemUnloadImage = 27,
937 SystemTimeAdjustmentInformation = 28,
938 SystemTimeAdjustment = 28,
939 SystemSummaryMemoryInformation = 29,
940 SystemNotImplemented7 = 29,
941 SystemNextEventIdInformation = 30,
942 SystemNotImplemented8 = 30,
943 SystemEventIdsInformation = 31,
944 SystemCrashDumpInformation = 32,
945 SystemExceptionInformation = 33,
946 SystemCrashDumpStateInformation = 34,
947 SystemKernelDebuggerInformation = 35,
948 SystemContextSwitchInformation = 36,
949 SystemRegistryQuotaInformation = 37,
950 SystemCurrentTimeZoneInformation = 44,
951 SystemTimeZoneInformation = 44,
952 SystemLookasideInformation = 45,
953 SystemSetTimeSlipEvent = 46,
954 SystemCreateSession = 47,
955 SystemDeleteSession = 48,
956 SystemInvalidInfoClass4 = 49,
957 SystemRangeStartInformation = 50,
958 SystemVerifierInformation = 51,
959 SystemAddVerifier = 52,
960 SystemSessionProcessesInformation = 53,
961 SystemLoadGdiDriverInSystemSpace = 54,
962 SystemNumaProcessorMap = 55,
963 SystemPrefetcherInformation = 56,
964 SystemExtendedProcessInformation = 57,
965 SystemRecommendedSharedDataAlignment = 58,
966 SystemComPlusPackage = 59,
967 SystemNumaAvailableMemory = 60,
968 SystemProcessorPowerInformation = 61,
969 SystemEmulationBasicInformation = 62,
970 SystemEmulationProcessorInformation = 63,
971 SystemExtendedHandleInformation = 64,
972 SystemLostDelayedWriteInformation = 65,
973 SystemBigPoolInformation = 66,
974 SystemSessionPoolTagInformation = 67,
975 SystemSessionMappedViewInformation = 68,
976 SystemHotpatchInformation = 69,
977 SystemObjectSecurityMode = 70,
978 SystemWatchdogTimerHandler = 71,
979 SystemWatchdogTimerInformation = 72,
980 SystemLogicalProcessorInformation = 73,
981 SystemWow64SharedInformation = 74,
982 SystemRegisterFirmwareTableInformationHandler = 75,
983 SystemFirmwareTableInformation = 76,
984 SystemModuleInformationEx = 77,
985 SystemVerifierTriageInformation = 78,
986 SystemSuperfetchInformation = 79,
987 SystemMemoryListInformation = 80,
988 SystemFileCacheInformationEx = 81,
989 SystemDynamicTimeZoneInformation = 102,
990 SystemLogicalProcessorInformationEx = 107,
991 SystemInformationClassMax
992 } SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS;
994 typedef enum _THREADINFOCLASS {
995 ThreadBasicInformation = 0,
996 ThreadTimes,
997 ThreadPriority,
998 ThreadBasePriority,
999 ThreadAffinityMask,
1000 ThreadImpersonationToken,
1001 ThreadDescriptorTableEntry,
1002 ThreadEnableAlignmentFaultFixup,
1003 ThreadEventPair_Reusable,
1004 ThreadQuerySetWin32StartAddress,
1005 ThreadZeroTlsCell,
1006 ThreadPerformanceCount,
1007 ThreadAmILastThread,
1008 ThreadIdealProcessor,
1009 ThreadPriorityBoost,
1010 ThreadSetTlsArrayAddress,
1011 ThreadIsIoPending,
1012 ThreadHideFromDebugger,
1013 ThreadBreakOnTermination,
1014 ThreadSwitchLegacyState,
1015 ThreadIsTerminated,
1016 ThreadLastSystemCall,
1017 ThreadIoPriority,
1018 ThreadCycleTime,
1019 ThreadPagePriority,
1020 ThreadActualBasePriority,
1021 ThreadTebInformation,
1022 ThreadCSwitchMon,
1023 ThreadCSwitchPmu,
1024 ThreadWow64Context,
1025 ThreadGroupInformation,
1026 ThreadUmsInformation,
1027 ThreadCounterProfiling,
1028 ThreadIdealProcessorEx,
1029 ThreadSuspendCount = 35,
1030 ThreadDescription = 38,
1031 MaxThreadInfoClass
1032 } THREADINFOCLASS;
1034 typedef struct _THREAD_BASIC_INFORMATION
1036 NTSTATUS ExitStatus;
1037 PVOID TebBaseAddress;
1038 CLIENT_ID ClientId;
1039 ULONG_PTR AffinityMask;
1040 LONG Priority;
1041 LONG BasePriority;
1042 } THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION;
1044 typedef struct _THREAD_DESCRIPTOR_INFORMATION
1046 DWORD Selector;
1047 LDT_ENTRY Entry;
1048 } THREAD_DESCRIPTOR_INFORMATION, *PTHREAD_DESCRIPTOR_INFORMATION;
1050 typedef struct _THREAD_DESCRIPTION_INFORMATION
1052 UNICODE_STRING Description;
1053 } THREAD_DESCRIPTION_INFORMATION, *PTHREAD_DESCRIPTION_INFORMATION;
1055 typedef struct _KERNEL_USER_TIMES {
1056 LARGE_INTEGER CreateTime;
1057 LARGE_INTEGER ExitTime;
1058 LARGE_INTEGER KernelTime;
1059 LARGE_INTEGER UserTime;
1060 } KERNEL_USER_TIMES, *PKERNEL_USER_TIMES;
1062 typedef enum _WINSTATIONINFOCLASS {
1063 WinStationInformation = 8
1064 } WINSTATIONINFOCLASS;
1066 typedef enum _MEMORY_INFORMATION_CLASS {
1067 MemoryBasicInformation,
1068 MemoryWorkingSetList,
1069 MemorySectionName,
1070 MemoryBasicVlmInformation,
1071 MemoryWorkingSetExInformation
1072 } MEMORY_INFORMATION_CLASS;
1074 typedef struct _MEMORY_SECTION_NAME
1076 UNICODE_STRING SectionFileName;
1077 } MEMORY_SECTION_NAME, *PMEMORY_SECTION_NAME;
1079 typedef union _MEMORY_WORKING_SET_EX_BLOCK {
1080 ULONG_PTR Flags;
1081 struct {
1082 ULONG_PTR Valid : 1;
1083 ULONG_PTR ShareCount : 3;
1084 ULONG_PTR Win32Protection : 11;
1085 ULONG_PTR Shared : 1;
1086 ULONG_PTR Node : 6;
1087 ULONG_PTR Locked : 1;
1088 ULONG_PTR LargePage : 1;
1089 } DUMMYSTRUCTNAME;
1090 } MEMORY_WORKING_SET_EX_BLOCK, *PMEMORY_WORKING_SET_EX_BLOCK;
1092 typedef struct _MEMORY_WORKING_SET_EX_INFORMATION {
1093 PVOID VirtualAddress;
1094 MEMORY_WORKING_SET_EX_BLOCK VirtualAttributes;
1095 } MEMORY_WORKING_SET_EX_INFORMATION, *PMEMORY_WORKING_SET_EX_INFORMATION;
1097 typedef enum _MUTANT_INFORMATION_CLASS
1099 MutantBasicInformation
1100 } MUTANT_INFORMATION_CLASS, *PMUTANT_INFORMATION_CLASS;
1102 typedef struct _MUTANT_BASIC_INFORMATION {
1103 LONG CurrentCount;
1104 BOOLEAN OwnedByCaller;
1105 BOOLEAN AbandonedState;
1106 } MUTANT_BASIC_INFORMATION, *PMUTANT_BASIC_INFORMATION;
1108 typedef enum _TIMER_INFORMATION_CLASS
1110 TimerBasicInformation = 0
1111 } TIMER_INFORMATION_CLASS;
1113 typedef struct _TIMER_BASIC_INFORMATION
1115 LARGE_INTEGER RemainingTime;
1116 BOOLEAN TimerState;
1117 } TIMER_BASIC_INFORMATION, *PTIMER_BASIC_INFORMATION;
1120 /* return type of RtlDetermineDosPathNameType_U (FIXME: not the correct names) */
1121 typedef enum
1123 INVALID_PATH = 0,
1124 UNC_PATH, /* "//foo" */
1125 ABSOLUTE_DRIVE_PATH, /* "c:/foo" */
1126 RELATIVE_DRIVE_PATH, /* "c:foo" */
1127 ABSOLUTE_PATH, /* "/foo" */
1128 RELATIVE_PATH, /* "foo" */
1129 DEVICE_PATH, /* "//./foo" */
1130 UNC_DOT_PATH /* "//." */
1131 } DOS_PATHNAME_TYPE;
1134 /***********************************************************************
1135 * Types and data structures
1138 /* This is used by NtQuerySystemInformation */
1139 typedef struct _SYSTEM_THREAD_INFORMATION
1140 { /* win32/win64 */
1141 LARGE_INTEGER KernelTime; /* 00/00 */
1142 LARGE_INTEGER UserTime; /* 08/08 */
1143 LARGE_INTEGER CreateTime; /* 10/10 */
1144 DWORD dwTickCount; /* 18/18 */
1145 LPVOID StartAddress; /* 1c/20 */
1146 CLIENT_ID ClientId; /* 20/28 */
1147 DWORD dwCurrentPriority; /* 28/38 */
1148 DWORD dwBasePriority; /* 2c/3c */
1149 DWORD dwContextSwitches; /* 30/40 */
1150 DWORD dwThreadState; /* 34/44 */
1151 DWORD dwWaitReason; /* 38/48 */
1152 DWORD dwUnknown; /* 3c/4c */
1153 } SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION;
1155 typedef struct _IO_STATUS_BLOCK {
1156 union {
1157 NTSTATUS Status;
1158 PVOID Pointer;
1159 } DUMMYUNIONNAME;
1161 ULONG_PTR Information;
1162 } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
1164 typedef void (WINAPI * PIO_APC_ROUTINE)(PVOID,PIO_STATUS_BLOCK,ULONG);
1166 typedef struct _KEY_BASIC_INFORMATION {
1167 LARGE_INTEGER LastWriteTime;
1168 ULONG TitleIndex;
1169 ULONG NameLength;
1170 WCHAR Name[1];
1171 } KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
1173 typedef struct _KEY_NODE_INFORMATION
1175 LARGE_INTEGER LastWriteTime;
1176 ULONG TitleIndex;
1177 ULONG ClassOffset;
1178 ULONG ClassLength;
1179 ULONG NameLength;
1180 WCHAR Name[1];
1181 /* Class[1]; */
1182 } KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
1184 typedef struct _KEY_FULL_INFORMATION
1186 LARGE_INTEGER LastWriteTime;
1187 ULONG TitleIndex;
1188 ULONG ClassOffset;
1189 ULONG ClassLength;
1190 ULONG SubKeys;
1191 ULONG MaxNameLen;
1192 ULONG MaxClassLen;
1193 ULONG Values;
1194 ULONG MaxValueNameLen;
1195 ULONG MaxValueDataLen;
1196 WCHAR Class[1];
1197 } KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
1199 typedef struct _KEY_NAME_INFORMATION {
1200 ULONG NameLength;
1201 WCHAR Name[1];
1202 } KEY_NAME_INFORMATION, *PKEY_NAME_INFORMATION;
1204 typedef struct _KEY_CACHED_INFORMATION
1206 LARGE_INTEGER LastWriteTime;
1207 ULONG TitleIndex;
1208 ULONG SubKeys;
1209 ULONG MaxNameLen;
1210 ULONG Values;
1211 ULONG MaxValueNameLen;
1212 ULONG MaxValueDataLen;
1213 ULONG NameLength;
1214 } KEY_CACHED_INFORMATION, *PKEY_CACHED_INFORMATION;
1216 typedef struct _KEY_VALUE_ENTRY
1218 PUNICODE_STRING ValueName;
1219 ULONG DataLength;
1220 ULONG DataOffset;
1221 ULONG Type;
1222 } KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
1224 typedef struct _KEY_VALUE_BASIC_INFORMATION {
1225 ULONG TitleIndex;
1226 ULONG Type;
1227 ULONG NameLength;
1228 WCHAR Name[1];
1229 } KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
1231 typedef struct _KEY_VALUE_FULL_INFORMATION {
1232 ULONG TitleIndex;
1233 ULONG Type;
1234 ULONG DataOffset;
1235 ULONG DataLength;
1236 ULONG NameLength;
1237 WCHAR Name[1];
1238 } KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
1240 typedef struct _KEY_VALUE_PARTIAL_INFORMATION {
1241 ULONG TitleIndex;
1242 ULONG Type;
1243 ULONG DataLength;
1244 UCHAR Data[1];
1245 } KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
1247 #ifndef __OBJECT_ATTRIBUTES_DEFINED__
1248 #define __OBJECT_ATTRIBUTES_DEFINED__
1249 typedef struct _OBJECT_ATTRIBUTES {
1250 ULONG Length;
1251 HANDLE RootDirectory;
1252 PUNICODE_STRING ObjectName;
1253 ULONG Attributes;
1254 PVOID SecurityDescriptor; /* type SECURITY_DESCRIPTOR */
1255 PVOID SecurityQualityOfService; /* type SECURITY_QUALITY_OF_SERVICE */
1256 } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
1257 #endif
1259 typedef struct _OBJECT_DATA_INFORMATION {
1260 BOOLEAN InheritHandle;
1261 BOOLEAN ProtectFromClose;
1262 } OBJECT_DATA_INFORMATION, *POBJECT_DATA_INFORMATION;
1264 typedef struct _OBJECT_BASIC_INFORMATION {
1265 ULONG Attributes;
1266 ACCESS_MASK GrantedAccess;
1267 ULONG HandleCount;
1268 ULONG PointerCount;
1269 ULONG PagedPoolUsage;
1270 ULONG NonPagedPoolUsage;
1271 ULONG Reserved[3];
1272 ULONG NameInformationLength;
1273 ULONG TypeInformationLength;
1274 ULONG SecurityDescriptorLength;
1275 LARGE_INTEGER CreateTime;
1276 } OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION;
1278 typedef struct _OBJECT_NAME_INFORMATION {
1279 UNICODE_STRING Name;
1280 } OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
1282 typedef struct __OBJECT_TYPE_INFORMATION {
1283 UNICODE_STRING TypeName;
1284 ULONG Reserved [22];
1285 } OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION;
1287 typedef struct _PROCESS_BASIC_INFORMATION {
1288 #ifdef __WINESRC__
1289 DWORD_PTR ExitStatus;
1290 PPEB PebBaseAddress;
1291 DWORD_PTR AffinityMask;
1292 DWORD_PTR BasePriority;
1293 ULONG_PTR UniqueProcessId;
1294 ULONG_PTR InheritedFromUniqueProcessId;
1295 #else
1296 PVOID Reserved1;
1297 PPEB PebBaseAddress;
1298 PVOID Reserved2[2];
1299 ULONG_PTR UniqueProcessId;
1300 PVOID Reserved3;
1301 #endif
1302 } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
1304 #define PROCESS_PRIOCLASS_IDLE 1
1305 #define PROCESS_PRIOCLASS_NORMAL 2
1306 #define PROCESS_PRIOCLASS_HIGH 3
1307 #define PROCESS_PRIOCLASS_REALTIME 4
1308 #define PROCESS_PRIOCLASS_BELOW_NORMAL 5
1309 #define PROCESS_PRIOCLASS_ABOVE_NORMAL 6
1311 typedef struct _PROCESS_PRIORITY_CLASS {
1312 BOOLEAN Foreground;
1313 UCHAR PriorityClass;
1314 } PROCESS_PRIORITY_CLASS, *PPROCESS_PRIORITY_CLASS;
1316 typedef struct _RTL_HEAP_DEFINITION {
1317 ULONG Length; /* = sizeof(RTL_HEAP_DEFINITION) */
1319 ULONG Unknown[11];
1320 } RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION;
1322 typedef struct _RTL_RWLOCK {
1323 RTL_CRITICAL_SECTION rtlCS;
1325 HANDLE hSharedReleaseSemaphore;
1326 UINT uSharedWaiters;
1328 HANDLE hExclusiveReleaseSemaphore;
1329 UINT uExclusiveWaiters;
1331 INT iNumberActive;
1332 HANDLE hOwningThreadId;
1333 DWORD dwTimeoutBoost;
1334 PVOID pDebugInfo;
1335 } RTL_RWLOCK, *LPRTL_RWLOCK;
1337 /* System Information Class 0x00 */
1339 typedef struct _SYSTEM_BASIC_INFORMATION {
1340 #ifdef __WINESRC__
1341 DWORD unknown;
1342 ULONG KeMaximumIncrement;
1343 ULONG PageSize;
1344 ULONG MmNumberOfPhysicalPages;
1345 ULONG MmLowestPhysicalPage;
1346 ULONG MmHighestPhysicalPage;
1347 ULONG_PTR AllocationGranularity;
1348 PVOID LowestUserAddress;
1349 PVOID HighestUserAddress;
1350 ULONG_PTR ActiveProcessorsAffinityMask;
1351 BYTE NumberOfProcessors;
1352 #else
1353 BYTE Reserved1[24];
1354 PVOID Reserved2[4];
1355 CCHAR NumberOfProcessors;
1356 #endif
1357 } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
1359 /* System Information Class 0x01 */
1361 typedef struct _SYSTEM_CPU_INFORMATION {
1362 WORD Architecture;
1363 WORD Level;
1364 WORD Revision; /* combination of CPU model and stepping */
1365 WORD Reserved; /* always zero */
1366 DWORD FeatureSet; /* see bit flags below */
1367 } SYSTEM_CPU_INFORMATION, *PSYSTEM_CPU_INFORMATION;
1369 /* definitions of bits in the Feature set for the x86 processors */
1370 #define CPU_FEATURE_VME 0x00000005 /* Virtual 86 Mode Extensions */
1371 #define CPU_FEATURE_TSC 0x00000002 /* Time Stamp Counter available */
1372 #define CPU_FEATURE_CMOV 0x00000008 /* Conditional Move instruction*/
1373 #define CPU_FEATURE_PGE 0x00000014 /* Page table Entry Global bit */
1374 #define CPU_FEATURE_PSE 0x00000024 /* Page Size Extension */
1375 #define CPU_FEATURE_MTRR 0x00000040 /* Memory Type Range Registers */
1376 #define CPU_FEATURE_CX8 0x00000080 /* Compare and eXchange 8 byte instr. */
1377 #define CPU_FEATURE_MMX 0x00000100 /* Multi Media eXtensions */
1378 #define CPU_FEATURE_X86 0x00000200 /* seems to be always ON, on the '86 */
1379 #define CPU_FEATURE_PAT 0x00000400 /* Page Attribute Table */
1380 #define CPU_FEATURE_FXSR 0x00000800 /* FXSAVE and FXSTORE instructions */
1381 #define CPU_FEATURE_SEP 0x00001000 /* SYSENTER and SYSEXIT instructions */
1382 #define CPU_FEATURE_SSE 0x00002000 /* SSE extensions (ext. MMX) */
1383 #define CPU_FEATURE_3DNOW 0x00004000 /* 3DNOW instructions available */
1384 #define CPU_FEATURE_SSE2 0x00010000 /* SSE2 extensions (XMMI64) */
1385 #define CPU_FEATURE_DS 0x00020000 /* Debug Store */
1386 #define CPU_FEATURE_HTT 0x00040000 /* Hyper Threading Technology */
1387 #define CPU_FEATURE_SSE3 0x00080000 /* SSE3 extensions */
1388 #define CPU_FEATURE_CX128 0x00100000 /* cmpxchg16b instruction */
1389 #define CPU_FEATURE_XSAVE 0x00800000 /* XSAVE instructions */
1390 #define CPU_FEATURE_2NDLEV 0x04000000 /* Second-level address translation */
1391 #define CPU_FEATURE_VIRT 0x08000000 /* Virtualization support */
1392 #define CPU_FEATURE_RDFS 0x10000000 /* RDFSBASE etc. instructions */
1393 #define CPU_FEATURE_NX 0x20000000 /* Data execution prevention */
1395 /* FIXME: following values are made up, actual flags are unknown */
1396 #define CPU_FEATURE_PAE 0x00200000
1397 #define CPU_FEATURE_DAZ 0x00400000
1398 #define CPU_FEATURE_ARM_VFP_32 0x00000001
1399 #define CPU_FEATURE_ARM_NEON 0x00000002
1400 #define CPU_FEATURE_ARM_V8_CRC32 0x00000004
1401 #define CPU_FEATURE_ARM_V8_CRYPTO 0x00000008
1403 /* System Information Class 0x02 */
1405 /* Documented in "Windows NT/2000 Native API Reference" by Gary Nebbett. */
1406 typedef struct _SYSTEM_PERFORMANCE_INFORMATION {
1407 LARGE_INTEGER IdleTime;
1408 LARGE_INTEGER ReadTransferCount;
1409 LARGE_INTEGER WriteTransferCount;
1410 LARGE_INTEGER OtherTransferCount;
1411 ULONG ReadOperationCount;
1412 ULONG WriteOperationCount;
1413 ULONG OtherOperationCount;
1414 ULONG AvailablePages;
1415 ULONG TotalCommittedPages;
1416 ULONG TotalCommitLimit;
1417 ULONG PeakCommitment;
1418 ULONG PageFaults;
1419 ULONG WriteCopyFaults;
1420 ULONG TransitionFaults;
1421 ULONG Reserved1;
1422 ULONG DemandZeroFaults;
1423 ULONG PagesRead;
1424 ULONG PageReadIos;
1425 ULONG Reserved2[2];
1426 ULONG PagefilePagesWritten;
1427 ULONG PagefilePageWriteIos;
1428 ULONG MappedFilePagesWritten;
1429 ULONG MappedFilePageWriteIos;
1430 ULONG PagedPoolUsage;
1431 ULONG NonPagedPoolUsage;
1432 ULONG PagedPoolAllocs;
1433 ULONG PagedPoolFrees;
1434 ULONG NonPagedPoolAllocs;
1435 ULONG NonPagedPoolFrees;
1436 ULONG TotalFreeSystemPtes;
1437 ULONG SystemCodePage;
1438 ULONG TotalSystemDriverPages;
1439 ULONG TotalSystemCodePages;
1440 ULONG SmallNonPagedLookasideListAllocateHits;
1441 ULONG SmallPagedLookasideListAllocateHits;
1442 ULONG Reserved3;
1443 ULONG MmSystemCachePage;
1444 ULONG PagedPoolPage;
1445 ULONG SystemDriverPage;
1446 ULONG FastReadNoWait;
1447 ULONG FastReadWait;
1448 ULONG FastReadResourceMiss;
1449 ULONG FastReadNotPossible;
1450 ULONG FastMdlReadNoWait;
1451 ULONG FastMdlReadWait;
1452 ULONG FastMdlReadResourceMiss;
1453 ULONG FastMdlReadNotPossible;
1454 ULONG MapDataNoWait;
1455 ULONG MapDataWait;
1456 ULONG MapDataNoWaitMiss;
1457 ULONG MapDataWaitMiss;
1458 ULONG PinMappedDataCount;
1459 ULONG PinReadNoWait;
1460 ULONG PinReadWait;
1461 ULONG PinReadNoWaitMiss;
1462 ULONG PinReadWaitMiss;
1463 ULONG CopyReadNoWait;
1464 ULONG CopyReadWait;
1465 ULONG CopyReadNoWaitMiss;
1466 ULONG CopyReadWaitMiss;
1467 ULONG MdlReadNoWait;
1468 ULONG MdlReadWait;
1469 ULONG MdlReadNoWaitMiss;
1470 ULONG MdlReadWaitMiss;
1471 ULONG ReadAheadIos;
1472 ULONG LazyWriteIos;
1473 ULONG LazyWritePages;
1474 ULONG DataFlushes;
1475 ULONG DataPages;
1476 ULONG ContextSwitches;
1477 ULONG FirstLevelTbFills;
1478 ULONG SecondLevelTbFills;
1479 ULONG SystemCalls;
1480 } SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
1482 /* System Information Class 0x03 */
1484 typedef struct _SYSTEM_TIMEOFDAY_INFORMATION {
1485 #ifdef __WINESRC__
1486 LARGE_INTEGER BootTime;
1487 LARGE_INTEGER SystemTime;
1488 LARGE_INTEGER TimeZoneBias;
1489 ULONG TimeZoneId;
1490 ULONG Reserved;
1491 ULONGLONG BootTimeBias;
1492 ULONGLONG SleepTimeBias;
1493 #else
1494 BYTE Reserved1[48];
1495 #endif
1496 } SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION; /* was SYSTEM_TIME_INFORMATION */
1498 /* System Information Class 0x08 */
1500 typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION {
1501 LARGE_INTEGER IdleTime;
1502 LARGE_INTEGER KernelTime;
1503 LARGE_INTEGER UserTime;
1504 LARGE_INTEGER Reserved1[2];
1505 ULONG Reserved2;
1506 } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
1508 /* System Information Class 0x0b */
1510 typedef struct _SYSTEM_DRIVER_INFORMATION {
1511 PVOID pvAddress;
1512 DWORD dwUnknown1;
1513 DWORD dwUnknown2;
1514 DWORD dwEntryIndex;
1515 DWORD dwUnknown3;
1516 char szName[MAX_PATH + 1];
1517 } SYSTEM_DRIVER_INFORMATION, *PSYSTEM_DRIVER_INFORMATION;
1519 /* System Information Class 0x10 */
1521 typedef struct _SYSTEM_HANDLE_ENTRY {
1522 ULONG OwnerPid;
1523 BYTE ObjectType;
1524 BYTE HandleFlags;
1525 USHORT HandleValue;
1526 PVOID ObjectPointer;
1527 ULONG AccessMask;
1528 } SYSTEM_HANDLE_ENTRY, *PSYSTEM_HANDLE_ENTRY;
1530 typedef struct _SYSTEM_HANDLE_INFORMATION {
1531 ULONG Count;
1532 SYSTEM_HANDLE_ENTRY Handle[1];
1533 } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
1535 /* System Information Class 0x15 */
1537 typedef struct _SYSTEM_CACHE_INFORMATION {
1538 ULONG CurrentSize;
1539 ULONG PeakSize;
1540 ULONG PageFaultCount;
1541 ULONG MinimumWorkingSet;
1542 ULONG MaximumWorkingSet;
1543 ULONG unused[4];
1544 #ifdef _WIN64
1545 ULONG unknown64[7];
1546 #endif
1547 } SYSTEM_CACHE_INFORMATION, *PSYSTEM_CACHE_INFORMATION;
1549 /* System Information Class 0x17 */
1551 typedef struct _SYSTEM_INTERRUPT_INFORMATION {
1552 BYTE Reserved1[24];
1553 } SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION;
1555 typedef struct _SYSTEM_CONFIGURATION_INFO {
1556 union {
1557 ULONG OemId;
1558 struct {
1559 WORD ProcessorArchitecture;
1560 WORD Reserved;
1561 } tag1;
1562 } tag2;
1563 ULONG PageSize;
1564 PVOID MinimumApplicationAddress;
1565 PVOID MaximumApplicationAddress;
1566 ULONG ActiveProcessorMask;
1567 ULONG NumberOfProcessors;
1568 ULONG ProcessorType;
1569 ULONG AllocationGranularity;
1570 WORD ProcessorLevel;
1571 WORD ProcessorRevision;
1572 } SYSTEM_CONFIGURATION_INFO, *PSYSTEM_CONFIGURATION_INFO;
1574 typedef struct _SYSTEM_EXCEPTION_INFORMATION {
1575 BYTE Reserved1[16];
1576 } SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION;
1578 typedef struct _SYSTEM_LOOKASIDE_INFORMATION {
1579 BYTE Reserved1[32];
1580 } SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION;
1582 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION {
1583 BOOLEAN DebuggerEnabled;
1584 BOOLEAN DebuggerNotPresent;
1585 } SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION;
1587 typedef struct _VM_COUNTERS
1589 SIZE_T PeakVirtualSize;
1590 SIZE_T VirtualSize;
1591 ULONG PageFaultCount;
1592 SIZE_T PeakWorkingSetSize;
1593 SIZE_T WorkingSetSize;
1594 SIZE_T QuotaPeakPagedPoolUsage;
1595 SIZE_T QuotaPagedPoolUsage;
1596 SIZE_T QuotaPeakNonPagedPoolUsage;
1597 SIZE_T QuotaNonPagedPoolUsage;
1598 SIZE_T PagefileUsage;
1599 SIZE_T PeakPagefileUsage;
1600 } VM_COUNTERS, *PVM_COUNTERS;
1602 typedef struct _VM_COUNTERS_EX
1604 SIZE_T PeakVirtualSize;
1605 SIZE_T VirtualSize;
1606 ULONG PageFaultCount;
1607 SIZE_T PeakWorkingSetSize;
1608 SIZE_T WorkingSetSize;
1609 SIZE_T QuotaPeakPagedPoolUsage;
1610 SIZE_T QuotaPagedPoolUsage;
1611 SIZE_T QuotaPeakNonPagedPoolUsage;
1612 SIZE_T QuotaNonPagedPoolUsage;
1613 SIZE_T PagefileUsage;
1614 SIZE_T PeakPagefileUsage;
1615 SIZE_T PrivateUsage;
1616 } VM_COUNTERS_EX, *PVM_COUNTERS_EX;
1618 typedef struct _SYSTEM_PROCESS_INFORMATION {
1619 #ifdef __WINESRC__ /* win32/win64 */
1620 ULONG NextEntryOffset; /* 00/00 */
1621 DWORD dwThreadCount; /* 04/04 */
1622 DWORD dwUnknown1[6]; /* 08/08 */
1623 LARGE_INTEGER CreationTime; /* 20/20 */
1624 LARGE_INTEGER UserTime; /* 28/28 */
1625 LARGE_INTEGER KernelTime; /* 30/30 */
1626 UNICODE_STRING ProcessName; /* 38/38 */
1627 DWORD dwBasePriority; /* 40/48 */
1628 HANDLE UniqueProcessId; /* 44/50 */
1629 HANDLE ParentProcessId; /* 48/58 */
1630 ULONG HandleCount; /* 4c/60 */
1631 ULONG SessionId; /* 50/64 */
1632 DWORD dwUnknown4; /* 54/68 */
1633 VM_COUNTERS_EX vmCounters; /* 58/70 */
1634 IO_COUNTERS ioCounters; /* 88/d0 */
1635 SYSTEM_THREAD_INFORMATION ti[1]; /* b8/100 */
1636 #else
1637 ULONG NextEntryOffset; /* 00/00 */
1638 BYTE Reserved1[52]; /* 04/04 */
1639 PVOID Reserved2[3]; /* 38/38 */
1640 HANDLE UniqueProcessId; /* 44/50 */
1641 PVOID Reserved3; /* 48/58 */
1642 ULONG HandleCount; /* 4c/60 */
1643 BYTE Reserved4[4]; /* 50/64 */
1644 PVOID Reserved5[11]; /* 54/68 */
1645 SIZE_T PeakPagefileUsage; /* 80/c0 */
1646 SIZE_T PrivatePageCount; /* 84/c8 */
1647 LARGE_INTEGER Reserved6[6]; /* 88/d0 */
1648 #endif
1649 } SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
1651 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION {
1652 ULONG RegistryQuotaAllowed;
1653 ULONG RegistryQuotaUsed;
1654 PVOID Reserved1;
1655 } SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION;
1657 typedef struct _SYSTEM_TIME_ADJUSTMENT_QUERY {
1658 ULONG TimeAdjustment;
1659 ULONG TimeIncrement;
1660 BOOLEAN TimeAdjustmentDisabled;
1661 } SYSTEM_TIME_ADJUSTMENT_QUERY, *PSYSTEM_TIME_ADJUSTMENT_QUERY;
1663 typedef struct _SYSTEM_TIME_ADJUSTMENT {
1664 ULONG TimeAdjustment;
1665 BOOLEAN TimeAdjustmentDisabled;
1666 } SYSTEM_TIME_ADJUSTMENT, *PSYSTEM_TIME_ADJUSTMENT;
1668 typedef enum _SYSTEM_FIRMWARE_TABLE_ACTION
1670 SystemFirmwareTable_Enumerate = 0,
1671 SystemFirmwareTable_Get = 1
1672 } SYSTEM_FIRMWARE_TABLE_ACTION, *PSYSTEM_FIRMWARE_TABLE_ACTION;
1674 /* System Information Class 0x4C */
1676 typedef struct _SYSTEM_FIRMWARE_TABLE_INFORMATION
1678 ULONG ProviderSignature;
1679 SYSTEM_FIRMWARE_TABLE_ACTION Action;
1680 ULONG TableID;
1681 ULONG TableBufferLength;
1682 UCHAR TableBuffer[1];
1683 } SYSTEM_FIRMWARE_TABLE_INFORMATION, *PSYSTEM_FIRMWARE_TABLE_INFORMATION;
1685 typedef struct _TIME_FIELDS
1686 { CSHORT Year;
1687 CSHORT Month;
1688 CSHORT Day;
1689 CSHORT Hour;
1690 CSHORT Minute;
1691 CSHORT Second;
1692 CSHORT Milliseconds;
1693 CSHORT Weekday;
1694 } TIME_FIELDS, *PTIME_FIELDS;
1696 typedef struct _WINSTATIONINFORMATIONW {
1697 BYTE Reserved2[70];
1698 ULONG LogonId;
1699 BYTE Reserved3[1140];
1700 } WINSTATIONINFORMATIONW, *PWINSTATIONINFORMATIONW;
1702 typedef BOOLEAN (WINAPI * PWINSTATIONQUERYINFORMATIONW)(HANDLE,ULONG,WINSTATIONINFOCLASS,PVOID,ULONG,PULONG);
1704 typedef struct _LDR_RESOURCE_INFO
1706 ULONG_PTR Type;
1707 ULONG_PTR Name;
1708 ULONG Language;
1709 } LDR_RESOURCE_INFO, *PLDR_RESOURCE_INFO;
1712 /* debug buffer definitions */
1714 typedef struct _DEBUG_BUFFER {
1715 HANDLE SectionHandle;
1716 PVOID SectionBase;
1717 PVOID RemoteSectionBase;
1718 ULONG SectionBaseDelta;
1719 HANDLE EventPairHandle;
1720 ULONG Unknown[2];
1721 HANDLE RemoteThreadHandle;
1722 ULONG InfoClassMask;
1723 ULONG SizeOfInfo;
1724 ULONG AllocatedSize;
1725 ULONG SectionSize;
1726 PVOID ModuleInformation;
1727 PVOID BackTraceInformation;
1728 PVOID HeapInformation;
1729 PVOID LockInformation;
1730 PVOID Reserved[8];
1731 } DEBUG_BUFFER, *PDEBUG_BUFFER;
1733 #define PDI_MODULES 0x01
1734 #define PDI_BACKTRACE 0x02
1735 #define PDI_HEAPS 0x04
1736 #define PDI_HEAP_TAGS 0x08
1737 #define PDI_HEAP_BLOCKS 0x10
1738 #define PDI_LOCKS 0x20
1740 typedef struct _DEBUG_MODULE_INFORMATION {
1741 ULONG Reserved[2];
1742 ULONG Base;
1743 ULONG Size;
1744 ULONG Flags;
1745 USHORT Index;
1746 USHORT Unknown;
1747 USHORT LoadCount;
1748 USHORT ModuleNameOffset;
1749 CHAR ImageName[256];
1750 } DEBUG_MODULE_INFORMATION, *PDEBUG_MODULE_INFORMATION;
1752 typedef struct _DEBUG_HEAP_INFORMATION {
1753 ULONG Base;
1754 ULONG Flags;
1755 USHORT Granularity;
1756 USHORT Unknown;
1757 ULONG Allocated;
1758 ULONG Committed;
1759 ULONG TagCount;
1760 ULONG BlockCount;
1761 ULONG Reserved[7];
1762 PVOID Tags;
1763 PVOID Blocks;
1764 } DEBUG_HEAP_INFORMATION, *PDEBUG_HEAP_INFORMATION;
1766 typedef struct _DEBUG_LOCK_INFORMATION {
1767 PVOID Address;
1768 USHORT Type;
1769 USHORT CreatorBackTraceIndex;
1770 ULONG OwnerThreadId;
1771 ULONG ActiveCount;
1772 ULONG ContentionCount;
1773 ULONG EntryCount;
1774 ULONG RecursionCount;
1775 ULONG NumberOfSharedWaiters;
1776 ULONG NumberOfExclusiveWaiters;
1777 } DEBUG_LOCK_INFORMATION, *PDEBUG_LOCK_INFORMATION;
1779 typedef struct _PORT_MESSAGE_HEADER {
1780 USHORT DataSize;
1781 USHORT MessageSize;
1782 USHORT MessageType;
1783 USHORT VirtualRangesOffset;
1784 CLIENT_ID ClientId;
1785 ULONG MessageId;
1786 ULONG SectionSize;
1787 } PORT_MESSAGE_HEADER, *PPORT_MESSAGE_HEADER, PORT_MESSAGE, *PPORT_MESSAGE;
1789 typedef unsigned short RTL_ATOM, *PRTL_ATOM;
1791 /* Wine doesn't implement atom table as NT does:
1792 * - in NT, atom tables are user space tables, which ntdll directly accesses
1793 * - on Wine, (even local) atom tables are wineserver objects, hence a HANDLE
1795 typedef struct atom_table *RTL_ATOM_TABLE, **PRTL_ATOM_TABLE;
1797 typedef enum _ATOM_INFORMATION_CLASS {
1798 AtomBasicInformation = 0,
1799 AtomTableInformation = 1,
1800 } ATOM_INFORMATION_CLASS;
1802 typedef struct _ATOM_BASIC_INFORMATION {
1803 USHORT ReferenceCount;
1804 USHORT Pinned;
1805 USHORT NameLength;
1806 WCHAR Name[1];
1807 } ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION;
1809 /* FIXME: names probably not correct */
1810 typedef struct _RTL_HANDLE
1812 struct _RTL_HANDLE * Next;
1813 } RTL_HANDLE;
1815 /* FIXME: names probably not correct */
1816 typedef struct _RTL_HANDLE_TABLE
1818 ULONG MaxHandleCount; /* 0x00 */
1819 ULONG HandleSize; /* 0x04 */
1820 ULONG Unused[2]; /* 0x08-0x0c */
1821 PVOID NextFree; /* 0x10 */
1822 PVOID FirstHandle; /* 0x14 */
1823 PVOID ReservedMemory; /* 0x18 */
1824 PVOID MaxHandle; /* 0x1c */
1825 } RTL_HANDLE_TABLE;
1827 /***********************************************************************
1828 * Defines
1831 /* flags for NtCreateFile and NtOpenFile */
1832 #define FILE_DIRECTORY_FILE 0x00000001
1833 #define FILE_WRITE_THROUGH 0x00000002
1834 #define FILE_SEQUENTIAL_ONLY 0x00000004
1835 #define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
1836 #define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
1837 #define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
1838 #define FILE_NON_DIRECTORY_FILE 0x00000040
1839 #define FILE_CREATE_TREE_CONNECTION 0x00000080
1840 #define FILE_COMPLETE_IF_OPLOCKED 0x00000100
1841 #define FILE_NO_EA_KNOWLEDGE 0x00000200
1842 #define FILE_OPEN_FOR_RECOVERY 0x00000400
1843 #define FILE_RANDOM_ACCESS 0x00000800
1844 #define FILE_DELETE_ON_CLOSE 0x00001000
1845 #define FILE_OPEN_BY_FILE_ID 0x00002000
1846 #define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
1847 #define FILE_NO_COMPRESSION 0x00008000
1848 #define FILE_RESERVE_OPFILTER 0x00100000
1849 #define FILE_OPEN_REPARSE_POINT 0x00200000
1850 #define FILE_OPEN_OFFLINE_FILE 0x00400000
1851 #define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000
1853 #define FILE_ATTRIBUTE_VALID_FLAGS 0x00007fb7
1854 #define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7
1856 /* status for NtCreateFile or NtOpenFile */
1857 #define FILE_SUPERSEDED 0
1858 #define FILE_OPENED 1
1859 #define FILE_CREATED 2
1860 #define FILE_OVERWRITTEN 3
1861 #define FILE_EXISTS 4
1862 #define FILE_DOES_NOT_EXIST 5
1864 /* disposition for NtCreateFile */
1865 #define FILE_SUPERSEDE 0
1866 #define FILE_OPEN 1
1867 #define FILE_CREATE 2
1868 #define FILE_OPEN_IF 3
1869 #define FILE_OVERWRITE 4
1870 #define FILE_OVERWRITE_IF 5
1871 #define FILE_MAXIMUM_DISPOSITION 5
1873 /* Characteristics of a File System */
1874 #define FILE_REMOVABLE_MEDIA 0x00000001
1875 #define FILE_READ_ONLY_DEVICE 0x00000002
1876 #define FILE_FLOPPY_DISKETTE 0x00000004
1877 #define FILE_WRITE_ONE_MEDIA 0x00000008
1878 #define FILE_REMOTE_DEVICE 0x00000010
1879 #define FILE_DEVICE_IS_MOUNTED 0x00000020
1880 #define FILE_VIRTUAL_VOLUME 0x00000040
1881 #define FILE_AUTOGENERATED_DEVICE_NAME 0x00000080
1882 #define FILE_DEVICE_SECURE_OPEN 0x00000100
1883 #define FILE_CHARACTERISTIC_PNP_DEVICE 0x00000800
1884 #define FILE_CHARACTERISTIC_TS_DEVICE 0x00001000
1885 #define FILE_CHARACTERISTIC_WEBDAV_DEVICE 0x00002000
1886 #define FILE_CHARACTERISTIC_CSV 0x00010000
1887 #define FILE_DEVICE_ALLOW_APPCONTAINER_TRAVERSAL 0x00020000
1888 #define FILE_PORTABLE_DEVICE 0x00040000
1890 /* options for NtCreateNamedPipeFile */
1891 #define FILE_PIPE_INBOUND 0x00000000
1892 #define FILE_PIPE_OUTBOUND 0x00000001
1893 #define FILE_PIPE_FULL_DUPLEX 0x00000002
1895 /* options for pipe's type */
1896 #define FILE_PIPE_TYPE_MESSAGE 0x00000001
1897 #define FILE_PIPE_TYPE_BYTE 0x00000000
1898 /* options for pipe's message mode */
1899 #define FILE_PIPE_MESSAGE_MODE 0x00000001
1900 #define FILE_PIPE_BYTE_STREAM_MODE 0x00000000
1901 /* options for pipe's blocking mode */
1902 #define FILE_PIPE_COMPLETE_OPERATION 0x00000001
1903 #define FILE_PIPE_QUEUE_OPERATION 0x00000000
1904 /* and client / server end */
1905 #define FILE_PIPE_SERVER_END 0x00000001
1906 #define FILE_PIPE_CLIENT_END 0x00000000
1908 #define INTERNAL_TS_ACTIVE_CONSOLE_ID ( *((volatile ULONG*)(0x7ffe02d8)) )
1910 #define LOGONID_CURRENT ((ULONG)-1)
1912 #define OBJ_INHERIT 0x00000002
1913 #define OBJ_PERMANENT 0x00000010
1914 #define OBJ_EXCLUSIVE 0x00000020
1915 #define OBJ_CASE_INSENSITIVE 0x00000040
1916 #define OBJ_OPENIF 0x00000080
1917 #define OBJ_OPENLINK 0x00000100
1918 #define OBJ_KERNEL_HANDLE 0x00000200
1919 #define OBJ_VALID_ATTRIBUTES 0x000003F2
1921 #define SERVERNAME_CURRENT ((HANDLE)NULL)
1923 typedef void (CALLBACK *PNTAPCFUNC)(ULONG_PTR,ULONG_PTR,ULONG_PTR); /* FIXME: not the right name */
1924 typedef void (CALLBACK *PRTL_THREAD_START_ROUTINE)(LPVOID); /* FIXME: not the right name */
1925 typedef DWORD (CALLBACK *PRTL_WORK_ITEM_ROUTINE)(LPVOID); /* FIXME: not the right name */
1926 typedef void (NTAPI *RTL_WAITORTIMERCALLBACKFUNC)(PVOID,BOOLEAN); /* FIXME: not the right name */
1929 /* DbgPrintEx default levels */
1930 #define DPFLTR_ERROR_LEVEL 0
1931 #define DPFLTR_WARNING_LEVEL 1
1932 #define DPFLTR_TRACE_LEVEL 2
1933 #define DPFLTR_INFO_LEVEL 3
1934 #define DPFLTR_MASK 0x8000000
1936 /* Well-known LUID values */
1937 #define SE_MIN_WELL_KNOWN_PRIVILEGE 2
1938 #define SE_CREATE_TOKEN_PRIVILEGE 2
1939 #define SE_ASSIGNPRIMARYTOKEN_PRIVILEGE 3
1940 #define SE_LOCK_MEMORY_PRIVILEGE 4
1941 #define SE_INCREASE_QUOTA_PRIVILEGE 5
1942 #define SE_UNSOLICITED_INPUT_PRIVILEGE 6 /* obsolete */
1943 #define SE_MACHINE_ACCOUNT_PRIVILEGE 6
1944 #define SE_TCB_PRIVILEGE 7
1945 #define SE_SECURITY_PRIVILEGE 8
1946 #define SE_TAKE_OWNERSHIP_PRIVILEGE 9
1947 #define SE_LOAD_DRIVER_PRIVILEGE 10
1948 #define SE_SYSTEM_PROFILE_PRIVILEGE 11
1949 #define SE_SYSTEMTIME_PRIVILEGE 12
1950 #define SE_PROF_SINGLE_PROCESS_PRIVILEGE 13
1951 #define SE_INC_BASE_PRIORITY_PRIVILEGE 14
1952 #define SE_CREATE_PAGEFILE_PRIVILEGE 15
1953 #define SE_CREATE_PERMANENT_PRIVILEGE 16
1954 #define SE_BACKUP_PRIVILEGE 17
1955 #define SE_RESTORE_PRIVILEGE 18
1956 #define SE_SHUTDOWN_PRIVILEGE 19
1957 #define SE_DEBUG_PRIVILEGE 20
1958 #define SE_AUDIT_PRIVILEGE 21
1959 #define SE_SYSTEM_ENVIRONMENT_PRIVILEGE 22
1960 #define SE_CHANGE_NOTIFY_PRIVILEGE 23
1961 #define SE_REMOTE_SHUTDOWN_PRIVILEGE 24
1962 #define SE_UNDOCK_PRIVILEGE 25
1963 #define SE_SYNC_AGENT_PRIVILEGE 26
1964 #define SE_ENABLE_DELEGATION_PRIVILEGE 27
1965 #define SE_MANAGE_VOLUME_PRIVILEGE 28
1966 #define SE_IMPERSONATE_PRIVILEGE 29
1967 #define SE_CREATE_GLOBAL_PRIVILEGE 30
1968 #define SE_MAX_WELL_KNOWN_PRIVILEGE SE_CREATE_GLOBAL_PRIVILEGE
1970 /* NtGlobalFlag bits */
1971 #define FLG_STOP_ON_EXCEPTION 0x00000001
1972 #define FLG_SHOW_LDR_SNAPS 0x00000002
1973 #define FLG_DEBUG_INITIAL_COMMAND 0x00000004
1974 #define FLG_STOP_ON_HUNG_GUI 0x00000008
1975 #define FLG_HEAP_ENABLE_TAIL_CHECK 0x00000010
1976 #define FLG_HEAP_ENABLE_FREE_CHECK 0x00000020
1977 #define FLG_HEAP_VALIDATE_PARAMETERS 0x00000040
1978 #define FLG_HEAP_VALIDATE_ALL 0x00000080
1979 #define FLG_APPLICATION_VERIFIER 0x00000100
1980 #define FLG_POOL_ENABLE_TAGGING 0x00000400
1981 #define FLG_HEAP_ENABLE_TAGGING 0x00000800
1982 #define FLG_USER_STACK_TRACE_DB 0x00001000
1983 #define FLG_KERNEL_STACK_TRACE_DB 0x00002000
1984 #define FLG_MAINTAIN_OBJECT_TYPELIST 0x00004000
1985 #define FLG_HEAP_ENABLE_TAG_BY_DLL 0x00008000
1986 #define FLG_DISABLE_STACK_EXTENSION 0x00010000
1987 #define FLG_ENABLE_CSRDEBUG 0x00020000
1988 #define FLG_ENABLE_KDEBUG_SYMBOL_LOAD 0x00040000
1989 #define FLG_DISABLE_PAGE_KERNEL_STACKS 0x00080000
1990 #define FLG_ENABLE_SYSTEM_CRIT_BREAKS 0x00100000
1991 #define FLG_HEAP_DISABLE_COALESCING 0x00200000
1992 #define FLG_ENABLE_CLOSE_EXCEPTIONS 0x00400000
1993 #define FLG_ENABLE_EXCEPTION_LOGGING 0x00800000
1994 #define FLG_ENABLE_HANDLE_TYPE_TAGGING 0x01000000
1995 #define FLG_HEAP_PAGE_ALLOCS 0x02000000
1996 #define FLG_DEBUG_INITIAL_COMMAND_EX 0x04000000
1997 #define FLG_DISABLE_DBGPRINT 0x08000000
1998 #define FLG_CRITSEC_EVENT_CREATION 0x10000000
1999 #define FLG_LDR_TOP_DOWN 0x20000000
2000 #define FLG_ENABLE_HANDLE_EXCEPTIONS 0x40000000
2001 #define FLG_DISABLE_PROTDLLS 0x80000000
2003 /* Rtl*Registry* functions structs and defines */
2004 #define RTL_REGISTRY_ABSOLUTE 0
2005 #define RTL_REGISTRY_SERVICES 1
2006 #define RTL_REGISTRY_CONTROL 2
2007 #define RTL_REGISTRY_WINDOWS_NT 3
2008 #define RTL_REGISTRY_DEVICEMAP 4
2009 #define RTL_REGISTRY_USER 5
2011 #define RTL_REGISTRY_HANDLE 0x40000000
2012 #define RTL_REGISTRY_OPTIONAL 0x80000000
2014 #define RTL_QUERY_REGISTRY_SUBKEY 0x00000001
2015 #define RTL_QUERY_REGISTRY_TOPKEY 0x00000002
2016 #define RTL_QUERY_REGISTRY_REQUIRED 0x00000004
2017 #define RTL_QUERY_REGISTRY_NOVALUE 0x00000008
2018 #define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010
2019 #define RTL_QUERY_REGISTRY_DIRECT 0x00000020
2020 #define RTL_QUERY_REGISTRY_DELETE 0x00000040
2021 #define RTL_QUERY_REGISTRY_TYPECHECK 0x00000100
2023 #define RTL_QUERY_REGISTRY_TYPECHECK_SHIFT 24
2025 typedef NTSTATUS (WINAPI *PRTL_QUERY_REGISTRY_ROUTINE)( PCWSTR ValueName,
2026 ULONG ValueType,
2027 PVOID ValueData,
2028 ULONG ValueLength,
2029 PVOID Context,
2030 PVOID EntryContext);
2032 typedef struct _RTL_QUERY_REGISTRY_TABLE
2034 PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;
2035 ULONG Flags;
2036 PWSTR Name;
2037 PVOID EntryContext;
2038 ULONG DefaultType;
2039 PVOID DefaultData;
2040 ULONG DefaultLength;
2041 } RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
2043 typedef struct _KEY_MULTIPLE_VALUE_INFORMATION
2045 PUNICODE_STRING ValueName;
2046 ULONG DataLength;
2047 ULONG DataOffset;
2048 ULONG Type;
2049 } KEY_MULTIPLE_VALUE_INFORMATION, *PKEY_MULTIPLE_VALUE_INFORMATION;
2051 typedef VOID (CALLBACK *PRTL_OVERLAPPED_COMPLETION_ROUTINE)(DWORD,DWORD,LPVOID);
2053 typedef VOID (CALLBACK *PTIMER_APC_ROUTINE) ( PVOID, ULONG, LONG );
2055 typedef enum _EVENT_INFORMATION_CLASS {
2056 EventBasicInformation
2057 } EVENT_INFORMATION_CLASS, *PEVENT_INFORMATION_CLASS;
2059 typedef struct _EVENT_BASIC_INFORMATION {
2060 EVENT_TYPE EventType;
2061 LONG EventState;
2062 } EVENT_BASIC_INFORMATION, *PEVENT_BASIC_INFORMATION;
2064 typedef enum _SEMAPHORE_INFORMATION_CLASS {
2065 SemaphoreBasicInformation
2066 } SEMAPHORE_INFORMATION_CLASS, *PSEMAPHORE_INFORMATION_CLASS;
2068 typedef struct _SEMAPHORE_BASIC_INFORMATION {
2069 ULONG CurrentCount;
2070 ULONG MaximumCount;
2071 } SEMAPHORE_BASIC_INFORMATION, *PSEMAPHORE_BASIC_INFORMATION;
2073 typedef enum _SECTION_INFORMATION_CLASS
2075 SectionBasicInformation,
2076 SectionImageInformation,
2077 } SECTION_INFORMATION_CLASS;
2079 typedef struct _SECTION_BASIC_INFORMATION {
2080 PVOID BaseAddress;
2081 ULONG Attributes;
2082 LARGE_INTEGER Size;
2083 } SECTION_BASIC_INFORMATION, *PSECTION_BASIC_INFORMATION;
2085 typedef struct _SECTION_IMAGE_INFORMATION {
2086 PVOID TransferAddress;
2087 ULONG ZeroBits;
2088 SIZE_T MaximumStackSize;
2089 SIZE_T CommittedStackSize;
2090 ULONG SubSystemType;
2091 WORD SubsystemVersionLow;
2092 WORD SubsystemVersionHigh;
2093 ULONG GpValue;
2094 USHORT ImageCharacteristics;
2095 USHORT DllCharacteristics;
2096 USHORT Machine;
2097 BOOLEAN ImageContainsCode;
2098 union
2100 UCHAR ImageFlags;
2101 struct
2103 UCHAR ComPlusNativeReady : 1;
2104 UCHAR ComPlusILOnly : 1;
2105 UCHAR ImageDynamicallyRelocated : 1;
2106 UCHAR ImageMappedFlat : 1;
2107 UCHAR BaseBelow4gb : 1;
2108 UCHAR Reserved : 3;
2109 } DUMMYSTRUCTNAME;
2110 } DUMMYUNIONNAME;
2111 ULONG LoaderFlags;
2112 ULONG ImageFileSize;
2113 ULONG CheckSum;
2114 } SECTION_IMAGE_INFORMATION, *PSECTION_IMAGE_INFORMATION;
2116 typedef struct _LPC_SECTION_WRITE {
2117 ULONG Length;
2118 HANDLE SectionHandle;
2119 ULONG SectionOffset;
2120 ULONG ViewSize;
2121 PVOID ViewBase;
2122 PVOID TargetViewBase;
2123 } LPC_SECTION_WRITE, *PLPC_SECTION_WRITE;
2125 typedef struct _LPC_SECTION_READ {
2126 ULONG Length;
2127 ULONG ViewSize;
2128 PVOID ViewBase;
2129 } LPC_SECTION_READ, *PLPC_SECTION_READ;
2131 typedef struct _LPC_MESSAGE {
2132 USHORT DataSize;
2133 USHORT MessageSize;
2134 USHORT MessageType;
2135 USHORT VirtualRangesOffset;
2136 CLIENT_ID ClientId;
2137 ULONG_PTR MessageId;
2138 ULONG_PTR SectionSize;
2139 UCHAR Data[ANYSIZE_ARRAY];
2140 } LPC_MESSAGE, *PLPC_MESSAGE;
2142 typedef struct _RTL_USER_PROCESS_INFORMATION
2144 ULONG Length;
2145 HANDLE Process;
2146 HANDLE Thread;
2147 CLIENT_ID ClientId;
2148 SECTION_IMAGE_INFORMATION ImageInformation;
2149 } RTL_USER_PROCESS_INFORMATION, *PRTL_USER_PROCESS_INFORMATION;
2151 typedef enum _SHUTDOWN_ACTION {
2152 ShutdownNoReboot,
2153 ShutdownReboot,
2154 ShutdownPowerOff
2155 } SHUTDOWN_ACTION, *PSHUTDOWN_ACTION;
2157 typedef struct _COUNTED_REASON_CONTEXT
2159 ULONG Version;
2160 ULONG Flags;
2161 union
2163 struct
2165 UNICODE_STRING ResourceFileName;
2166 USHORT ResourceReasonId;
2167 ULONG StringCount;
2168 UNICODE_STRING *ReasonStrings;
2169 } DUMMYSTRUCTNAME;
2170 UNICODE_STRING SimpleString;
2171 } DUMMYUNIONNAME;
2172 } COUNTED_REASON_CONTEXT, *PCOUNTED_REASON_CONTEXT;
2174 typedef enum _KPROFILE_SOURCE {
2175 ProfileTime,
2176 ProfileAlignmentFixup,
2177 ProfileTotalIssues,
2178 ProfilePipelineDry,
2179 ProfileLoadInstructions,
2180 ProfilePipelineFrozen,
2181 ProfileBranchInstructions,
2182 ProfileTotalNonissues,
2183 ProfileDcacheMisses,
2184 ProfileIcacheMisses,
2185 ProfileCacheMisses,
2186 ProfileBranchMispredictions,
2187 ProfileStoreInstructions,
2188 ProfileFpInstructions,
2189 ProfileIntegerInstructions,
2190 Profile2Issue,
2191 Profile3Issue,
2192 Profile4Issue,
2193 ProfileSpecialInstructions,
2194 ProfileTotalCycles,
2195 ProfileIcacheIssues,
2196 ProfileDcacheAccesses,
2197 ProfileMemoryBarrierCycles,
2198 ProfileLoadLinkedIssues,
2199 ProfileMaximum
2200 } KPROFILE_SOURCE, *PKPROFILE_SOURCE;
2202 typedef struct _DIRECTORY_BASIC_INFORMATION {
2203 UNICODE_STRING ObjectName;
2204 UNICODE_STRING ObjectTypeName;
2205 } DIRECTORY_BASIC_INFORMATION, *PDIRECTORY_BASIC_INFORMATION;
2207 typedef struct _INITIAL_TEB {
2208 void *OldStackBase;
2209 void *OldStackLimit;
2210 void *StackBase;
2211 void *StackLimit;
2212 void *DeallocationStack;
2213 } INITIAL_TEB, *PINITIAL_TEB;
2215 typedef enum _PORT_INFORMATION_CLASS {
2216 PortNoInformation
2217 } PORT_INFORMATION_CLASS, *PPORT_INFORMATION_CLASS;
2219 typedef enum _IO_COMPLETION_INFORMATION_CLASS {
2220 IoCompletionBasicInformation
2221 } IO_COMPLETION_INFORMATION_CLASS, *PIO_COMPLETION_INFORMATION_CLASS;
2223 typedef struct _FILE_COMPLETION_INFORMATION {
2224 HANDLE CompletionPort;
2225 ULONG_PTR CompletionKey;
2226 } FILE_COMPLETION_INFORMATION, *PFILE_COMPLETION_INFORMATION;
2228 #define IO_COMPLETION_QUERY_STATE 0x0001
2229 #define IO_COMPLETION_MODIFY_STATE 0x0002
2230 #define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
2232 typedef struct _FILE_IO_COMPLETION_INFORMATION {
2233 ULONG_PTR CompletionKey;
2234 ULONG_PTR CompletionValue;
2235 IO_STATUS_BLOCK IoStatusBlock;
2236 } FILE_IO_COMPLETION_INFORMATION, *PFILE_IO_COMPLETION_INFORMATION;
2238 typedef enum _HARDERROR_RESPONSE_OPTION {
2239 OptionAbortRetryIgnore,
2240 OptionOk,
2241 OptionOkCancel,
2242 OptionRetryCancel,
2243 OptionYesNo,
2244 OptionYesNoCancel,
2245 OptionShutdownSystem
2246 } HARDERROR_RESPONSE_OPTION, *PHARDERROR_RESPONSE_OPTION;
2248 typedef enum _HARDERROR_RESPONSE {
2249 ResponseReturnToCaller,
2250 ResponseNotHandled,
2251 ResponseAbort,
2252 ResponseCancel,
2253 ResponseIgnore,
2254 ResponseNo,
2255 ResponseOk,
2256 ResponseRetry,
2257 ResponseYes
2258 } HARDERROR_RESPONSE, *PHARDERROR_RESPONSE;
2260 typedef enum _SYSDBG_COMMAND {
2261 SysDbgQueryModuleInformation,
2262 SysDbgQueryTraceInformation,
2263 SysDbgSetTracepoint,
2264 SysDbgSetSpecialCall,
2265 SysDbgClearSpecialCalls,
2266 SysDbgQuerySpecialCalls,
2267 SysDbgBreakPoint,
2268 SysDbgQueryVersion,
2269 SysDbgReadVirtual,
2270 SysDbgWriteVirtual,
2271 SysDbgReadPhysical,
2272 SysDbgWritePhysical,
2273 SysDbgReadControlSpace,
2274 SysDbgWriteControlSpace,
2275 SysDbgReadIoSpace,
2276 SysDbgWriteIoSpace,
2277 SysDbgReadMsr,
2278 SysDbgWriteMsr,
2279 SysDbgReadBusData,
2280 SysDbgWriteBusData
2281 } SYSDBG_COMMAND, *PSYSDBG_COMMAND;
2283 typedef struct _CPTABLEINFO
2285 USHORT CodePage;
2286 USHORT MaximumCharacterSize;
2287 USHORT DefaultChar;
2288 USHORT UniDefaultChar;
2289 USHORT TransDefaultChar;
2290 USHORT TransUniDefaultChar;
2291 USHORT DBCSCodePage;
2292 UCHAR LeadByte[12];
2293 USHORT *MultiByteTable;
2294 void *WideCharTable;
2295 USHORT *DBCSRanges;
2296 USHORT *DBCSOffsets;
2297 } CPTABLEINFO, *PCPTABLEINFO;
2299 typedef struct _NLSTABLEINFO
2301 CPTABLEINFO OemTableInfo;
2302 CPTABLEINFO AnsiTableInfo;
2303 USHORT *UpperCaseTable;
2304 USHORT *LowerCaseTable;
2305 } NLSTABLEINFO, *PNLSTABLEINFO;
2307 /*************************************************************************
2308 * Loader structures
2310 * Those are not part of standard Winternl.h
2313 typedef struct _LDR_SERVICE_TAG_RECORD
2315 struct _LDR_SERVICE_TAG_RECORD *Next;
2316 ULONG ServiceTag;
2317 } LDR_SERVICE_TAG_RECORD, *PLDR_SERVICE_TAG_RECORD;
2319 typedef struct _LDRP_CSLIST
2321 SINGLE_LIST_ENTRY *Tail;
2322 } LDRP_CSLIST, *PLDRP_CSLIST;
2324 typedef enum _LDR_DDAG_STATE
2326 LdrModulesMerged = -5,
2327 LdrModulesInitError = -4,
2328 LdrModulesSnapError = -3,
2329 LdrModulesUnloaded = -2,
2330 LdrModulesUnloading = -1,
2331 LdrModulesPlaceHolder = 0,
2332 LdrModulesMapping = 1,
2333 LdrModulesMapped = 2,
2334 LdrModulesWaitingForDependencies = 3,
2335 LdrModulesSnapping = 4,
2336 LdrModulesSnapped = 5,
2337 LdrModulesCondensed = 6,
2338 LdrModulesReadyToInit = 7,
2339 LdrModulesInitializing = 8,
2340 LdrModulesReadyToRun = 9,
2341 } LDR_DDAG_STATE;
2343 typedef struct _LDR_DDAG_NODE
2345 LIST_ENTRY Modules;
2346 LDR_SERVICE_TAG_RECORD *ServiceTagList;
2347 ULONG LoadCount;
2348 ULONG ReferenceCount;
2349 ULONG DependencyCount;
2350 union
2352 LDRP_CSLIST Dependencies;
2353 SINGLE_LIST_ENTRY RemovalLink;
2355 LDRP_CSLIST IncomingDependencies;
2356 LDR_DDAG_STATE State;
2357 SINGLE_LIST_ENTRY CondenseLink;
2358 ULONG PreorderNumber;
2359 ULONG LowestLink;
2360 } LDR_DDAG_NODE, *PLDR_DDAG_NODE;
2362 typedef enum _LDR_DLL_LOAD_REASON
2364 LoadReasonStaticDependency,
2365 LoadReasonStaticForwarderDependency,
2366 LoadReasonDynamicForwarderDependency,
2367 LoadReasonDelayloadDependency,
2368 LoadReasonDynamicLoad,
2369 LoadReasonAsImageLoad,
2370 LoadReasonAsDataLoad,
2371 LoadReasonUnknown = -1
2372 } LDR_DLL_LOAD_REASON, *PLDR_DLL_LOAD_REASON;
2374 typedef struct _LDR_DATA_TABLE_ENTRY
2376 LIST_ENTRY InLoadOrderLinks;
2377 LIST_ENTRY InMemoryOrderLinks;
2378 LIST_ENTRY InInitializationOrderLinks;
2379 void* DllBase;
2380 void* EntryPoint;
2381 ULONG SizeOfImage;
2382 UNICODE_STRING FullDllName;
2383 UNICODE_STRING BaseDllName;
2384 ULONG Flags;
2385 SHORT LoadCount;
2386 SHORT TlsIndex;
2387 HANDLE SectionHandle;
2388 ULONG CheckSum;
2389 ULONG TimeDateStamp;
2390 HANDLE ActivationContext;
2391 void* Lock;
2392 LDR_DDAG_NODE* DdagNode;
2393 LIST_ENTRY NodeModuleLink;
2394 struct _LDRP_LOAD_CONTEXT *LoadContext;
2395 void* ParentDllBase;
2396 void* SwitchBackContext;
2397 RTL_BALANCED_NODE BaseAddressIndexNode;
2398 RTL_BALANCED_NODE MappingInfoIndexNode;
2399 ULONG_PTR OriginalBase;
2400 LARGE_INTEGER LoadTime;
2401 ULONG BaseNameHashValue;
2402 LDR_DLL_LOAD_REASON LoadReason;
2403 ULONG ImplicitPathOptions;
2404 ULONG ReferenceCount;
2405 } LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY;
2407 typedef struct _LDR_DLL_LOADED_NOTIFICATION_DATA
2409 ULONG Flags;
2410 const UNICODE_STRING *FullDllName;
2411 const UNICODE_STRING *BaseDllName;
2412 void *DllBase;
2413 ULONG SizeOfImage;
2414 } LDR_DLL_LOADED_NOTIFICATION_DATA, *PLDR_DLL_LOADED_NOTIFICATION_DATA;
2416 typedef struct _LDR_DLL_UNLOADED_NOTIFICATION_DATA
2418 ULONG Flags;
2419 const UNICODE_STRING *FullDllName;
2420 const UNICODE_STRING *BaseDllName;
2421 void *DllBase;
2422 ULONG SizeOfImage;
2423 } LDR_DLL_UNLOADED_NOTIFICATION_DATA, *PLDR_DLL_UNLOADED_NOTIFICATION_DATA;
2425 typedef union _LDR_DLL_NOTIFICATION_DATA
2427 LDR_DLL_LOADED_NOTIFICATION_DATA Loaded;
2428 LDR_DLL_UNLOADED_NOTIFICATION_DATA Unloaded;
2429 } LDR_DLL_NOTIFICATION_DATA, *PLDR_DLL_NOTIFICATION_DATA;
2431 typedef void (CALLBACK *PLDR_DLL_NOTIFICATION_FUNCTION)(ULONG, LDR_DLL_NOTIFICATION_DATA*, void*);
2433 /* those defines are (some of the) regular LDR_DATA_TABLE_ENTRY.Flags values */
2434 #define LDR_IMAGE_IS_DLL 0x00000004
2435 #define LDR_LOAD_IN_PROGRESS 0x00001000
2436 #define LDR_UNLOAD_IN_PROGRESS 0x00002000
2437 #define LDR_NO_DLL_CALLS 0x00040000
2438 #define LDR_PROCESS_ATTACHED 0x00080000
2439 #define LDR_COR_IMAGE 0x00400000
2440 #define LDR_COR_ILONLY 0x01000000
2442 /* these ones is Wine specific */
2443 #define LDR_DONT_RESOLVE_REFS 0x40000000
2444 #define LDR_WINE_INTERNAL 0x80000000
2446 /* flag for LdrAddRefDll */
2447 #define LDR_ADDREF_DLL_PIN 0x00000001
2449 #define LDR_DLL_NOTIFICATION_REASON_LOADED 1
2450 #define LDR_DLL_NOTIFICATION_REASON_UNLOADED 2
2452 /* FIXME: to be checked */
2453 #define MAXIMUM_FILENAME_LENGTH 256
2455 typedef struct _SYSTEM_MODULE
2457 PVOID Section; /* 00/00 */
2458 PVOID MappedBaseAddress; /* 04/08 */
2459 PVOID ImageBaseAddress; /* 08/10 */
2460 ULONG ImageSize; /* 0c/18 */
2461 ULONG Flags; /* 10/1c */
2462 WORD LoadOrderIndex; /* 14/20 */
2463 WORD InitOrderIndex; /* 16/22 */
2464 WORD LoadCount; /* 18/24 */
2465 WORD NameOffset; /* 1a/26 */
2466 BYTE Name[MAXIMUM_FILENAME_LENGTH]; /* 1c/28 */
2467 } SYSTEM_MODULE, *PSYSTEM_MODULE;
2469 typedef struct _SYSTEM_MODULE_INFORMATION
2471 ULONG ModulesCount;
2472 SYSTEM_MODULE Modules[1]; /* FIXME: should be Modules[0] */
2473 } SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;
2475 #define PROCESS_CREATE_FLAGS_BREAKAWAY 0x00000001
2476 #define PROCESS_CREATE_FLAGS_NO_DEBUG_INHERIT 0x00000002
2477 #define PROCESS_CREATE_FLAGS_INHERIT_HANDLES 0x00000004
2478 #define PROCESS_CREATE_FLAGS_OVERRIDE_ADDRESS_SPACE 0x00000008
2479 #define PROCESS_CREATE_FLAGS_LARGE_PAGES 0x00000010
2480 #define PROCESS_CREATE_FLAGS_LARGE_PAGE_SYSTEM_DLL 0x00000020
2481 #define PROCESS_CREATE_FLAGS_PROTECTED_PROCESS 0x00000040
2482 #define PROCESS_CREATE_FLAGS_CREATE_SESSION 0x00000080
2483 #define PROCESS_CREATE_FLAGS_INHERIT_FROM_PARENT 0x00000100
2484 #define PROCESS_CREATE_FLAGS_SUSPENDED 0x00000200
2485 #define PROCESS_CREATE_FLAGS_EXTENDED_UNKNOWN 0x00000400
2487 #define THREAD_CREATE_FLAGS_CREATE_SUSPENDED 0x00000001
2488 #define THREAD_CREATE_FLAGS_SKIP_THREAD_ATTACH 0x00000002
2489 #define THREAD_CREATE_FLAGS_HIDE_FROM_DEBUGGER 0x00000004
2490 #define THREAD_CREATE_FLAGS_HAS_SECURITY_DESCRIPTOR 0x00000010
2491 #define THREAD_CREATE_FLAGS_ACCESS_CHECK_IN_TARGET 0x00000020
2492 #define THREAD_CREATE_FLAGS_INITIAL_THREAD 0x00000080
2494 typedef LONG (CALLBACK *PRTL_EXCEPTION_FILTER)(PEXCEPTION_POINTERS);
2496 typedef void (CALLBACK *PTP_IO_CALLBACK)(PTP_CALLBACK_INSTANCE,void*,void*,IO_STATUS_BLOCK*,PTP_IO);
2498 #define PS_ATTRIBUTE_THREAD 0x00010000
2499 #define PS_ATTRIBUTE_INPUT 0x00020000
2500 #define PS_ATTRIBUTE_ADDITIVE 0x00040000
2502 typedef enum _PS_ATTRIBUTE_NUM
2504 PsAttributeParentProcess,
2505 PsAttributeDebugPort,
2506 PsAttributeToken,
2507 PsAttributeClientId,
2508 PsAttributeTebAddress,
2509 PsAttributeImageName,
2510 PsAttributeImageInfo,
2511 PsAttributeMemoryReserve,
2512 PsAttributePriorityClass,
2513 PsAttributeErrorMode,
2514 PsAttributeStdHandleInfo,
2515 PsAttributeHandleList,
2516 PsAttributeGroupAffinity,
2517 PsAttributePreferredNode,
2518 PsAttributeIdealProcessor,
2519 PsAttributeUmsThread,
2520 PsAttributeMitigationOptions,
2521 PsAttributeProtectionLevel,
2522 PsAttributeSecureProcess,
2523 PsAttributeJobList,
2524 PsAttributeChildProcessPolicy,
2525 PsAttributeAllApplicationPackagesPolicy,
2526 PsAttributeWin32kFilter,
2527 PsAttributeSafeOpenPromptOriginClaim,
2528 PsAttributeBnoIsolation,
2529 PsAttributeDesktopAppPolicy,
2530 PsAttributeChpe,
2531 PsAttributeMax
2532 } PS_ATTRIBUTE_NUM;
2534 #define PS_ATTRIBUTE_PARENT_PROCESS (PsAttributeParentProcess | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE)
2535 #define PS_ATTRIBUTE_DEBUG_PORT (PsAttributeDebugPort | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE)
2536 #define PS_ATTRIBUTE_TOKEN (PsAttributeToken | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE)
2537 #define PS_ATTRIBUTE_CLIENT_ID (PsAttributeClientId | PS_ATTRIBUTE_THREAD)
2538 #define PS_ATTRIBUTE_TEB_ADDRESS (PsAttributeTebAddress | PS_ATTRIBUTE_THREAD)
2539 #define PS_ATTRIBUTE_IMAGE_NAME (PsAttributeImageName | PS_ATTRIBUTE_INPUT)
2540 #define PS_ATTRIBUTE_IMAGE_INFO (PsAttributeImageInfo)
2541 #define PS_ATTRIBUTE_MEMORY_RESERVE (PsAttributeMemoryReserve | PS_ATTRIBUTE_INPUT)
2542 #define PS_ATTRIBUTE_PRIORITY_CLASS (PsAttributePriorityClass | PS_ATTRIBUTE_INPUT)
2543 #define PS_ATTRIBUTE_ERROR_MODE (PsAttributeErrorMode | PS_ATTRIBUTE_INPUT)
2544 #define PS_ATTRIBUTE_STD_HANDLE_INFO (PsAttributeStdHandleInfo | PS_ATTRIBUTE_INPUT)
2545 #define PS_ATTRIBUTE_HANDLE_LIST (PsAttributeHandleList | PS_ATTRIBUTE_INPUT)
2546 #define PS_ATTRIBUTE_GROUP_AFFINITY (PsAttributeGroupAffinity | PS_ATTRIBUTE_THREAD | PS_ATTRIBUTE_INPUT)
2547 #define PS_ATTRIBUTE_PREFERRED_NODE (PsAttributePreferredNode | PS_ATTRIBUTE_INPUT)
2548 #define PS_ATTRIBUTE_IDEAL_PROCESSOR (PsAttributeIdealProcessor | PS_ATTRIBUTE_THREAD | PS_ATTRIBUTE_INPUT)
2549 #define PS_ATTRIBUTE_MITIGATION_OPTIONS (PsAttributeMitigationOptions | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_UNKNOWN)
2550 #define PS_ATTRIBUTE_PROTECTION_LEVEL (PsAttributeProtectionLevel | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_UNKNOWN)
2551 #define PS_ATTRIBUTE_SECURE_PROCESS (PsAttributeSecureProcess | PS_ATTRIBUTE_INPUT)
2552 #define PS_ATTRIBUTE_JOB_LIST (PsAttributeJobList | PS_ATTRIBUTE_INPUT)
2553 #define PS_ATTRIBUTE_CHILD_PROCESS_POLICY (PsAttributeChildProcessPolicy | PS_ATTRIBUTE_INPUT)
2554 #define PS_ATTRIBUTE_ALL_APPLICATION_PACKAGES_POLICY (PsAttributeAllApplicationPackagesPolicy | PS_ATTRIBUTE_INPUT)
2555 #define PS_ATTRIBUTE_WIN32K_FILTER (PsAttributeWin32kFilter | PS_ATTRIBUTE_INPUT)
2556 #define PS_ATTRIBUTE_SAFE_OPEN_PROMPT_ORIGIN_CLAIM (PsAttributeSafeOpenPromptOriginClaim | PS_ATTRIBUTE_INPUT)
2557 #define PS_ATTRIBUTE_BNO_ISOLATION (PsAttributeBnoIsolation | PS_ATTRIBUTE_INPUT)
2558 #define PS_ATTRIBUTE_DESKTOP_APP_POLICY (PsAttributeDesktopAppPolicy | PS_ATTRIBUTE_INPUT)
2560 typedef struct _PS_ATTRIBUTE
2562 ULONG_PTR Attribute;
2563 SIZE_T Size;
2564 union
2566 ULONG_PTR Value;
2567 void *ValuePtr;
2569 SIZE_T *ReturnLength;
2570 } PS_ATTRIBUTE;
2572 typedef struct _PS_ATTRIBUTE_LIST
2574 SIZE_T TotalLength;
2575 PS_ATTRIBUTE Attributes[1];
2576 } PS_ATTRIBUTE_LIST, *PPS_ATTRIBUTE_LIST;
2578 typedef enum _PS_CREATE_STATE
2580 PsCreateInitialState,
2581 PsCreateFailOnFileOpen,
2582 PsCreateFailOnSectionCreate,
2583 PsCreateFailExeFormat,
2584 PsCreateFailMachineMismatch,
2585 PsCreateFailExeName,
2586 PsCreateSuccess,
2587 PsCreateMaximumStates
2588 } PS_CREATE_STATE;
2590 typedef struct _PS_CREATE_INFO
2592 SIZE_T Size;
2593 PS_CREATE_STATE State;
2594 union
2596 struct
2598 union
2600 ULONG InitFlags;
2601 struct
2603 UCHAR WriteOutputOnExit : 1;
2604 UCHAR DetectManifest : 1;
2605 UCHAR IFEOSkipDebugger : 1;
2606 UCHAR IFEODoNotPropagateKeyState : 1;
2607 UCHAR SpareBits1 : 4;
2608 UCHAR SpareBits2 : 8;
2609 USHORT ProhibitedImageCharacteristics : 16;
2612 ACCESS_MASK AdditionalFileAccess;
2613 } InitState;
2614 struct
2616 HANDLE FileHandle;
2617 } FailSection;
2618 struct
2620 USHORT DllCharacteristics;
2621 } ExeFormat;
2622 struct
2624 HANDLE IFEOKey;
2625 } ExeName;
2626 struct
2628 union
2630 ULONG OutputFlags;
2631 struct
2633 UCHAR ProtectedProcess : 1;
2634 UCHAR AddressSpaceOverride : 1;
2635 UCHAR DevOverrideEnabled : 1;
2636 UCHAR ManifestDetected : 1;
2637 UCHAR ProtectedProcessLight : 1;
2638 UCHAR SpareBits1 : 3;
2639 UCHAR SpareBits2 : 8;
2640 USHORT SpareBits3 : 16;
2643 HANDLE FileHandle;
2644 HANDLE SectionHandle;
2645 ULONGLONG UserProcessParametersNative;
2646 ULONG UserProcessParametersWow64;
2647 ULONG CurrentParameterFlags;
2648 ULONGLONG PebAddressNative;
2649 ULONG PebAddressWow64;
2650 ULONGLONG ManifestAddress;
2651 ULONG ManifestSize;
2652 } SuccessState;
2654 } PS_CREATE_INFO, *PPS_CREATE_INFO;
2656 /***********************************************************************
2657 * Function declarations
2660 NTSYSAPI void WINAPI DbgBreakPoint(void);
2661 NTSYSAPI NTSTATUS WINAPIV DbgPrint(LPCSTR fmt, ...);
2662 NTSYSAPI NTSTATUS WINAPIV DbgPrintEx(ULONG iComponentId, ULONG Level, LPCSTR fmt, ...);
2663 NTSYSAPI NTSTATUS WINAPI DbgUiIssueRemoteBreakin(HANDLE);
2664 NTSYSAPI void WINAPI DbgUiRemoteBreakin(void*);
2665 NTSYSAPI void WINAPI DbgUserBreakPoint(void);
2666 NTSYSAPI NTSTATUS WINAPI LdrAccessResource(HMODULE,const IMAGE_RESOURCE_DATA_ENTRY*,void**,PULONG);
2667 NTSYSAPI NTSTATUS WINAPI LdrAddDllDirectory(const UNICODE_STRING*,void**);
2668 NTSYSAPI NTSTATUS WINAPI LdrAddRefDll(ULONG,HMODULE);
2669 NTSYSAPI NTSTATUS WINAPI LdrDisableThreadCalloutsForDll(HMODULE);
2670 NTSYSAPI NTSTATUS WINAPI LdrFindEntryForAddress(const void*, PLDR_DATA_TABLE_ENTRY*);
2671 NTSYSAPI NTSTATUS WINAPI LdrFindResourceDirectory_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DIRECTORY**);
2672 NTSYSAPI NTSTATUS WINAPI LdrFindResource_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DATA_ENTRY**);
2673 NTSYSAPI NTSTATUS WINAPI LdrGetDllDirectory(UNICODE_STRING*);
2674 NTSYSAPI NTSTATUS WINAPI LdrGetDllHandle(LPCWSTR, ULONG, const UNICODE_STRING*, HMODULE*);
2675 NTSYSAPI NTSTATUS WINAPI LdrGetDllPath(PCWSTR,ULONG,PWSTR*,PWSTR*);
2676 NTSYSAPI NTSTATUS WINAPI LdrGetProcedureAddress(HMODULE, const ANSI_STRING*, ULONG, void**);
2677 NTSYSAPI NTSTATUS WINAPI LdrLoadDll(LPCWSTR, DWORD, const UNICODE_STRING*, HMODULE*);
2678 NTSYSAPI NTSTATUS WINAPI LdrLockLoaderLock(ULONG,ULONG*,ULONG_PTR*);
2679 IMAGE_BASE_RELOCATION * WINAPI LdrProcessRelocationBlock(void*,UINT,USHORT*,INT_PTR);
2680 NTSYSAPI NTSTATUS WINAPI LdrQueryImageFileExecutionOptions(const UNICODE_STRING*,LPCWSTR,ULONG,void*,ULONG,ULONG*);
2681 NTSYSAPI NTSTATUS WINAPI LdrQueryProcessModuleInformation(SYSTEM_MODULE_INFORMATION*, ULONG, ULONG*);
2682 NTSYSAPI NTSTATUS WINAPI LdrRegisterDllNotification(ULONG,PLDR_DLL_NOTIFICATION_FUNCTION,void*,void**);
2683 NTSYSAPI NTSTATUS WINAPI LdrRemoveDllDirectory(void*);
2684 NTSYSAPI NTSTATUS WINAPI LdrSetDefaultDllDirectories(ULONG);
2685 NTSYSAPI NTSTATUS WINAPI LdrSetDllDirectory(const UNICODE_STRING*);
2686 NTSYSAPI void WINAPI LdrShutdownProcess(void);
2687 NTSYSAPI void WINAPI LdrShutdownThread(void);
2688 NTSYSAPI NTSTATUS WINAPI LdrUnloadDll(HMODULE);
2689 NTSYSAPI NTSTATUS WINAPI LdrUnlockLoaderLock(ULONG,ULONG_PTR);
2690 NTSYSAPI NTSTATUS WINAPI LdrUnregisterDllNotification(void*);
2691 NTSYSAPI NTSTATUS WINAPI NtAcceptConnectPort(PHANDLE,ULONG,PLPC_MESSAGE,BOOLEAN,PLPC_SECTION_WRITE,PLPC_SECTION_READ);
2692 NTSYSAPI NTSTATUS WINAPI NtAccessCheck(PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,PGENERIC_MAPPING,PPRIVILEGE_SET,PULONG,PULONG,NTSTATUS*);
2693 NTSYSAPI NTSTATUS WINAPI NtAccessCheckAndAuditAlarm(PUNICODE_STRING,HANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,ACCESS_MASK,PGENERIC_MAPPING,BOOLEAN,PACCESS_MASK,PBOOLEAN,PBOOLEAN);
2694 NTSYSAPI NTSTATUS WINAPI NtAddAtom(const WCHAR*,ULONG,RTL_ATOM*);
2695 NTSYSAPI NTSTATUS WINAPI NtAdjustGroupsToken(HANDLE,BOOLEAN,PTOKEN_GROUPS,ULONG,PTOKEN_GROUPS,PULONG);
2696 NTSYSAPI NTSTATUS WINAPI NtAdjustPrivilegesToken(HANDLE,BOOLEAN,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD);
2697 NTSYSAPI NTSTATUS WINAPI NtAlertResumeThread(HANDLE,PULONG);
2698 NTSYSAPI NTSTATUS WINAPI NtAlertThread(HANDLE ThreadHandle);
2699 NTSYSAPI NTSTATUS WINAPI NtAllocateLocallyUniqueId(PLUID lpLuid);
2700 NTSYSAPI NTSTATUS WINAPI NtAllocateUuids(PULARGE_INTEGER,PULONG,PULONG,PUCHAR);
2701 NTSYSAPI NTSTATUS WINAPI NtAllocateVirtualMemory(HANDLE,PVOID*,ULONG_PTR,SIZE_T*,ULONG,ULONG);
2702 NTSYSAPI NTSTATUS WINAPI NtAreMappedFilesTheSame(PVOID,PVOID);
2703 NTSYSAPI NTSTATUS WINAPI NtAssignProcessToJobObject(HANDLE,HANDLE);
2704 NTSYSAPI NTSTATUS WINAPI NtCallbackReturn(PVOID,ULONG,NTSTATUS);
2705 NTSYSAPI NTSTATUS WINAPI NtCancelIoFile(HANDLE,PIO_STATUS_BLOCK);
2706 NTSYSAPI NTSTATUS WINAPI NtCancelIoFileEx(HANDLE,PIO_STATUS_BLOCK,PIO_STATUS_BLOCK);
2707 NTSYSAPI NTSTATUS WINAPI NtCancelTimer(HANDLE, BOOLEAN*);
2708 NTSYSAPI NTSTATUS WINAPI NtClearEvent(HANDLE);
2709 NTSYSAPI NTSTATUS WINAPI NtClearPowerRequest(HANDLE,POWER_REQUEST_TYPE);
2710 NTSYSAPI NTSTATUS WINAPI NtClose(HANDLE);
2711 NTSYSAPI NTSTATUS WINAPI NtCloseObjectAuditAlarm(PUNICODE_STRING,HANDLE,BOOLEAN);
2712 NTSYSAPI NTSTATUS WINAPI NtCompleteConnectPort(HANDLE);
2713 NTSYSAPI NTSTATUS WINAPI NtConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
2714 NTSYSAPI NTSTATUS WINAPI NtContinue(PCONTEXT,BOOLEAN);
2715 NTSYSAPI NTSTATUS WINAPI NtCreateDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
2716 NTSYSAPI NTSTATUS WINAPI NtCreateEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *,EVENT_TYPE,BOOLEAN);
2717 NTSYSAPI NTSTATUS WINAPI NtCreateEventPair(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
2718 NTSYSAPI NTSTATUS WINAPI NtCreateFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,PLARGE_INTEGER,ULONG,ULONG,ULONG,ULONG,PVOID,ULONG);
2719 NTSYSAPI NTSTATUS WINAPI NtCreateIoCompletion(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,ULONG);
2720 NTSYSAPI NTSTATUS WINAPI NtCreateJobObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2721 NTSYSAPI NTSTATUS WINAPI NtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
2722 NTSYSAPI NTSTATUS WINAPI NtCreateKeyTransacted(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,HANDLE,ULONG*);
2723 NTSYSAPI NTSTATUS WINAPI NtCreateKeyedEvent(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG);
2724 NTSYSAPI NTSTATUS WINAPI NtCreateMailslotFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,PLARGE_INTEGER);
2725 NTSYSAPI NTSTATUS WINAPI NtCreateMutant(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,BOOLEAN);
2726 NTSYSAPI NTSTATUS WINAPI NtCreateNamedPipeFile(PHANDLE,ULONG,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,PLARGE_INTEGER);
2727 NTSYSAPI NTSTATUS WINAPI NtCreatePagingFile(PUNICODE_STRING,PLARGE_INTEGER,PLARGE_INTEGER,PLARGE_INTEGER);
2728 NTSYSAPI NTSTATUS WINAPI NtCreatePort(PHANDLE,POBJECT_ATTRIBUTES,ULONG,ULONG,PULONG);
2729 NTSYSAPI NTSTATUS WINAPI NtCreatePowerRequest(HANDLE*,COUNTED_REASON_CONTEXT*);
2730 NTSYSAPI NTSTATUS WINAPI NtCreateProcess(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,HANDLE,BOOLEAN,HANDLE,HANDLE,HANDLE);
2731 NTSYSAPI NTSTATUS WINAPI NtCreateProfile(PHANDLE,HANDLE,PVOID,ULONG,ULONG,PVOID,ULONG,KPROFILE_SOURCE,KAFFINITY);
2732 NTSYSAPI NTSTATUS WINAPI NtCreateSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const LARGE_INTEGER*,ULONG,ULONG,HANDLE);
2733 NTSYSAPI NTSTATUS WINAPI NtCreateSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,LONG,LONG);
2734 NTSYSAPI NTSTATUS WINAPI NtCreateSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PUNICODE_STRING);
2735 NTSYSAPI NTSTATUS WINAPI NtCreateThread(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,HANDLE,PCLIENT_ID,PCONTEXT,PINITIAL_TEB,BOOLEAN);
2736 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*);
2737 NTSYSAPI NTSTATUS WINAPI NtCreateTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*, TIMER_TYPE);
2738 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);
2739 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*);
2740 NTSYSAPI NTSTATUS WINAPI NtDelayExecution(BOOLEAN,const LARGE_INTEGER*);
2741 NTSYSAPI NTSTATUS WINAPI NtDeleteAtom(RTL_ATOM);
2742 NTSYSAPI NTSTATUS WINAPI NtDeleteFile(POBJECT_ATTRIBUTES);
2743 NTSYSAPI NTSTATUS WINAPI NtDeleteKey(HANDLE);
2744 NTSYSAPI NTSTATUS WINAPI NtDeleteValueKey(HANDLE,const UNICODE_STRING *);
2745 NTSYSAPI NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
2746 NTSYSAPI NTSTATUS WINAPI NtDisplayString(PUNICODE_STRING);
2747 NTSYSAPI NTSTATUS WINAPI NtDuplicateObject(HANDLE,HANDLE,HANDLE,PHANDLE,ACCESS_MASK,ULONG,ULONG);
2748 NTSYSAPI NTSTATUS WINAPI NtDuplicateToken(HANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,PHANDLE);
2749 NTSYSAPI NTSTATUS WINAPI NtEnumerateKey(HANDLE,ULONG,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
2750 NTSYSAPI NTSTATUS WINAPI NtEnumerateValueKey(HANDLE,ULONG,KEY_VALUE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2751 NTSYSAPI NTSTATUS WINAPI NtExtendSection(HANDLE,PLARGE_INTEGER);
2752 NTSYSAPI NTSTATUS WINAPI NtFindAtom(const WCHAR*,ULONG,RTL_ATOM*);
2753 NTSYSAPI NTSTATUS WINAPI NtFlushBuffersFile(HANDLE,IO_STATUS_BLOCK*);
2754 NTSYSAPI NTSTATUS WINAPI NtFlushInstructionCache(HANDLE,LPCVOID,SIZE_T);
2755 NTSYSAPI NTSTATUS WINAPI NtFlushKey(HANDLE);
2756 NTSYSAPI void WINAPI NtFlushProcessWriteBuffers(void);
2757 NTSYSAPI NTSTATUS WINAPI NtFlushVirtualMemory(HANDLE,LPCVOID*,SIZE_T*,ULONG);
2758 NTSYSAPI NTSTATUS WINAPI NtFlushWriteBuffer(VOID);
2759 NTSYSAPI NTSTATUS WINAPI NtFreeVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
2760 NTSYSAPI NTSTATUS WINAPI NtFsControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
2761 NTSYSAPI NTSTATUS WINAPI NtGetContextThread(HANDLE,CONTEXT*);
2762 NTSYSAPI ULONG WINAPI NtGetCurrentProcessorNumber(void);
2763 NTSYSAPI NTSTATUS WINAPI NtGetNlsSectionPtr(ULONG,ULONG,void*,void**,SIZE_T*);
2764 NTSYSAPI NTSTATUS WINAPI NtGetPlugPlayEvent(ULONG,ULONG,PVOID,ULONG);
2765 NTSYSAPI ULONG WINAPI NtGetTickCount(VOID);
2766 NTSYSAPI NTSTATUS WINAPI NtGetWriteWatch(HANDLE,ULONG,PVOID,SIZE_T,PVOID*,ULONG_PTR*,ULONG*);
2767 NTSYSAPI NTSTATUS WINAPI NtImpersonateAnonymousToken(HANDLE);
2768 NTSYSAPI NTSTATUS WINAPI NtImpersonateClientOfPort(HANDLE,PPORT_MESSAGE);
2769 NTSYSAPI NTSTATUS WINAPI NtImpersonateThread(HANDLE,HANDLE,PSECURITY_QUALITY_OF_SERVICE);
2770 NTSYSAPI NTSTATUS WINAPI NtInitializeRegistry(BOOLEAN);
2771 NTSYSAPI NTSTATUS WINAPI NtInitiatePowerAction(POWER_ACTION,SYSTEM_POWER_STATE,ULONG,BOOLEAN);
2772 NTSYSAPI NTSTATUS WINAPI NtIsProcessInJob(HANDLE,HANDLE);
2773 NTSYSAPI NTSTATUS WINAPI NtListenPort(HANDLE,PLPC_MESSAGE);
2774 NTSYSAPI NTSTATUS WINAPI NtLoadDriver(const UNICODE_STRING *);
2775 NTSYSAPI NTSTATUS WINAPI NtLoadKey(const OBJECT_ATTRIBUTES *,OBJECT_ATTRIBUTES *);
2776 NTSYSAPI NTSTATUS WINAPI NtLockFile(HANDLE,HANDLE,PIO_APC_ROUTINE,void*,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,ULONG*,BOOLEAN,BOOLEAN);
2777 NTSYSAPI NTSTATUS WINAPI NtLockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
2778 NTSYSAPI NTSTATUS WINAPI NtMakeTemporaryObject(HANDLE);
2779 NTSYSAPI NTSTATUS WINAPI NtMapViewOfSection(HANDLE,HANDLE,PVOID*,ULONG_PTR,SIZE_T,const LARGE_INTEGER*,SIZE_T*,SECTION_INHERIT,ULONG,ULONG);
2780 NTSYSAPI NTSTATUS WINAPI NtNotifyChangeDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,ULONG,BOOLEAN);
2781 NTSYSAPI NTSTATUS WINAPI NtNotifyChangeKey(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN);
2782 NTSYSAPI NTSTATUS WINAPI NtNotifyChangeMultipleKeys(HANDLE,ULONG,OBJECT_ATTRIBUTES*,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN);
2783 NTSYSAPI NTSTATUS WINAPI NtOpenDirectoryObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2784 NTSYSAPI NTSTATUS WINAPI NtOpenEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
2785 NTSYSAPI NTSTATUS WINAPI NtOpenEventPair(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2786 NTSYSAPI NTSTATUS WINAPI NtOpenFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG);
2787 NTSYSAPI NTSTATUS WINAPI NtOpenIoCompletion(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2788 NTSYSAPI NTSTATUS WINAPI NtOpenJobObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2789 NTSYSAPI NTSTATUS WINAPI NtOpenKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
2790 NTSYSAPI NTSTATUS WINAPI NtOpenKeyEx(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG);
2791 NTSYSAPI NTSTATUS WINAPI NtOpenKeyTransacted(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,HANDLE);
2792 NTSYSAPI NTSTATUS WINAPI NtOpenKeyTransactedEx(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,HANDLE);
2793 NTSYSAPI NTSTATUS WINAPI NtOpenKeyedEvent(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2794 NTSYSAPI NTSTATUS WINAPI NtOpenMutant(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2795 NTSYSAPI NTSTATUS WINAPI NtOpenObjectAuditAlarm(PUNICODE_STRING,PHANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,ACCESS_MASK,PPRIVILEGE_SET,BOOLEAN,BOOLEAN,PBOOLEAN);
2796 NTSYSAPI NTSTATUS WINAPI NtOpenProcess(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
2797 NTSYSAPI NTSTATUS WINAPI NtOpenProcessToken(HANDLE,DWORD,HANDLE *);
2798 NTSYSAPI NTSTATUS WINAPI NtOpenProcessTokenEx(HANDLE,DWORD,DWORD,HANDLE *);
2799 NTSYSAPI NTSTATUS WINAPI NtOpenSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2800 NTSYSAPI NTSTATUS WINAPI NtOpenSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2801 NTSYSAPI NTSTATUS WINAPI NtOpenSymbolicLinkObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2802 NTSYSAPI NTSTATUS WINAPI NtOpenThread(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
2803 NTSYSAPI NTSTATUS WINAPI NtOpenThreadToken(HANDLE,DWORD,BOOLEAN,HANDLE *);
2804 NTSYSAPI NTSTATUS WINAPI NtOpenThreadTokenEx(HANDLE,DWORD,BOOLEAN,DWORD,HANDLE *);
2805 NTSYSAPI NTSTATUS WINAPI NtOpenTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*);
2806 NTSYSAPI NTSTATUS WINAPI NtPowerInformation(POWER_INFORMATION_LEVEL,PVOID,ULONG,PVOID,ULONG);
2807 NTSYSAPI NTSTATUS WINAPI NtPrivilegeCheck(HANDLE,PPRIVILEGE_SET,PBOOLEAN);
2808 NTSYSAPI NTSTATUS WINAPI NtPrivilegeObjectAuditAlarm(PUNICODE_STRING,HANDLE,HANDLE,ULONG,PPRIVILEGE_SET,BOOLEAN);
2809 NTSYSAPI NTSTATUS WINAPI NtPrivilegedServiceAuditAlarm(PUNICODE_STRING,PUNICODE_STRING,HANDLE,PPRIVILEGE_SET,BOOLEAN);
2810 NTSYSAPI NTSTATUS WINAPI NtProtectVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG,ULONG*);
2811 NTSYSAPI NTSTATUS WINAPI NtPulseEvent(HANDLE,LONG*);
2812 NTSYSAPI NTSTATUS WINAPI NtQueueApcThread(HANDLE,PNTAPCFUNC,ULONG_PTR,ULONG_PTR,ULONG_PTR);
2813 NTSYSAPI NTSTATUS WINAPI NtQueryAttributesFile(const OBJECT_ATTRIBUTES*,FILE_BASIC_INFORMATION*);
2814 NTSYSAPI NTSTATUS WINAPI NtQueryDefaultLocale(BOOLEAN,LCID*);
2815 NTSYSAPI NTSTATUS WINAPI NtQueryDefaultUILanguage(LANGID*);
2816 NTSYSAPI NTSTATUS WINAPI NtQueryDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS,BOOLEAN,PUNICODE_STRING,BOOLEAN);
2817 NTSYSAPI NTSTATUS WINAPI NtQueryDirectoryObject(HANDLE,PDIRECTORY_BASIC_INFORMATION,ULONG,BOOLEAN,BOOLEAN,PULONG,PULONG);
2818 NTSYSAPI NTSTATUS WINAPI NtQueryEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,BOOLEAN,PVOID,ULONG,PULONG,BOOLEAN);
2819 NTSYSAPI NTSTATUS WINAPI NtQueryEvent(HANDLE,EVENT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2820 NTSYSAPI NTSTATUS WINAPI NtQueryFullAttributesFile(const OBJECT_ATTRIBUTES*,FILE_NETWORK_OPEN_INFORMATION*);
2821 NTSYSAPI NTSTATUS WINAPI NtQueryInformationAtom(RTL_ATOM,ATOM_INFORMATION_CLASS,PVOID,ULONG,ULONG*);
2822 NTSYSAPI NTSTATUS WINAPI NtQueryInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,LONG,FILE_INFORMATION_CLASS);
2823 NTSYSAPI NTSTATUS WINAPI NtQueryInformationJobObject(HANDLE,JOBOBJECTINFOCLASS,PVOID,ULONG,PULONG);
2824 NTSYSAPI NTSTATUS WINAPI NtQueryInformationPort(HANDLE,PORT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2825 NTSYSAPI NTSTATUS WINAPI NtQueryInformationProcess(HANDLE,PROCESSINFOCLASS,PVOID,ULONG,PULONG);
2826 NTSYSAPI NTSTATUS WINAPI NtQueryInformationThread(HANDLE,THREADINFOCLASS,PVOID,ULONG,PULONG);
2827 NTSYSAPI NTSTATUS WINAPI NtQueryInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2828 NTSYSAPI NTSTATUS WINAPI NtQueryInstallUILanguage(LANGID*);
2829 NTSYSAPI NTSTATUS WINAPI NtQueryIntervalProfile(KPROFILE_SOURCE,PULONG);
2830 NTSYSAPI NTSTATUS WINAPI NtQueryIoCompletion(HANDLE,IO_COMPLETION_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2831 NTSYSAPI NTSTATUS WINAPI NtQueryKey(HANDLE,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
2832 NTSYSAPI NTSTATUS WINAPI NtQueryMultipleValueKey(HANDLE,PKEY_MULTIPLE_VALUE_INFORMATION,ULONG,PVOID,ULONG,PULONG);
2833 NTSYSAPI NTSTATUS WINAPI NtQueryMutant(HANDLE,MUTANT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2834 NTSYSAPI NTSTATUS WINAPI NtQueryObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG, PULONG);
2835 NTSYSAPI NTSTATUS WINAPI NtQueryOpenSubKeys(POBJECT_ATTRIBUTES,PULONG);
2836 NTSYSAPI NTSTATUS WINAPI NtQueryPerformanceCounter(PLARGE_INTEGER, PLARGE_INTEGER);
2837 NTSYSAPI NTSTATUS WINAPI NtQuerySecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,ULONG,PULONG);
2838 NTSYSAPI NTSTATUS WINAPI NtQuerySection(HANDLE,SECTION_INFORMATION_CLASS,PVOID,SIZE_T,SIZE_T*);
2839 NTSYSAPI NTSTATUS WINAPI NtQuerySemaphore(HANDLE,SEMAPHORE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2840 NTSYSAPI NTSTATUS WINAPI NtQuerySymbolicLinkObject(HANDLE,PUNICODE_STRING,PULONG);
2841 NTSYSAPI NTSTATUS WINAPI NtQuerySystemEnvironmentValue(PUNICODE_STRING,PWCHAR,ULONG,PULONG);
2842 NTSYSAPI NTSTATUS WINAPI NtQuerySystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2843 NTSYSAPI NTSTATUS WINAPI NtQuerySystemInformationEx(SYSTEM_INFORMATION_CLASS,void*,ULONG,void*,ULONG,ULONG*);
2844 NTSYSAPI NTSTATUS WINAPI NtQuerySystemTime(PLARGE_INTEGER);
2845 NTSYSAPI NTSTATUS WINAPI NtQueryTimer(HANDLE,TIMER_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2846 NTSYSAPI NTSTATUS WINAPI NtQueryTimerResolution(PULONG,PULONG,PULONG);
2847 NTSYSAPI NTSTATUS WINAPI NtQueryValueKey(HANDLE,const UNICODE_STRING *,KEY_VALUE_INFORMATION_CLASS,void *,DWORD,DWORD *);
2848 NTSYSAPI NTSTATUS WINAPI NtQueryLicenseValue(const UNICODE_STRING *,ULONG *,PVOID,ULONG,ULONG *);
2849 NTSYSAPI NTSTATUS WINAPI NtQueryVirtualMemory(HANDLE,LPCVOID,MEMORY_INFORMATION_CLASS,PVOID,SIZE_T,SIZE_T*);
2850 NTSYSAPI NTSTATUS WINAPI NtQueryVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
2851 NTSYSAPI NTSTATUS WINAPI NtRaiseException(PEXCEPTION_RECORD,PCONTEXT,BOOL);
2852 NTSYSAPI NTSTATUS WINAPI NtRaiseHardError(NTSTATUS,ULONG,PUNICODE_STRING,PVOID*,HARDERROR_RESPONSE_OPTION,PHARDERROR_RESPONSE);
2853 NTSYSAPI NTSTATUS WINAPI NtReadFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,PLARGE_INTEGER,PULONG);
2854 NTSYSAPI NTSTATUS WINAPI NtReadFileScatter(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,FILE_SEGMENT_ELEMENT*,ULONG,PLARGE_INTEGER,PULONG);
2855 NTSYSAPI NTSTATUS WINAPI NtReadRequestData(HANDLE,PLPC_MESSAGE,ULONG,PVOID,ULONG,PULONG);
2856 NTSYSAPI NTSTATUS WINAPI NtReadVirtualMemory(HANDLE,const void*,void*,SIZE_T,SIZE_T*);
2857 NTSYSAPI NTSTATUS WINAPI NtRegisterThreadTerminatePort(HANDLE);
2858 NTSYSAPI NTSTATUS WINAPI NtReleaseKeyedEvent(HANDLE,const void*,BOOLEAN,const LARGE_INTEGER*);
2859 NTSYSAPI NTSTATUS WINAPI NtReleaseMutant(HANDLE,PLONG);
2860 NTSYSAPI NTSTATUS WINAPI NtReleaseSemaphore(HANDLE,ULONG,PULONG);
2861 NTSYSAPI NTSTATUS WINAPI NtRemoveIoCompletion(HANDLE,PULONG_PTR,PULONG_PTR,PIO_STATUS_BLOCK,PLARGE_INTEGER);
2862 NTSYSAPI NTSTATUS WINAPI NtRemoveIoCompletionEx(HANDLE,FILE_IO_COMPLETION_INFORMATION*,ULONG,ULONG*,LARGE_INTEGER*,BOOLEAN);
2863 NTSYSAPI NTSTATUS WINAPI NtRenameKey(HANDLE,UNICODE_STRING*);
2864 NTSYSAPI NTSTATUS WINAPI NtReplaceKey(POBJECT_ATTRIBUTES,HANDLE,POBJECT_ATTRIBUTES);
2865 NTSYSAPI NTSTATUS WINAPI NtReplyPort(HANDLE,PLPC_MESSAGE);
2866 NTSYSAPI NTSTATUS WINAPI NtReplyWaitReceivePort(HANDLE,PULONG,PLPC_MESSAGE,PLPC_MESSAGE);
2867 NTSYSAPI NTSTATUS WINAPI NtReplyWaitReceivePortEx(HANDLE,PVOID*,PPORT_MESSAGE,PPORT_MESSAGE,PLARGE_INTEGER);
2868 NTSYSAPI NTSTATUS WINAPI NtReplyWaitReplyPort(HANDLE,PLPC_MESSAGE);
2869 NTSYSAPI NTSTATUS WINAPI NtRequestPort(HANDLE,PLPC_MESSAGE);
2870 NTSYSAPI NTSTATUS WINAPI NtRequestWaitReplyPort(HANDLE,PLPC_MESSAGE,PLPC_MESSAGE);
2871 NTSYSAPI NTSTATUS WINAPI NtResetEvent(HANDLE,LONG*);
2872 NTSYSAPI NTSTATUS WINAPI NtResetWriteWatch(HANDLE,PVOID,SIZE_T);
2873 NTSYSAPI NTSTATUS WINAPI NtRestoreKey(HANDLE,HANDLE,ULONG);
2874 NTSYSAPI NTSTATUS WINAPI NtResumeProcess(HANDLE);
2875 NTSYSAPI NTSTATUS WINAPI NtResumeThread(HANDLE,PULONG);
2876 NTSYSAPI NTSTATUS WINAPI NtSaveKey(HANDLE,HANDLE);
2877 NTSYSAPI NTSTATUS WINAPI NtSecureConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PSID,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
2878 NTSYSAPI NTSTATUS WINAPI NtSetContextThread(HANDLE,const CONTEXT*);
2879 NTSYSAPI NTSTATUS WINAPI NtSetDefaultHardErrorPort(HANDLE);
2880 NTSYSAPI NTSTATUS WINAPI NtSetDefaultLocale(BOOLEAN,LCID);
2881 NTSYSAPI NTSTATUS WINAPI NtSetDefaultUILanguage(LANGID);
2882 NTSYSAPI NTSTATUS WINAPI NtSetEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG);
2883 NTSYSAPI NTSTATUS WINAPI NtSetEvent(HANDLE,LONG*);
2884 NTSYSAPI NTSTATUS WINAPI NtSetHighEventPair(HANDLE);
2885 NTSYSAPI NTSTATUS WINAPI NtSetHighWaitLowEventPair(HANDLE);
2886 NTSYSAPI NTSTATUS WINAPI NtSetHighWaitLowThread(VOID);
2887 NTSYSAPI NTSTATUS WINAPI NtSetInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS);
2888 NTSYSAPI NTSTATUS WINAPI NtSetInformationJobObject(HANDLE,JOBOBJECTINFOCLASS,PVOID,ULONG);
2889 NTSYSAPI NTSTATUS WINAPI NtSetInformationKey(HANDLE,const int,PVOID,ULONG);
2890 NTSYSAPI NTSTATUS WINAPI NtSetInformationObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG);
2891 NTSYSAPI NTSTATUS WINAPI NtSetInformationProcess(HANDLE,PROCESS_INFORMATION_CLASS,PVOID,ULONG);
2892 NTSYSAPI NTSTATUS WINAPI NtSetInformationThread(HANDLE,THREADINFOCLASS,LPCVOID,ULONG);
2893 NTSYSAPI NTSTATUS WINAPI NtSetInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG);
2894 NTSYSAPI NTSTATUS WINAPI NtSetIntervalProfile(ULONG,KPROFILE_SOURCE);
2895 NTSYSAPI NTSTATUS WINAPI NtSetIoCompletion(HANDLE,ULONG_PTR,ULONG_PTR,NTSTATUS,SIZE_T);
2896 NTSYSAPI NTSTATUS WINAPI NtSetLdtEntries(ULONG,LDT_ENTRY,ULONG,LDT_ENTRY);
2897 NTSYSAPI NTSTATUS WINAPI NtSetLowEventPair(HANDLE);
2898 NTSYSAPI NTSTATUS WINAPI NtSetLowWaitHighEventPair(HANDLE);
2899 NTSYSAPI NTSTATUS WINAPI NtSetLowWaitHighThread(VOID);
2900 NTSYSAPI NTSTATUS WINAPI NtSetPowerRequest(HANDLE,POWER_REQUEST_TYPE);
2901 NTSYSAPI NTSTATUS WINAPI NtSetSecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
2902 NTSYSAPI NTSTATUS WINAPI NtSetSystemEnvironmentValue(PUNICODE_STRING,PUNICODE_STRING);
2903 NTSYSAPI NTSTATUS WINAPI NtSetSystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG);
2904 NTSYSAPI NTSTATUS WINAPI NtSetSystemPowerState(POWER_ACTION,SYSTEM_POWER_STATE,ULONG);
2905 NTSYSAPI NTSTATUS WINAPI NtSetSystemTime(const LARGE_INTEGER*,LARGE_INTEGER*);
2906 NTSYSAPI NTSTATUS WINAPI NtSetThreadExecutionState(EXECUTION_STATE,EXECUTION_STATE*);
2907 NTSYSAPI NTSTATUS WINAPI NtSetTimer(HANDLE, const LARGE_INTEGER*, PTIMER_APC_ROUTINE, PVOID, BOOLEAN, ULONG, BOOLEAN*);
2908 NTSYSAPI NTSTATUS WINAPI NtSetTimerResolution(ULONG,BOOLEAN,PULONG);
2909 NTSYSAPI NTSTATUS WINAPI NtSetValueKey(HANDLE,const UNICODE_STRING *,ULONG,ULONG,const void *,ULONG);
2910 NTSYSAPI NTSTATUS WINAPI NtSetVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
2911 NTSYSAPI NTSTATUS WINAPI NtSignalAndWaitForSingleObject(HANDLE,HANDLE,BOOLEAN,const LARGE_INTEGER*);
2912 NTSYSAPI NTSTATUS WINAPI NtShutdownSystem(SHUTDOWN_ACTION);
2913 NTSYSAPI NTSTATUS WINAPI NtStartProfile(HANDLE);
2914 NTSYSAPI NTSTATUS WINAPI NtStopProfile(HANDLE);
2915 NTSYSAPI NTSTATUS WINAPI NtSuspendProcess(HANDLE);
2916 NTSYSAPI NTSTATUS WINAPI NtSuspendThread(HANDLE,PULONG);
2917 NTSYSAPI NTSTATUS WINAPI NtSystemDebugControl(SYSDBG_COMMAND,PVOID,ULONG,PVOID,ULONG,PULONG);
2918 NTSYSAPI NTSTATUS WINAPI NtTerminateJobObject(HANDLE,NTSTATUS);
2919 NTSYSAPI NTSTATUS WINAPI NtTerminateProcess(HANDLE,LONG);
2920 NTSYSAPI NTSTATUS WINAPI NtTerminateThread(HANDLE,LONG);
2921 NTSYSAPI NTSTATUS WINAPI NtTestAlert(VOID);
2922 NTSYSAPI NTSTATUS WINAPI NtUnloadDriver(const UNICODE_STRING *);
2923 NTSYSAPI NTSTATUS WINAPI NtUnloadKey(POBJECT_ATTRIBUTES);
2924 NTSYSAPI NTSTATUS WINAPI NtUnloadKeyEx(POBJECT_ATTRIBUTES,HANDLE);
2925 NTSYSAPI NTSTATUS WINAPI NtUnlockFile(HANDLE,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,PULONG);
2926 NTSYSAPI NTSTATUS WINAPI NtUnlockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
2927 NTSYSAPI NTSTATUS WINAPI NtUnmapViewOfSection(HANDLE,PVOID);
2928 NTSYSAPI NTSTATUS WINAPI NtVdmControl(ULONG,PVOID);
2929 NTSYSAPI NTSTATUS WINAPI NtWaitForKeyedEvent(HANDLE,const void*,BOOLEAN,const LARGE_INTEGER*);
2930 NTSYSAPI NTSTATUS WINAPI NtWaitForSingleObject(HANDLE,BOOLEAN,const LARGE_INTEGER*);
2931 NTSYSAPI NTSTATUS WINAPI NtWaitForMultipleObjects(ULONG,const HANDLE*,BOOLEAN,BOOLEAN,const LARGE_INTEGER*);
2932 NTSYSAPI NTSTATUS WINAPI NtWaitHighEventPair(HANDLE);
2933 NTSYSAPI NTSTATUS WINAPI NtWaitLowEventPair(HANDLE);
2934 NTSYSAPI NTSTATUS WINAPI NtWriteFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,const void*,ULONG,PLARGE_INTEGER,PULONG);
2935 NTSYSAPI NTSTATUS WINAPI NtWriteFileGather(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,FILE_SEGMENT_ELEMENT*,ULONG,PLARGE_INTEGER,PULONG);
2936 NTSYSAPI NTSTATUS WINAPI NtWriteRequestData(HANDLE,PLPC_MESSAGE,ULONG,PVOID,ULONG,PULONG);
2937 NTSYSAPI NTSTATUS WINAPI NtWriteVirtualMemory(HANDLE,void*,const void*,SIZE_T,SIZE_T*);
2938 NTSYSAPI NTSTATUS WINAPI NtYieldExecution(void);
2940 NTSYSAPI NTSTATUS WINAPI RtlAbsoluteToSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PULONG);
2941 NTSYSAPI void WINAPI RtlAcquirePebLock(void);
2942 NTSYSAPI BYTE WINAPI RtlAcquireResourceExclusive(LPRTL_RWLOCK,BYTE);
2943 NTSYSAPI BYTE WINAPI RtlAcquireResourceShared(LPRTL_RWLOCK,BYTE);
2944 NTSYSAPI void WINAPI RtlAcquireSRWLockExclusive(RTL_SRWLOCK*);
2945 NTSYSAPI void WINAPI RtlAcquireSRWLockShared(RTL_SRWLOCK*);
2946 NTSYSAPI NTSTATUS WINAPI RtlActivateActivationContext(DWORD,HANDLE,ULONG_PTR*);
2947 NTSYSAPI NTSTATUS WINAPI RtlActivateActivationContextEx(ULONG,TEB*,HANDLE,ULONG_PTR*);
2948 NTSYSAPI NTSTATUS WINAPI RtlAddAce(PACL,DWORD,DWORD,PACE_HEADER,DWORD);
2949 NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAce(PACL,DWORD,DWORD,PSID);
2950 NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
2951 NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedObjectAce(PACL,DWORD,DWORD,DWORD,GUID*,GUID*,PSID);
2952 NTSYSAPI NTSTATUS WINAPI RtlAddAccessDeniedAce(PACL,DWORD,DWORD,PSID);
2953 NTSYSAPI NTSTATUS WINAPI RtlAddAccessDeniedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
2954 NTSYSAPI NTSTATUS WINAPI RtlAddAccessDeniedObjectAce(PACL,DWORD,DWORD,DWORD,GUID*,GUID*,PSID);
2955 NTSYSAPI NTSTATUS WINAPI RtlAddAtomToAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*);
2956 NTSYSAPI NTSTATUS WINAPI RtlAddAuditAccessAce(PACL,DWORD,DWORD,PSID,BOOL,BOOL);
2957 NTSYSAPI NTSTATUS WINAPI RtlAddAuditAccessAceEx(PACL,DWORD,DWORD,DWORD,PSID,BOOL,BOOL);
2958 NTSYSAPI NTSTATUS WINAPI RtlAddAuditAccessObjectAce(PACL,DWORD,DWORD,DWORD,GUID*,GUID*,PSID,BOOL,BOOL);
2959 NTSYSAPI NTSTATUS WINAPI RtlAddMandatoryAce(PACL,DWORD,DWORD,DWORD,DWORD,PSID);
2960 NTSYSAPI void WINAPI RtlAddRefActivationContext(HANDLE);
2961 NTSYSAPI PVOID WINAPI RtlAddVectoredExceptionHandler(ULONG,PVECTORED_EXCEPTION_HANDLER);
2962 NTSYSAPI NTSTATUS WINAPI RtlAdjustPrivilege(ULONG,BOOLEAN,BOOLEAN,PBOOLEAN);
2963 NTSYSAPI NTSTATUS WINAPI RtlAllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PSID *);
2964 NTSYSAPI RTL_HANDLE * WINAPI RtlAllocateHandle(RTL_HANDLE_TABLE *,ULONG *);
2965 NTSYSAPI PVOID WINAPI RtlAllocateHeap(HANDLE,ULONG,SIZE_T) __WINE_ALLOC_SIZE(3);
2966 NTSYSAPI WCHAR WINAPI RtlAnsiCharToUnicodeChar(LPSTR *);
2967 NTSYSAPI DWORD WINAPI RtlAnsiStringToUnicodeSize(const STRING *);
2968 NTSYSAPI NTSTATUS WINAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING,PCANSI_STRING,BOOLEAN);
2969 NTSYSAPI NTSTATUS WINAPI RtlAppendAsciizToString(STRING *,LPCSTR);
2970 NTSYSAPI NTSTATUS WINAPI RtlAppendStringToString(STRING *,const STRING *);
2971 NTSYSAPI NTSTATUS WINAPI RtlAppendUnicodeStringToString(UNICODE_STRING *,const UNICODE_STRING *);
2972 NTSYSAPI NTSTATUS WINAPI RtlAppendUnicodeToString(UNICODE_STRING *,LPCWSTR);
2973 NTSYSAPI BOOLEAN WINAPI RtlAreAllAccessesGranted(ACCESS_MASK,ACCESS_MASK);
2974 NTSYSAPI BOOLEAN WINAPI RtlAreAnyAccessesGranted(ACCESS_MASK,ACCESS_MASK);
2975 NTSYSAPI BOOLEAN WINAPI RtlAreBitsSet(PCRTL_BITMAP,ULONG,ULONG);
2976 NTSYSAPI BOOLEAN WINAPI RtlAreBitsClear(PCRTL_BITMAP,ULONG,ULONG);
2977 NTSYSAPI NTSTATUS WINAPI RtlCharToInteger(PCSZ,ULONG,PULONG);
2978 NTSYSAPI NTSTATUS WINAPI RtlCheckRegistryKey(ULONG, PWSTR);
2979 NTSYSAPI void WINAPI RtlClearAllBits(PRTL_BITMAP);
2980 NTSYSAPI void WINAPI RtlClearBits(PRTL_BITMAP,ULONG,ULONG);
2981 NTSYSAPI NTSTATUS WINAPI RtlCreateActivationContext(HANDLE*,const void*);
2982 NTSYSAPI PDEBUG_BUFFER WINAPI RtlCreateQueryDebugBuffer(ULONG,BOOLEAN);
2983 NTSYSAPI NTSTATUS WINAPI RtlCreateRegistryKey(ULONG,PWSTR);
2984 NTSYSAPI ULONG WINAPI RtlCompactHeap(HANDLE,ULONG);
2985 NTSYSAPI LONG WINAPI RtlCompareString(const STRING*,const STRING*,BOOLEAN);
2986 NTSYSAPI LONG WINAPI RtlCompareUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
2987 NTSYSAPI LONG WINAPI RtlCompareUnicodeStrings(const WCHAR*,SIZE_T,const WCHAR*,SIZE_T,BOOLEAN);
2988 NTSYSAPI NTSTATUS WINAPI RtlCompressBuffer(USHORT,PUCHAR,ULONG,PUCHAR,ULONG,ULONG,PULONG,PVOID);
2989 NTSYSAPI DWORD WINAPI RtlComputeCrc32(DWORD,const BYTE*,INT);
2990 NTSYSAPI NTSTATUS WINAPI RtlConvertSidToUnicodeString(PUNICODE_STRING,PSID,BOOLEAN);
2991 NTSYSAPI void WINAPI RtlCopyLuid(PLUID,const LUID*);
2992 NTSYSAPI void WINAPI RtlCopyLuidAndAttributesArray(ULONG,const LUID_AND_ATTRIBUTES*,PLUID_AND_ATTRIBUTES);
2993 NTSYSAPI BOOLEAN WINAPI RtlCopySid(DWORD,PSID,PSID);
2994 NTSYSAPI NTSTATUS WINAPI RtlCopySecurityDescriptor(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR);
2995 NTSYSAPI void WINAPI RtlCopyString(STRING*,const STRING*);
2996 NTSYSAPI void WINAPI RtlCopyUnicodeString(UNICODE_STRING*,const UNICODE_STRING*);
2997 NTSYSAPI NTSTATUS WINAPI RtlCreateAcl(PACL,DWORD,DWORD);
2998 NTSYSAPI NTSTATUS WINAPI RtlCreateAtomTable(ULONG,RTL_ATOM_TABLE*);
2999 NTSYSAPI NTSTATUS WINAPI RtlCreateEnvironment(BOOLEAN, PWSTR*);
3000 NTSYSAPI HANDLE WINAPI RtlCreateHeap(ULONG,PVOID,SIZE_T,SIZE_T,PVOID,PRTL_HEAP_DEFINITION);
3001 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*);
3002 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);
3003 NTSYSAPI NTSTATUS WINAPI RtlCreateSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD);
3004 NTSYSAPI NTSTATUS WINAPI RtlCreateTimerQueue(PHANDLE);
3005 NTSYSAPI NTSTATUS WINAPI RtlCreateTimer(PHANDLE, HANDLE, RTL_WAITORTIMERCALLBACKFUNC, PVOID, DWORD, DWORD, ULONG);
3006 NTSYSAPI BOOLEAN WINAPI RtlCreateUnicodeString(PUNICODE_STRING,LPCWSTR);
3007 NTSYSAPI BOOLEAN WINAPI RtlCreateUnicodeStringFromAsciiz(PUNICODE_STRING,LPCSTR);
3008 NTSYSAPI NTSTATUS WINAPI RtlCreateUserProcess(UNICODE_STRING*,ULONG,RTL_USER_PROCESS_PARAMETERS*,SECURITY_DESCRIPTOR*,SECURITY_DESCRIPTOR*,HANDLE,BOOLEAN,HANDLE,HANDLE,RTL_USER_PROCESS_INFORMATION*);
3009 NTSYSAPI NTSTATUS WINAPI RtlCreateUserThread(HANDLE,SECURITY_DESCRIPTOR*,BOOLEAN,PVOID,SIZE_T,SIZE_T,PRTL_THREAD_START_ROUTINE,void*,HANDLE*,CLIENT_ID*);
3010 NTSYSAPI NTSTATUS WINAPI RtlCreateUserStack(SIZE_T,SIZE_T,ULONG,SIZE_T,SIZE_T,INITIAL_TEB*);
3011 NTSYSAPI NTSTATUS WINAPI RtlCustomCPToUnicodeN(CPTABLEINFO*,WCHAR*,DWORD,DWORD*,const char*,DWORD);
3012 NTSYSAPI void WINAPI RtlDeactivateActivationContext(DWORD,ULONG_PTR);
3013 NTSYSAPI PVOID WINAPI RtlDecodePointer(PVOID);
3014 NTSYSAPI NTSTATUS WINAPI RtlDecompressBuffer(USHORT,PUCHAR,ULONG,PUCHAR,ULONG,PULONG);
3015 NTSYSAPI NTSTATUS WINAPI RtlDecompressFragment(USHORT,PUCHAR,ULONG,PUCHAR,ULONG,ULONG,PULONG,PVOID);
3016 NTSYSAPI NTSTATUS WINAPI RtlDeleteAce(PACL,DWORD);
3017 NTSYSAPI NTSTATUS WINAPI RtlDeleteAtomFromAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
3018 NTSYSAPI NTSTATUS WINAPI RtlDeleteCriticalSection(RTL_CRITICAL_SECTION *);
3019 NTSYSAPI NTSTATUS WINAPI RtlDeleteRegistryValue(ULONG, PCWSTR, PCWSTR);
3020 NTSYSAPI void WINAPI RtlDeleteResource(LPRTL_RWLOCK);
3021 NTSYSAPI NTSTATUS WINAPI RtlDeleteSecurityObject(PSECURITY_DESCRIPTOR*);
3022 NTSYSAPI NTSTATUS WINAPI RtlDeleteTimer(HANDLE, HANDLE, HANDLE);
3023 NTSYSAPI NTSTATUS WINAPI RtlDeleteTimerQueueEx(HANDLE, HANDLE);
3024 NTSYSAPI PRTL_USER_PROCESS_PARAMETERS WINAPI RtlDeNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
3025 NTSYSAPI NTSTATUS WINAPI RtlDeregisterWait(HANDLE);
3026 NTSYSAPI NTSTATUS WINAPI RtlDeregisterWaitEx(HANDLE,HANDLE);
3027 NTSYSAPI NTSTATUS WINAPI RtlDestroyAtomTable(RTL_ATOM_TABLE);
3028 NTSYSAPI NTSTATUS WINAPI RtlDestroyEnvironment(PWSTR);
3029 NTSYSAPI NTSTATUS WINAPI RtlDestroyHandleTable(RTL_HANDLE_TABLE *);
3030 NTSYSAPI HANDLE WINAPI RtlDestroyHeap(HANDLE);
3031 NTSYSAPI void WINAPI RtlDestroyProcessParameters(RTL_USER_PROCESS_PARAMETERS*);
3032 NTSYSAPI NTSTATUS WINAPI RtlDestroyQueryDebugBuffer(PDEBUG_BUFFER);
3033 NTSYSAPI DOS_PATHNAME_TYPE WINAPI RtlDetermineDosPathNameType_U(PCWSTR);
3034 NTSYSAPI BOOLEAN WINAPI RtlDllShutdownInProgress(void);
3035 NTSYSAPI BOOLEAN WINAPI RtlDoesFileExists_U(LPCWSTR);
3036 NTSYSAPI BOOLEAN WINAPI RtlDosPathNameToNtPathName_U(PCWSTR,PUNICODE_STRING,PWSTR*,CURDIR*);
3037 NTSYSAPI NTSTATUS WINAPI RtlDosPathNameToNtPathName_U_WithStatus(PCWSTR,PUNICODE_STRING,PWSTR*,CURDIR*);
3038 NTSYSAPI ULONG WINAPI RtlDosSearchPath_U(LPCWSTR, LPCWSTR, LPCWSTR, ULONG, LPWSTR, LPWSTR*);
3039 NTSYSAPI WCHAR WINAPI RtlDowncaseUnicodeChar(WCHAR);
3040 NTSYSAPI NTSTATUS WINAPI RtlDowncaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
3041 NTSYSAPI void WINAPI RtlDumpResource(LPRTL_RWLOCK);
3042 NTSYSAPI NTSTATUS WINAPI RtlDuplicateUnicodeString(int,const UNICODE_STRING*,UNICODE_STRING*);
3043 NTSYSAPI NTSTATUS WINAPI RtlEmptyAtomTable(RTL_ATOM_TABLE,BOOLEAN);
3044 NTSYSAPI PVOID WINAPI RtlEncodePointer(PVOID);
3045 NTSYSAPI NTSTATUS WINAPI RtlEnterCriticalSection(RTL_CRITICAL_SECTION *);
3046 NTSYSAPI void WINAPI RtlEraseUnicodeString(UNICODE_STRING*);
3047 NTSYSAPI NTSTATUS WINAPI RtlEqualComputerName(const UNICODE_STRING*,const UNICODE_STRING*);
3048 NTSYSAPI NTSTATUS WINAPI RtlEqualDomainName(const UNICODE_STRING*,const UNICODE_STRING*);
3049 NTSYSAPI BOOLEAN WINAPI RtlEqualLuid(const LUID*,const LUID*);
3050 NTSYSAPI BOOL WINAPI RtlEqualPrefixSid(PSID,PSID);
3051 NTSYSAPI BOOL WINAPI RtlEqualSid(PSID,PSID);
3052 NTSYSAPI BOOLEAN WINAPI RtlEqualString(const STRING*,const STRING*,BOOLEAN);
3053 NTSYSAPI BOOLEAN WINAPI RtlEqualUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
3054 NTSYSAPI void DECLSPEC_NORETURN WINAPI RtlExitUserProcess(ULONG);
3055 NTSYSAPI void DECLSPEC_NORETURN WINAPI RtlExitUserThread(ULONG);
3056 NTSYSAPI NTSTATUS WINAPI RtlExpandEnvironmentStrings(const WCHAR*,WCHAR*,SIZE_T,WCHAR*,SIZE_T,SIZE_T*);
3057 NTSYSAPI NTSTATUS WINAPI RtlExpandEnvironmentStrings_U(PCWSTR, const UNICODE_STRING*, UNICODE_STRING*, ULONG*);
3058 NTSYSAPI NTSTATUS WINAPI RtlFindActivationContextSectionString(ULONG,const GUID*,ULONG,const UNICODE_STRING*,PVOID);
3059 NTSYSAPI NTSTATUS WINAPI RtlFindActivationContextSectionGuid(ULONG,const GUID*,ULONG,const GUID*,PVOID);
3060 NTSYSAPI NTSTATUS WINAPI RtlFindCharInUnicodeString(int,const UNICODE_STRING*,const UNICODE_STRING*,USHORT*);
3061 NTSYSAPI ULONG WINAPI RtlFindClearBits(PCRTL_BITMAP,ULONG,ULONG);
3062 NTSYSAPI ULONG WINAPI RtlFindClearBitsAndSet(PRTL_BITMAP,ULONG,ULONG);
3063 NTSYSAPI ULONG WINAPI RtlFindClearRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
3064 NTSYSAPI ULONG WINAPI RtlFindLastBackwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
3065 NTSYSAPI ULONG WINAPI RtlFindLastBackwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
3066 NTSYSAPI CCHAR WINAPI RtlFindLeastSignificantBit(ULONGLONG);
3067 NTSYSAPI ULONG WINAPI RtlFindLongestRunSet(PCRTL_BITMAP,PULONG);
3068 NTSYSAPI ULONG WINAPI RtlFindLongestRunClear(PCRTL_BITMAP,PULONG);
3069 NTSYSAPI NTSTATUS WINAPI RtlFindMessage(HMODULE,ULONG,ULONG,ULONG,const MESSAGE_RESOURCE_ENTRY**);
3070 NTSYSAPI CCHAR WINAPI RtlFindMostSignificantBit(ULONGLONG);
3071 NTSYSAPI ULONG WINAPI RtlFindNextForwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
3072 NTSYSAPI ULONG WINAPI RtlFindNextForwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
3073 NTSYSAPI ULONG WINAPI RtlFindSetBits(PCRTL_BITMAP,ULONG,ULONG);
3074 NTSYSAPI ULONG WINAPI RtlFindSetBitsAndClear(PRTL_BITMAP,ULONG,ULONG);
3075 NTSYSAPI ULONG WINAPI RtlFindSetRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
3076 NTSYSAPI BOOLEAN WINAPI RtlFirstFreeAce(PACL,PACE_HEADER *);
3077 NTSYSAPI NTSTATUS WINAPI RtlFormatCurrentUserKeyPath(PUNICODE_STRING);
3078 NTSYSAPI NTSTATUS WINAPI RtlFormatMessage(LPCWSTR,ULONG,BOOLEAN,BOOLEAN,BOOLEAN,__ms_va_list *,LPWSTR,ULONG,ULONG*);
3079 NTSYSAPI NTSTATUS WINAPI RtlFormatMessageEx(LPCWSTR,ULONG,BOOLEAN,BOOLEAN,BOOLEAN,__ms_va_list *,LPWSTR,ULONG,ULONG*,ULONG);
3080 NTSYSAPI void WINAPI RtlFreeAnsiString(PANSI_STRING);
3081 NTSYSAPI BOOLEAN WINAPI RtlFreeHandle(RTL_HANDLE_TABLE *,RTL_HANDLE *);
3082 NTSYSAPI BOOLEAN WINAPI RtlFreeHeap(HANDLE,ULONG,PVOID);
3083 NTSYSAPI void WINAPI RtlFreeOemString(POEM_STRING);
3084 NTSYSAPI DWORD WINAPI RtlFreeSid(PSID);
3085 NTSYSAPI void WINAPI RtlFreeThreadActivationContextStack(void);
3086 NTSYSAPI void WINAPI RtlFreeUnicodeString(PUNICODE_STRING);
3087 NTSYSAPI void WINAPI RtlFreeUserStack(void*);
3088 NTSYSAPI NTSTATUS WINAPI RtlGetAce(PACL,DWORD,LPVOID *);
3089 NTSYSAPI NTSTATUS WINAPI RtlGetActiveActivationContext(HANDLE*);
3090 NTSYSAPI NTSTATUS WINAPI RtlGetCompressionWorkSpaceSize(USHORT,PULONG,PULONG);
3091 NTSYSAPI NTSTATUS WINAPI RtlGetControlSecurityDescriptor(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL,LPDWORD);
3092 NTSYSAPI ULONG WINAPI RtlGetCurrentDirectory_U(ULONG, LPWSTR);
3093 NTSYSAPI PEB * WINAPI RtlGetCurrentPeb(void);
3094 NTSYSAPI NTSTATUS WINAPI RtlGetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
3095 NTSYSAPI NTSTATUS WINAPI RtlGetExePath(PCWSTR,PWSTR*);
3096 NTSYSAPI TEB_ACTIVE_FRAME * WINAPI RtlGetFrame(void);
3097 NTSYSAPI ULONG WINAPI RtlGetFullPathName_U(PCWSTR,ULONG,PWSTR,PWSTR*);
3098 NTSYSAPI NTSTATUS WINAPI RtlGetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
3099 NTSYSAPI NTSTATUS WINAPI RtlGetLastNtStatus(void);
3100 NTSYSAPI DWORD WINAPI RtlGetLastWin32Error(void);
3101 NTSYSAPI DWORD WINAPI RtlGetLongestNtPathLength(void);
3102 NTSYSAPI ULONG WINAPI RtlGetNtGlobalFlags(void);
3103 NTSYSAPI BOOLEAN WINAPI RtlGetNtProductType(LPDWORD);
3104 NTSYSAPI NTSTATUS WINAPI RtlGetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
3105 NTSYSAPI ULONG WINAPI RtlGetProcessHeaps(ULONG,HANDLE*);
3106 NTSYSAPI NTSTATUS WINAPI RtlGetProcessPreferredUILanguages(DWORD,ULONG*,WCHAR*,ULONG*);
3107 NTSYSAPI NTSTATUS WINAPI RtlGetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
3108 NTSYSAPI NTSTATUS WINAPI RtlGetSearchPath(PWSTR*);
3109 NTSYSAPI NTSTATUS WINAPI RtlGetSystemPreferredUILanguages(DWORD,ULONG,ULONG*,WCHAR*,ULONG*);
3110 NTSYSAPI LONGLONG WINAPI RtlGetSystemTimePrecise(void);
3111 NTSYSAPI DWORD WINAPI RtlGetThreadErrorMode(void);
3112 NTSYSAPI NTSTATUS WINAPI RtlGetThreadPreferredUILanguages(DWORD,ULONG*,WCHAR*,ULONG*);
3113 NTSYSAPI NTSTATUS WINAPI RtlGetUserPreferredUILanguages(DWORD,ULONG,ULONG*,WCHAR*,ULONG*);
3114 NTSYSAPI NTSTATUS WINAPI RtlGetVersion(RTL_OSVERSIONINFOEXW*);
3115 NTSYSAPI NTSTATUS WINAPI RtlGUIDFromString(PUNICODE_STRING,GUID*);
3116 NTSYSAPI PSID_IDENTIFIER_AUTHORITY WINAPI RtlIdentifierAuthoritySid(PSID);
3117 NTSYSAPI NTSTATUS WINAPI RtlIdnToAscii(DWORD,const WCHAR*,INT,WCHAR*,INT*);
3118 NTSYSAPI NTSTATUS WINAPI RtlIdnToNameprepUnicode(DWORD,const WCHAR*,INT,WCHAR*,INT*);
3119 NTSYSAPI NTSTATUS WINAPI RtlIdnToUnicode(DWORD,const WCHAR*,INT,WCHAR*,INT*);
3120 NTSYSAPI PVOID WINAPI RtlImageDirectoryEntryToData(HMODULE,BOOL,WORD,ULONG *);
3121 NTSYSAPI PIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE);
3122 NTSYSAPI PIMAGE_SECTION_HEADER WINAPI RtlImageRvaToSection(const IMAGE_NT_HEADERS *,HMODULE,DWORD);
3123 NTSYSAPI PVOID WINAPI RtlImageRvaToVa(const IMAGE_NT_HEADERS *,HMODULE,DWORD,IMAGE_SECTION_HEADER **);
3124 NTSYSAPI NTSTATUS WINAPI RtlImpersonateSelf(SECURITY_IMPERSONATION_LEVEL);
3125 NTSYSAPI void WINAPI RtlInitString(PSTRING,PCSZ);
3126 NTSYSAPI void WINAPI RtlInitAnsiString(PANSI_STRING,PCSZ);
3127 NTSYSAPI NTSTATUS WINAPI RtlInitAnsiStringEx(PANSI_STRING,PCSZ);
3128 NTSYSAPI void WINAPI RtlInitCodePageTable(USHORT*,CPTABLEINFO*);
3129 NTSYSAPI void WINAPI RtlInitNlsTables(USHORT*,USHORT*,USHORT*,NLSTABLEINFO*);
3130 NTSYSAPI void WINAPI RtlInitUnicodeString(PUNICODE_STRING,PCWSTR);
3131 NTSYSAPI NTSTATUS WINAPI RtlInitUnicodeStringEx(PUNICODE_STRING,PCWSTR);
3132 NTSYSAPI void WINAPI RtlInitializeBitMap(PRTL_BITMAP,PULONG,ULONG);
3133 NTSYSAPI void WINAPI RtlInitializeConditionVariable(RTL_CONDITION_VARIABLE *);
3134 NTSYSAPI NTSTATUS WINAPI RtlInitializeCriticalSection(RTL_CRITICAL_SECTION *);
3135 NTSYSAPI NTSTATUS WINAPI RtlInitializeCriticalSectionAndSpinCount(RTL_CRITICAL_SECTION *,ULONG);
3136 NTSYSAPI NTSTATUS WINAPI RtlInitializeCriticalSectionEx(RTL_CRITICAL_SECTION *,ULONG,ULONG);
3137 NTSYSAPI void WINAPI RtlInitializeHandleTable(ULONG,ULONG,RTL_HANDLE_TABLE *);
3138 NTSYSAPI void WINAPI RtlInitializeResource(LPRTL_RWLOCK);
3139 NTSYSAPI void WINAPI RtlInitializeSRWLock(RTL_SRWLOCK*);
3140 NTSYSAPI BOOL WINAPI RtlInitializeSid(PSID,PSID_IDENTIFIER_AUTHORITY,BYTE);
3141 NTSYSAPI NTSTATUS WINAPI RtlInt64ToUnicodeString(ULONGLONG,ULONG,UNICODE_STRING *);
3142 NTSYSAPI NTSTATUS WINAPI RtlIntegerToChar(ULONG,ULONG,ULONG,PCHAR);
3143 NTSYSAPI NTSTATUS WINAPI RtlIntegerToUnicodeString(ULONG,ULONG,UNICODE_STRING *);
3144 NTSYSAPI BOOLEAN WINAPI RtlIsActivationContextActive(HANDLE);
3145 NTSYSAPI BOOL WINAPI RtlIsCriticalSectionLocked(RTL_CRITICAL_SECTION *);
3146 NTSYSAPI BOOL WINAPI RtlIsCriticalSectionLockedByThread(RTL_CRITICAL_SECTION *);
3147 NTSYSAPI ULONG WINAPI RtlIsDosDeviceName_U(PCWSTR);
3148 NTSYSAPI BOOLEAN WINAPI RtlIsNameLegalDOS8Dot3(const UNICODE_STRING*,POEM_STRING,PBOOLEAN);
3149 NTSYSAPI NTSTATUS WINAPI RtlIsNormalizedString(ULONG,const WCHAR*,INT,BOOLEAN*);
3150 NTSYSAPI BOOLEAN WINAPI RtlIsProcessorFeaturePresent(UINT);
3151 NTSYSAPI BOOLEAN WINAPI RtlIsTextUnicode(LPCVOID,INT,INT *);
3152 NTSYSAPI BOOLEAN WINAPI RtlIsValidHandle(const RTL_HANDLE_TABLE *, const RTL_HANDLE *);
3153 NTSYSAPI BOOLEAN WINAPI RtlIsValidIndexHandle(const RTL_HANDLE_TABLE *, ULONG Index, RTL_HANDLE **);
3154 NTSYSAPI NTSTATUS WINAPI RtlLeaveCriticalSection(RTL_CRITICAL_SECTION *);
3155 NTSYSAPI DWORD WINAPI RtlLengthRequiredSid(DWORD);
3156 NTSYSAPI ULONG WINAPI RtlLengthSecurityDescriptor(PSECURITY_DESCRIPTOR);
3157 NTSYSAPI DWORD WINAPI RtlLengthSid(PSID);
3158 NTSYSAPI NTSTATUS WINAPI RtlLocalTimeToSystemTime(const LARGE_INTEGER*,PLARGE_INTEGER);
3159 NTSYSAPI NTSTATUS WINAPI RtlLocaleNameToLcid(const WCHAR*,LCID*,ULONG);
3160 NTSYSAPI BOOLEAN WINAPI RtlLockHeap(HANDLE);
3161 NTSYSAPI NTSTATUS WINAPI RtlLookupAtomInAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*);
3162 NTSYSAPI NTSTATUS WINAPI RtlMakeSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,LPDWORD);
3163 NTSYSAPI void WINAPI RtlMapGenericMask(PACCESS_MASK,const GENERIC_MAPPING*);
3164 NTSYSAPI NTSTATUS WINAPI RtlMultiByteToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
3165 NTSYSAPI NTSTATUS WINAPI RtlMultiByteToUnicodeSize(DWORD*,LPCSTR,UINT);
3166 NTSYSAPI NTSTATUS WINAPI RtlNewSecurityObject(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,BOOLEAN,HANDLE,PGENERIC_MAPPING);
3167 NTSYSAPI PRTL_USER_PROCESS_PARAMETERS WINAPI RtlNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
3168 NTSYSAPI NTSTATUS WINAPI RtlNormalizeString(ULONG,const WCHAR*,INT,WCHAR*,INT*);
3169 NTSYSAPI ULONG WINAPI RtlNtStatusToDosError(NTSTATUS);
3170 NTSYSAPI ULONG WINAPI RtlNtStatusToDosErrorNoTeb(NTSTATUS);
3171 NTSYSAPI ULONG WINAPI RtlNumberOfSetBits(PCRTL_BITMAP);
3172 NTSYSAPI ULONG WINAPI RtlNumberOfClearBits(PCRTL_BITMAP);
3173 NTSYSAPI UINT WINAPI RtlOemStringToUnicodeSize(const STRING*);
3174 NTSYSAPI NTSTATUS WINAPI RtlOemStringToUnicodeString(UNICODE_STRING*,const STRING*,BOOLEAN);
3175 NTSYSAPI NTSTATUS WINAPI RtlOemToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
3176 NTSYSAPI NTSTATUS WINAPI RtlOpenCurrentUser(ACCESS_MASK,PHANDLE);
3177 NTSYSAPI PVOID WINAPI RtlPcToFileHeader(PVOID,PVOID*);
3178 NTSYSAPI NTSTATUS WINAPI RtlPinAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
3179 NTSYSAPI void WINAPI RtlPopFrame(TEB_ACTIVE_FRAME*);
3180 NTSYSAPI BOOLEAN WINAPI RtlPrefixString(const STRING*,const STRING*,BOOLEAN);
3181 NTSYSAPI BOOLEAN WINAPI RtlPrefixUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
3182 NTSYSAPI void WINAPI RtlPushFrame(TEB_ACTIVE_FRAME*);
3183 NTSYSAPI NTSTATUS WINAPI RtlQueryActivationContextApplicationSettings(DWORD,HANDLE,const WCHAR*,const WCHAR*,WCHAR*,SIZE_T,SIZE_T*);
3184 NTSYSAPI NTSTATUS WINAPI RtlQueryAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM,ULONG*,ULONG*,WCHAR*,ULONG*);
3185 NTSYSAPI NTSTATUS WINAPI RtlQueryDynamicTimeZoneInformation(RTL_DYNAMIC_TIME_ZONE_INFORMATION*);
3186 NTSYSAPI NTSTATUS WINAPI RtlQueryEnvironmentVariable(WCHAR*,const WCHAR*,SIZE_T,WCHAR*,SIZE_T,SIZE_T*);
3187 NTSYSAPI NTSTATUS WINAPI RtlQueryEnvironmentVariable_U(PWSTR,PUNICODE_STRING,PUNICODE_STRING);
3188 NTSYSAPI NTSTATUS WINAPI RtlQueryHeapInformation(HANDLE,HEAP_INFORMATION_CLASS,PVOID,SIZE_T,PSIZE_T);
3189 NTSYSAPI NTSTATUS WINAPI RtlQueryInformationAcl(PACL,LPVOID,DWORD,ACL_INFORMATION_CLASS);
3190 NTSYSAPI NTSTATUS WINAPI RtlQueryInformationActivationContext(ULONG,HANDLE,PVOID,ULONG,PVOID,SIZE_T,SIZE_T*);
3191 NTSYSAPI BOOL WINAPI RtlQueryPerformanceCounter(LARGE_INTEGER*);
3192 NTSYSAPI BOOL WINAPI RtlQueryPerformanceFrequency(LARGE_INTEGER*);
3193 NTSYSAPI NTSTATUS WINAPI RtlQueryProcessDebugInformation(ULONG,ULONG,PDEBUG_BUFFER);
3194 NTSYSAPI NTSTATUS WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID);
3195 NTSYSAPI NTSTATUS WINAPI RtlQueryTimeZoneInformation(RTL_TIME_ZONE_INFORMATION*);
3196 NTSYSAPI BOOL WINAPI RtlQueryUnbiasedInterruptTime(ULONGLONG*);
3197 NTSYSAPI NTSTATUS WINAPI RtlQueueWorkItem(PRTL_WORK_ITEM_ROUTINE,PVOID,ULONG);
3198 NTSYSAPI void WINAPI RtlRaiseException(PEXCEPTION_RECORD);
3199 NTSYSAPI void WINAPI RtlRaiseStatus(NTSTATUS);
3200 NTSYSAPI ULONG WINAPI RtlRandom(PULONG);
3201 NTSYSAPI PVOID WINAPI RtlReAllocateHeap(HANDLE,ULONG,PVOID,SIZE_T);
3202 NTSYSAPI NTSTATUS WINAPI RtlRegisterWait(PHANDLE,HANDLE,RTL_WAITORTIMERCALLBACKFUNC,PVOID,ULONG,ULONG);
3203 NTSYSAPI void WINAPI RtlReleaseActivationContext(HANDLE);
3204 NTSYSAPI void WINAPI RtlReleasePath(PWSTR);
3205 NTSYSAPI void WINAPI RtlReleasePebLock(void);
3206 NTSYSAPI void WINAPI RtlReleaseResource(LPRTL_RWLOCK);
3207 NTSYSAPI void WINAPI RtlReleaseSRWLockExclusive(RTL_SRWLOCK*);
3208 NTSYSAPI void WINAPI RtlReleaseSRWLockShared(RTL_SRWLOCK*);
3209 NTSYSAPI ULONG WINAPI RtlRemoveVectoredExceptionHandler(PVOID);
3210 NTSYSAPI void WINAPI RtlResetRtlTranslations(const NLSTABLEINFO*);
3211 NTSYSAPI void WINAPI RtlRestoreLastWin32Error(DWORD);
3212 NTSYSAPI void WINAPI RtlSecondsSince1970ToTime(DWORD,LARGE_INTEGER *);
3213 NTSYSAPI void WINAPI RtlSecondsSince1980ToTime(DWORD,LARGE_INTEGER *);
3214 NTSYSAPI NTSTATUS WINAPI RtlSelfRelativeToAbsoluteSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PDWORD,PACL,PDWORD,PACL,PDWORD,PSID,PDWORD,PSID,PDWORD);
3215 NTSYSAPI void WINAPI RtlSetAllBits(PRTL_BITMAP);
3216 NTSYSAPI void WINAPI RtlSetBits(PRTL_BITMAP,ULONG,ULONG);
3217 NTSYSAPI ULONG WINAPI RtlSetCriticalSectionSpinCount(RTL_CRITICAL_SECTION*,ULONG);
3218 NTSYSAPI NTSTATUS WINAPI RtlSetControlSecurityDescriptor(PSECURITY_DESCRIPTOR,SECURITY_DESCRIPTOR_CONTROL,SECURITY_DESCRIPTOR_CONTROL);
3219 NTSYSAPI NTSTATUS WINAPI RtlSetCurrentDirectory_U(const UNICODE_STRING*);
3220 NTSYSAPI void WINAPI RtlSetCurrentEnvironment(PWSTR, PWSTR*);
3221 NTSYSAPI NTSTATUS WINAPI RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
3222 NTSYSAPI NTSTATUS WINAPI RtlSetEnvironmentVariable(PWSTR*,PUNICODE_STRING,PUNICODE_STRING);
3223 NTSYSAPI NTSTATUS WINAPI RtlSetHeapInformation(HANDLE,HEAP_INFORMATION_CLASS,PVOID,SIZE_T);
3224 NTSYSAPI NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
3225 NTSYSAPI NTSTATUS WINAPI RtlSetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
3226 NTSYSAPI NTSTATUS WINAPI RtlSetIoCompletionCallback(HANDLE,PRTL_OVERLAPPED_COMPLETION_ROUTINE,ULONG);
3227 NTSYSAPI void WINAPI RtlSetLastWin32Error(DWORD);
3228 NTSYSAPI void WINAPI RtlSetLastWin32ErrorAndNtStatusFromNtStatus(NTSTATUS);
3229 NTSYSAPI NTSTATUS WINAPI RtlSetProcessPreferredUILanguages(DWORD,PCZZWSTR,ULONG*);
3230 NTSYSAPI NTSTATUS WINAPI RtlSetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
3231 NTSYSAPI NTSTATUS WINAPI RtlSetSearchPathMode(ULONG);
3232 NTSYSAPI NTSTATUS WINAPI RtlSetThreadErrorMode(DWORD,LPDWORD);
3233 NTSYSAPI NTSTATUS WINAPI RtlSetThreadPreferredUILanguages(DWORD,PCZZWSTR,ULONG*);
3234 NTSYSAPI NTSTATUS WINAPI RtlSetTimeZoneInformation(const RTL_TIME_ZONE_INFORMATION*);
3235 NTSYSAPI void WINAPI RtlSetUnhandledExceptionFilter(PRTL_EXCEPTION_FILTER);
3236 NTSYSAPI SIZE_T WINAPI RtlSizeHeap(HANDLE,ULONG,const void*);
3237 NTSYSAPI NTSTATUS WINAPI RtlSleepConditionVariableCS(RTL_CONDITION_VARIABLE*,RTL_CRITICAL_SECTION*,const LARGE_INTEGER*);
3238 NTSYSAPI NTSTATUS WINAPI RtlSleepConditionVariableSRW(RTL_CONDITION_VARIABLE*,RTL_SRWLOCK*,const LARGE_INTEGER*,ULONG);
3239 NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID,PUNICODE_STRING);
3240 NTSYSAPI LPDWORD WINAPI RtlSubAuthoritySid(PSID,DWORD);
3241 NTSYSAPI LPBYTE WINAPI RtlSubAuthorityCountSid(PSID);
3242 NTSYSAPI NTSTATUS WINAPI RtlSystemTimeToLocalTime(const LARGE_INTEGER*,PLARGE_INTEGER);
3243 NTSYSAPI void WINAPI RtlTimeToTimeFields(const LARGE_INTEGER*,PTIME_FIELDS);
3244 NTSYSAPI BOOLEAN WINAPI RtlTimeFieldsToTime(PTIME_FIELDS,PLARGE_INTEGER);
3245 NTSYSAPI void WINAPI RtlTimeToElapsedTimeFields(const LARGE_INTEGER *,PTIME_FIELDS);
3246 NTSYSAPI BOOLEAN WINAPI RtlTimeToSecondsSince1970(const LARGE_INTEGER *,LPDWORD);
3247 NTSYSAPI BOOLEAN WINAPI RtlTimeToSecondsSince1980(const LARGE_INTEGER *,LPDWORD);
3248 NTSYSAPI BOOLEAN WINAPI RtlTryAcquireSRWLockExclusive(RTL_SRWLOCK *);
3249 NTSYSAPI BOOLEAN WINAPI RtlTryAcquireSRWLockShared(RTL_SRWLOCK *);
3250 NTSYSAPI BOOL WINAPI RtlTryEnterCriticalSection(RTL_CRITICAL_SECTION *);
3251 NTSYSAPI NTSTATUS WINAPI RtlUTF8ToUnicodeN(WCHAR*,DWORD,DWORD*,const char*,DWORD);
3252 NTSYSAPI ULONGLONG __cdecl RtlUlonglongByteSwap(ULONGLONG);
3253 NTSYSAPI DWORD WINAPI RtlUnicodeStringToAnsiSize(const UNICODE_STRING*);
3254 NTSYSAPI NTSTATUS WINAPI RtlUnicodeStringToAnsiString(PANSI_STRING,PCUNICODE_STRING,BOOLEAN);
3255 NTSYSAPI NTSTATUS WINAPI RtlUnicodeStringToInteger(const UNICODE_STRING *,ULONG,ULONG *);
3256 NTSYSAPI DWORD WINAPI RtlUnicodeStringToOemSize(const UNICODE_STRING*);
3257 NTSYSAPI NTSTATUS WINAPI RtlUnicodeStringToOemString(POEM_STRING,PCUNICODE_STRING,BOOLEAN);
3258 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToCustomCPN(CPTABLEINFO*,char*,DWORD,DWORD*,const WCHAR*,DWORD);
3259 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
3260 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToMultiByteSize(PULONG,PCWSTR,ULONG);
3261 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
3262 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToUTF8N(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
3263 NTSYSAPI ULONG WINAPI RtlUniform(PULONG);
3264 NTSYSAPI BOOLEAN WINAPI RtlUnlockHeap(HANDLE);
3265 NTSYSAPI void WINAPI RtlUnwind(PVOID,PVOID,PEXCEPTION_RECORD,PVOID);
3266 #ifdef __x86_64__
3267 NTSYSAPI void WINAPI RtlUnwindEx(PVOID,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT,PUNWIND_HISTORY_TABLE);
3268 #elif defined(__ia64__)
3269 NTSYSAPI void WINAPI RtlUnwind2(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT);
3270 NTSYSAPI void WINAPI RtlUnwindEx(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT,PUNWIND_HISTORY_TABLE);
3271 #endif
3272 NTSYSAPI WCHAR WINAPI RtlUpcaseUnicodeChar(WCHAR);
3273 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING *,BOOLEAN);
3274 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToAnsiString(STRING*,const UNICODE_STRING*,BOOLEAN);
3275 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToCountedOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
3276 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
3277 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeToCustomCPN(CPTABLEINFO*,char*,DWORD,DWORD*,const WCHAR*,DWORD);
3278 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
3279 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
3280 NTSYSAPI NTSTATUS WINAPI RtlUpdateTimer(HANDLE, HANDLE, DWORD, DWORD);
3281 NTSYSAPI CHAR WINAPI RtlUpperChar(CHAR);
3282 NTSYSAPI void WINAPI RtlUpperString(STRING *,const STRING *);
3283 NTSYSAPI void WINAPI RtlUserThreadStart(PRTL_THREAD_START_ROUTINE,void*);
3284 NTSYSAPI NTSTATUS WINAPI RtlValidSecurityDescriptor(PSECURITY_DESCRIPTOR);
3285 NTSYSAPI BOOLEAN WINAPI RtlValidRelativeSecurityDescriptor(PSECURITY_DESCRIPTOR,ULONG,SECURITY_INFORMATION);
3286 NTSYSAPI BOOLEAN WINAPI RtlValidAcl(PACL);
3287 NTSYSAPI BOOLEAN WINAPI RtlValidSid(PSID);
3288 NTSYSAPI BOOLEAN WINAPI RtlValidateHeap(HANDLE,ULONG,LPCVOID);
3289 NTSYSAPI NTSTATUS WINAPI RtlVerifyVersionInfo(const RTL_OSVERSIONINFOEXW*,DWORD,DWORDLONG);
3290 NTSYSAPI NTSTATUS WINAPI RtlWaitOnAddress(const void *,const void *,SIZE_T,const LARGE_INTEGER *);
3291 NTSYSAPI void WINAPI RtlWakeAddressAll(const void *);
3292 NTSYSAPI void WINAPI RtlWakeAddressSingle(const void *);
3293 NTSYSAPI void WINAPI RtlWakeAllConditionVariable(RTL_CONDITION_VARIABLE *);
3294 NTSYSAPI void WINAPI RtlWakeConditionVariable(RTL_CONDITION_VARIABLE *);
3295 NTSYSAPI NTSTATUS WINAPI RtlWalkHeap(HANDLE,PVOID);
3296 NTSYSAPI NTSTATUS WINAPI RtlWow64EnableFsRedirection(BOOLEAN);
3297 NTSYSAPI NTSTATUS WINAPI RtlWow64EnableFsRedirectionEx(ULONG,ULONG*);
3298 #ifdef __x86_64__
3299 NTSYSAPI NTSTATUS WINAPI RtlWow64GetThreadContext(HANDLE, WOW64_CONTEXT *);
3300 NTSYSAPI NTSTATUS WINAPI RtlWow64SetThreadContext(HANDLE, const WOW64_CONTEXT *);
3301 #endif
3302 NTSYSAPI NTSTATUS WINAPI RtlWriteRegistryValue(ULONG,PCWSTR,PCWSTR,ULONG,PVOID,ULONG);
3303 NTSYSAPI NTSTATUS WINAPI RtlZombifyActivationContext(HANDLE);
3304 NTSYSAPI NTSTATUS WINAPI RtlpNtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
3305 NTSYSAPI NTSTATUS WINAPI RtlpNtEnumerateSubKey(HANDLE,UNICODE_STRING *, ULONG);
3306 NTSYSAPI NTSTATUS WINAPI RtlpWaitForCriticalSection(RTL_CRITICAL_SECTION *);
3307 NTSYSAPI NTSTATUS WINAPI RtlpUnWaitCriticalSection(RTL_CRITICAL_SECTION *);
3308 NTSYSAPI NTSTATUS WINAPI vDbgPrintEx(ULONG,ULONG,LPCSTR,__ms_va_list);
3309 NTSYSAPI NTSTATUS WINAPI vDbgPrintExWithPrefix(LPCSTR,ULONG,ULONG,LPCSTR,__ms_va_list);
3311 NTSYSAPI int __cdecl _strnicmp(LPCSTR,LPCSTR,size_t);
3313 /* 32-bit only functions */
3315 #ifndef _WIN64
3316 NTSYSAPI LONGLONG WINAPI RtlConvertLongToLargeInteger(LONG);
3317 NTSYSAPI ULONGLONG WINAPI RtlConvertUlongToLargeInteger(ULONG);
3318 NTSYSAPI LONGLONG WINAPI RtlEnlargedIntegerMultiply(INT,INT);
3319 NTSYSAPI ULONGLONG WINAPI RtlEnlargedUnsignedMultiply(UINT,UINT);
3320 NTSYSAPI UINT WINAPI RtlEnlargedUnsignedDivide(ULONGLONG,UINT,UINT *);
3321 NTSYSAPI LONGLONG WINAPI RtlExtendedMagicDivide(LONGLONG,LONGLONG,INT);
3322 NTSYSAPI LONGLONG WINAPI RtlExtendedIntegerMultiply(LONGLONG,INT);
3323 NTSYSAPI LONGLONG WINAPI RtlExtendedLargeIntegerDivide(LONGLONG,INT,INT *);
3324 NTSYSAPI LONGLONG WINAPI RtlInterlockedCompareExchange64(LONGLONG*,LONGLONG,LONGLONG);
3325 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerAdd(LONGLONG,LONGLONG);
3326 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerArithmeticShift(LONGLONG,INT);
3327 NTSYSAPI ULONGLONG WINAPI RtlLargeIntegerDivide( ULONGLONG,ULONGLONG,ULONGLONG *);
3328 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerNegate(LONGLONG);
3329 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerShiftLeft(LONGLONG,INT);
3330 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerShiftRight(LONGLONG,INT);
3331 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerSubtract(LONGLONG,LONGLONG);
3332 NTSYSAPI NTSTATUS WINAPI RtlLargeIntegerToChar(const ULONGLONG *,ULONG,ULONG,PCHAR);
3333 #endif
3335 /* Threadpool functions */
3337 NTSYSAPI NTSTATUS WINAPI TpAllocCleanupGroup(TP_CLEANUP_GROUP **);
3338 NTSYSAPI NTSTATUS WINAPI TpAllocIoCompletion(TP_IO **,HANDLE,PTP_IO_CALLBACK,void *,TP_CALLBACK_ENVIRON *);
3339 NTSYSAPI NTSTATUS WINAPI TpAllocPool(TP_POOL **,PVOID);
3340 NTSYSAPI NTSTATUS WINAPI TpAllocTimer(TP_TIMER **,PTP_TIMER_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *);
3341 NTSYSAPI NTSTATUS WINAPI TpAllocWait(TP_WAIT **,PTP_WAIT_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *);
3342 NTSYSAPI NTSTATUS WINAPI TpAllocWork(TP_WORK **,PTP_WORK_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *);
3343 NTSYSAPI void WINAPI TpCallbackLeaveCriticalSectionOnCompletion(TP_CALLBACK_INSTANCE *,RTL_CRITICAL_SECTION *);
3344 NTSYSAPI NTSTATUS WINAPI TpCallbackMayRunLong(TP_CALLBACK_INSTANCE *);
3345 NTSYSAPI void WINAPI TpCallbackReleaseMutexOnCompletion(TP_CALLBACK_INSTANCE *,HANDLE);
3346 NTSYSAPI void WINAPI TpCallbackReleaseSemaphoreOnCompletion(TP_CALLBACK_INSTANCE *,HANDLE,DWORD);
3347 NTSYSAPI void WINAPI TpCallbackSetEventOnCompletion(TP_CALLBACK_INSTANCE *,HANDLE);
3348 NTSYSAPI void WINAPI TpCallbackUnloadDllOnCompletion(TP_CALLBACK_INSTANCE *,HMODULE);
3349 NTSYSAPI void WINAPI TpCancelAsyncIoOperation(TP_IO *);
3350 NTSYSAPI void WINAPI TpDisassociateCallback(TP_CALLBACK_INSTANCE *);
3351 NTSYSAPI BOOL WINAPI TpIsTimerSet(TP_TIMER *);
3352 NTSYSAPI void WINAPI TpPostWork(TP_WORK *);
3353 NTSYSAPI NTSTATUS WINAPI TpQueryPoolStackInformation(TP_POOL *, TP_POOL_STACK_INFORMATION *stack_info);
3354 NTSYSAPI void WINAPI TpReleaseCleanupGroup(TP_CLEANUP_GROUP *);
3355 NTSYSAPI void WINAPI TpReleaseCleanupGroupMembers(TP_CLEANUP_GROUP *,BOOL,PVOID);
3356 NTSYSAPI void WINAPI TpReleaseIoCompletion(TP_IO *);
3357 NTSYSAPI void WINAPI TpReleasePool(TP_POOL *);
3358 NTSYSAPI void WINAPI TpReleaseTimer(TP_TIMER *);
3359 NTSYSAPI void WINAPI TpReleaseWait(TP_WAIT *);
3360 NTSYSAPI void WINAPI TpReleaseWork(TP_WORK *);
3361 NTSYSAPI void WINAPI TpSetPoolMaxThreads(TP_POOL *,DWORD);
3362 NTSYSAPI BOOL WINAPI TpSetPoolMinThreads(TP_POOL *,DWORD);
3363 NTSYSAPI NTSTATUS WINAPI TpSetPoolStackInformation(TP_POOL *, TP_POOL_STACK_INFORMATION *stack_info);
3364 NTSYSAPI void WINAPI TpSetTimer(TP_TIMER *, LARGE_INTEGER *,LONG,LONG);
3365 NTSYSAPI void WINAPI TpSetWait(TP_WAIT *,HANDLE,LARGE_INTEGER *);
3366 NTSYSAPI NTSTATUS WINAPI TpSimpleTryPost(PTP_SIMPLE_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *);
3367 NTSYSAPI void WINAPI TpStartAsyncIoOperation(TP_IO *);
3368 NTSYSAPI void WINAPI TpWaitForIoCompletion(TP_IO *,BOOL);
3369 NTSYSAPI void WINAPI TpWaitForTimer(TP_TIMER *,BOOL);
3370 NTSYSAPI void WINAPI TpWaitForWait(TP_WAIT *,BOOL);
3371 NTSYSAPI void WINAPI TpWaitForWork(TP_WORK *,BOOL);
3373 /* Wine internal functions */
3375 NTSYSAPI NTSTATUS CDECL wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, char *nameA, SIZE_T *size,
3376 UINT disposition );
3377 NTSYSAPI NTSTATUS CDECL wine_unix_to_nt_file_name( const char *name, WCHAR *buffer, SIZE_T *size );
3380 /***********************************************************************
3381 * Inline functions
3384 #define InitializeObjectAttributes(p,n,a,r,s) \
3385 do { \
3386 (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
3387 (p)->RootDirectory = r; \
3388 (p)->Attributes = a; \
3389 (p)->ObjectName = n; \
3390 (p)->SecurityDescriptor = s; \
3391 (p)->SecurityQualityOfService = NULL; \
3392 } while (0)
3394 #define NtCurrentProcess() ((HANDLE)-1)
3396 #define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length))
3397 #define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length))
3398 #define RtlStoreUlong(p,v) do { ULONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
3399 #define RtlStoreUlonglong(p,v) do { ULONGLONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
3400 #define RtlRetrieveUlong(p,s) memcpy((p), (s), sizeof(ULONG))
3401 #define RtlRetrieveUlonglong(p,s) memcpy((p), (s), sizeof(ULONGLONG))
3402 #define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))
3404 static inline BOOLEAN RtlCheckBit(PCRTL_BITMAP lpBits, ULONG ulBit)
3406 if (lpBits && ulBit < lpBits->SizeOfBitMap &&
3407 lpBits->Buffer[ulBit >> 5] & (1 << (ulBit & 31)))
3408 return TRUE;
3409 return FALSE;
3412 /* These are implemented as __fastcall, so we can't let Winelib apps link with them */
3413 static inline USHORT RtlUshortByteSwap(USHORT s)
3415 return (s >> 8) | (s << 8);
3417 static inline ULONG RtlUlongByteSwap(ULONG i)
3419 #if defined(__i386__) && defined(__GNUC__)
3420 ULONG ret;
3421 __asm__("bswap %0" : "=r" (ret) : "0" (i) );
3422 return ret;
3423 #else
3424 return ((ULONG)RtlUshortByteSwap((USHORT)i) << 16) | RtlUshortByteSwap((USHORT)(i >> 16));
3425 #endif
3428 /* list manipulation macros */
3429 #define InitializeListHead(le) (void)((le)->Flink = (le)->Blink = (le))
3430 #define InsertHeadList(le,e) do { PLIST_ENTRY f = (le)->Flink; (e)->Flink = f; (e)->Blink = (le); f->Blink = (e); (le)->Flink = (e); } while (0)
3431 #define InsertTailList(le,e) do { PLIST_ENTRY b = (le)->Blink; (e)->Flink = (le); (e)->Blink = b; b->Flink = (e); (le)->Blink = (e); } while (0)
3432 #define IsListEmpty(le) ((le)->Flink == (le))
3433 #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)
3434 static inline PLIST_ENTRY RemoveHeadList(PLIST_ENTRY le)
3436 PLIST_ENTRY f, b, e;
3438 e = le->Flink;
3439 f = le->Flink->Flink;
3440 b = le->Flink->Blink;
3441 f->Blink = b;
3442 b->Flink = f;
3444 if (e != le) e->Flink = e->Blink = NULL;
3445 return e;
3447 static inline PLIST_ENTRY RemoveTailList(PLIST_ENTRY le)
3449 PLIST_ENTRY f, b, e;
3451 e = le->Blink;
3452 f = le->Blink->Flink;
3453 b = le->Blink->Blink;
3454 f->Blink = b;
3455 b->Flink = f;
3457 if (e != le) e->Flink = e->Blink = NULL;
3458 return e;
3462 #ifdef __WINESRC__
3464 /* The thread information for 16-bit threads */
3465 /* NtCurrentTeb()->SubSystemTib points to this */
3466 typedef struct
3468 void *unknown; /* 00 unknown */
3469 UNICODE_STRING *exe_name; /* 04 exe module name */
3471 /* the following fields do not exist under Windows */
3472 UNICODE_STRING exe_str; /* exe name string pointed to by exe_name */
3473 CURDIR curdir; /* current directory */
3474 WCHAR curdir_buffer[MAX_PATH];
3475 } WIN16_SUBSYSTEM_TIB;
3477 #endif /* __WINESRC__ */
3479 #ifdef __cplusplus
3480 } /* extern "C" */
3481 #endif /* defined(__cplusplus) */
3483 #endif /* __WINE_WINTERNL_H */