[INCLUDE/WINE] Update winternl.h. CORE-11368
[reactos.git] / reactos / sdk / include / reactos / wine / winternl.h
1 /*
2 * Internal NT APIs and data structures
3 *
4 * Copyright (C) the Wine project
5 *
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.
10 *
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.
15 *
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
19 */
20
21 #ifndef __WINE_WINTERNL_H
22 #define __WINE_WINTERNL_H
23
24 #ifndef __REACTOS__
25 #include <ntdef.h>
26 #endif /* __REACTOS__ */
27 #include <windef.h>
28
29 #ifdef __cplusplus
30 extern "C" {
31 #endif /* defined(__cplusplus) */
32
33 #ifdef __REACTOS__
34 typedef enum _TIMER_TYPE {
35 NotificationTimer,
36 SynchronizationTimer
37 } TIMER_TYPE;
38 typedef enum _EVENT_TYPE {
39 NotificationEvent,
40 SynchronizationEvent
41 } EVENT_TYPE, *PEVENT_TYPE;
42 #define FSCTL_PIPE_LISTEN CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
43 #endif /* __REACTOS__ */
44
45 /**********************************************************************
46 * Fundamental types and data structures
47 */
48
49 #ifndef WINE_NTSTATUS_DECLARED
50 #define WINE_NTSTATUS_DECLARED
51 typedef LONG NTSTATUS;
52 #ifdef __REACTOS__
53 typedef NTSTATUS *PNTSTATUS;
54 #endif /* __REACTOS__ */
55 #endif
56
57 typedef const char *PCSZ;
58
59 typedef short CSHORT;
60 typedef CSHORT *PCSHORT;
61
62 #ifndef __STRING_DEFINED__
63 #define __STRING_DEFINED__
64 typedef struct _STRING {
65 USHORT Length;
66 USHORT MaximumLength;
67 PCHAR Buffer;
68 } STRING, *PSTRING;
69 #endif
70
71 typedef STRING ANSI_STRING;
72 typedef PSTRING PANSI_STRING;
73 typedef const STRING *PCANSI_STRING;
74
75 typedef STRING OEM_STRING;
76 typedef PSTRING POEM_STRING;
77 typedef const STRING *PCOEM_STRING;
78
79 #ifndef __UNICODE_STRING_DEFINED__
80 #define __UNICODE_STRING_DEFINED__
81 typedef struct _UNICODE_STRING {
82 USHORT Length; /* bytes */
83 USHORT MaximumLength; /* bytes */
84 PWSTR Buffer;
85 } UNICODE_STRING, *PUNICODE_STRING;
86 #endif
87
88 typedef const UNICODE_STRING *PCUNICODE_STRING;
89
90 #ifndef _FILETIME_
91 #define _FILETIME_
92 /* 64 bit number of 100 nanoseconds intervals since January 1, 1601 */
93 typedef struct _FILETIME
94 {
95 #ifdef WORDS_BIGENDIAN
96 DWORD dwHighDateTime;
97 DWORD dwLowDateTime;
98 #else
99 DWORD dwLowDateTime;
100 DWORD dwHighDateTime;
101 #endif
102 } FILETIME, *PFILETIME, *LPFILETIME;
103 #endif /* _FILETIME_ */
104
105 /*
106 * RTL_SYSTEM_TIME and RTL_TIME_ZONE_INFORMATION are the same as
107 * the SYSTEMTIME and TIME_ZONE_INFORMATION structures defined
108 * in winbase.h, however we need to define them separately so
109 * winternl.h doesn't depend on winbase.h. They are used by
110 * RtlQueryTimeZoneInformation and RtlSetTimeZoneInformation.
111 * The names are guessed; if anybody knows the real names, let me know.
112 */
113 typedef struct _RTL_SYSTEM_TIME {
114 WORD wYear;
115 WORD wMonth;
116 WORD wDayOfWeek;
117 WORD wDay;
118 WORD wHour;
119 WORD wMinute;
120 WORD wSecond;
121 WORD wMilliseconds;
122 } RTL_SYSTEM_TIME, *PRTL_SYSTEM_TIME;
123
124 typedef struct _RTL_TIME_ZONE_INFORMATION {
125 LONG Bias;
126 WCHAR StandardName[32];
127 RTL_SYSTEM_TIME StandardDate;
128 LONG StandardBias;
129 WCHAR DaylightName[32];
130 RTL_SYSTEM_TIME DaylightDate;
131 LONG DaylightBias;
132 } RTL_TIME_ZONE_INFORMATION, *PRTL_TIME_ZONE_INFORMATION;
133
134 typedef struct _RTL_TIME_DYNAMIC_ZONE_INFORMATION
135 {
136 LONG Bias;
137 WCHAR StandardName[32];
138 RTL_SYSTEM_TIME StandardDate;
139 LONG StandardBias;
140 WCHAR DaylightName[32];
141 RTL_SYSTEM_TIME DaylightDate;
142 LONG DaylightBias;
143 WCHAR TimeZoneKeyName[128];
144 BOOLEAN DynamicDaylightTimeDisabled;
145 } RTL_DYNAMIC_TIME_ZONE_INFORMATION, *PRTL_DYNAMIC_TIME_ZONE_INFORMATION;
146
147 typedef struct _CLIENT_ID
148 {
149 HANDLE UniqueProcess;
150 HANDLE UniqueThread;
151 } CLIENT_ID, *PCLIENT_ID;
152
153 typedef struct _CURDIR
154 {
155 UNICODE_STRING DosPath;
156 PVOID Handle;
157 } CURDIR, *PCURDIR;
158
159 typedef struct RTL_DRIVE_LETTER_CURDIR
160 {
161 USHORT Flags;
162 USHORT Length;
163 ULONG TimeStamp;
164 UNICODE_STRING DosPath;
165 } RTL_DRIVE_LETTER_CURDIR, *PRTL_DRIVE_LETTER_CURDIR;
166
167 typedef struct tagRTL_BITMAP {
168 ULONG SizeOfBitMap; /* Number of bits in the bitmap */
169 PULONG Buffer; /* Bitmap data, assumed sized to a DWORD boundary */
170 } RTL_BITMAP, *PRTL_BITMAP;
171
172 typedef const RTL_BITMAP *PCRTL_BITMAP;
173
174 typedef struct tagRTL_BITMAP_RUN {
175 ULONG StartingIndex; /* Bit position at which run starts */
176 ULONG NumberOfBits; /* Size of the run in bits */
177 } RTL_BITMAP_RUN, *PRTL_BITMAP_RUN;
178
179 typedef const RTL_BITMAP_RUN *PCRTL_BITMAP_RUN;
180
181 typedef struct _RTL_USER_PROCESS_PARAMETERS
182 {
183 ULONG AllocationSize;
184 ULONG Size;
185 ULONG Flags;
186 ULONG DebugFlags;
187 HANDLE ConsoleHandle;
188 ULONG ConsoleFlags;
189 HANDLE hStdInput;
190 HANDLE hStdOutput;
191 HANDLE hStdError;
192 CURDIR CurrentDirectory;
193 UNICODE_STRING DllPath;
194 UNICODE_STRING ImagePathName;
195 UNICODE_STRING CommandLine;
196 PWSTR Environment;
197 ULONG dwX;
198 ULONG dwY;
199 ULONG dwXSize;
200 ULONG dwYSize;
201 ULONG dwXCountChars;
202 ULONG dwYCountChars;
203 ULONG dwFillAttribute;
204 ULONG dwFlags;
205 ULONG wShowWindow;
206 UNICODE_STRING WindowTitle;
207 UNICODE_STRING Desktop;
208 UNICODE_STRING ShellInfo;
209 UNICODE_STRING RuntimeInfo;
210 RTL_DRIVE_LETTER_CURDIR DLCurrentDirectory[0x20];
211 } RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;
212
213 /* value for Flags field (FIXME: not the correct name) */
214 #define PROCESS_PARAMS_FLAG_NORMALIZED 1
215
216 typedef struct _PEB_LDR_DATA
217 {
218 ULONG Length;
219 BOOLEAN Initialized;
220 PVOID SsHandle;
221 LIST_ENTRY InLoadOrderModuleList;
222 LIST_ENTRY InMemoryOrderModuleList;
223 LIST_ENTRY InInitializationOrderModuleList;
224 PVOID EntryInProgress;
225 } PEB_LDR_DATA, *PPEB_LDR_DATA;
226
227 typedef struct _GDI_TEB_BATCH
228 {
229 ULONG Offset;
230 HANDLE HDC;
231 ULONG Buffer[0x136];
232 } GDI_TEB_BATCH;
233
234 typedef struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME
235 {
236 struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME *Previous;
237 struct _ACTIVATION_CONTEXT *ActivationContext;
238 ULONG Flags;
239 } RTL_ACTIVATION_CONTEXT_STACK_FRAME, *PRTL_ACTIVATION_CONTEXT_STACK_FRAME;
240
241 typedef struct _ACTIVATION_CONTEXT_STACK
242 {
243 ULONG Flags;
244 ULONG NextCookieSequenceNumber;
245 RTL_ACTIVATION_CONTEXT_STACK_FRAME *ActiveFrame;
246 LIST_ENTRY FrameListCache;
247 } ACTIVATION_CONTEXT_STACK, *PACTIVATION_CONTEXT_STACK;
248
249 /***********************************************************************
250 * PEB data structure
251 */
252 typedef struct _PEB
253 { /* win32/win64 */
254 BOOLEAN InheritedAddressSpace; /* 000/000 */
255 BOOLEAN ReadImageFileExecOptions; /* 001/001 */
256 BOOLEAN BeingDebugged; /* 002/002 */
257 BOOLEAN SpareBool; /* 003/003 */
258 HANDLE Mutant; /* 004/008 */
259 HMODULE ImageBaseAddress; /* 008/010 */
260 PPEB_LDR_DATA LdrData; /* 00c/018 */
261 RTL_USER_PROCESS_PARAMETERS *ProcessParameters; /* 010/020 */
262 PVOID SubSystemData; /* 014/028 */
263 HANDLE ProcessHeap; /* 018/030 */
264 PRTL_CRITICAL_SECTION FastPebLock; /* 01c/038 */
265 PVOID /*PPEBLOCKROUTINE*/ FastPebLockRoutine; /* 020/040 */
266 PVOID /*PPEBLOCKROUTINE*/ FastPebUnlockRoutine; /* 024/048 */
267 ULONG EnvironmentUpdateCount; /* 028/050 */
268 PVOID KernelCallbackTable; /* 02c/058 */
269 ULONG Reserved[2]; /* 030/060 */
270 PVOID /*PPEB_FREE_BLOCK*/ FreeList; /* 038/068 */
271 ULONG TlsExpansionCounter; /* 03c/070 */
272 PRTL_BITMAP TlsBitmap; /* 040/078 */
273 ULONG TlsBitmapBits[2]; /* 044/080 */
274 PVOID ReadOnlySharedMemoryBase; /* 04c/088 */
275 PVOID ReadOnlySharedMemoryHeap; /* 050/090 */
276 PVOID *ReadOnlyStaticServerData; /* 054/098 */
277 PVOID AnsiCodePageData; /* 058/0a0 */
278 PVOID OemCodePageData; /* 05c/0a8 */
279 PVOID UnicodeCaseTableData; /* 060/0b0 */
280 ULONG NumberOfProcessors; /* 064/0b8 */
281 ULONG NtGlobalFlag; /* 068/0bc */
282 LARGE_INTEGER CriticalSectionTimeout; /* 070/0c0 */
283 SIZE_T HeapSegmentReserve; /* 078/0c8 */
284 SIZE_T HeapSegmentCommit; /* 07c/0d0 */
285 SIZE_T HeapDeCommitTotalFreeThreshold; /* 080/0d8 */
286 SIZE_T HeapDeCommitFreeBlockThreshold; /* 084/0e0 */
287 ULONG NumberOfHeaps; /* 088/0e8 */
288 ULONG MaximumNumberOfHeaps; /* 08c/0ec */
289 PVOID *ProcessHeaps; /* 090/0f0 */
290 PVOID GdiSharedHandleTable; /* 094/0f8 */
291 PVOID ProcessStarterHelper; /* 098/100 */
292 PVOID GdiDCAttributeList; /* 09c/108 */
293 PVOID LoaderLock; /* 0a0/110 */
294 ULONG OSMajorVersion; /* 0a4/118 */
295 ULONG OSMinorVersion; /* 0a8/11c */
296 ULONG OSBuildNumber; /* 0ac/120 */
297 ULONG OSPlatformId; /* 0b0/124 */
298 ULONG ImageSubSystem; /* 0b4/128 */
299 ULONG ImageSubSystemMajorVersion; /* 0b8/12c */
300 ULONG ImageSubSystemMinorVersion; /* 0bc/130 */
301 ULONG ImageProcessAffinityMask; /* 0c0/134 */
302 HANDLE GdiHandleBuffer[28]; /* 0c4/138 */
303 ULONG unknown[6]; /* 134/218 */
304 PVOID PostProcessInitRoutine; /* 14c/230 */
305 PRTL_BITMAP TlsExpansionBitmap; /* 150/238 */
306 ULONG TlsExpansionBitmapBits[32]; /* 154/240 */
307 ULONG SessionId; /* 1d4/2c0 */
308 ULARGE_INTEGER AppCompatFlags; /* 1d8/2c8 */
309 ULARGE_INTEGER AppCompatFlagsUser; /* 1e0/2d0 */
310 PVOID ShimData; /* 1e8/2d8 */
311 PVOID AppCompatInfo; /* 1ec/2e0 */
312 UNICODE_STRING CSDVersion; /* 1f0/2e8 */
313 PVOID ActivationContextData; /* 1f8/2f8 */
314 PVOID ProcessAssemblyStorageMap; /* 1fc/300 */
315 PVOID SystemDefaultActivationData; /* 200/308 */
316 PVOID SystemAssemblyStorageMap; /* 204/310 */
317 SIZE_T MinimumStackCommit; /* 208/318 */
318 PVOID *FlsCallback; /* 20c/320 */
319 LIST_ENTRY FlsListHead; /* 210/328 */
320 PRTL_BITMAP FlsBitmap; /* 218/338 */
321 ULONG FlsBitmapBits[4]; /* 21c/340 */
322 } PEB, *PPEB;
323
324
325 /***********************************************************************
326 * TEB data structure
327 */
328 typedef struct _TEB
329 { /* win32/win64 */
330 NT_TIB Tib; /* 000/0000 */
331 PVOID EnvironmentPointer; /* 01c/0038 */
332 CLIENT_ID ClientId; /* 020/0040 */
333 PVOID ActiveRpcHandle; /* 028/0050 */
334 PVOID ThreadLocalStoragePointer; /* 02c/0058 */
335 PPEB Peb; /* 030/0060 */
336 ULONG LastErrorValue; /* 034/0068 */
337 ULONG CountOfOwnedCriticalSections; /* 038/006c */
338 PVOID CsrClientThread; /* 03c/0070 */
339 PVOID Win32ThreadInfo; /* 040/0078 */
340 ULONG Win32ClientInfo[31]; /* 044/0080 used for user32 private data in Wine */
341 PVOID WOW32Reserved; /* 0c0/0100 */
342 ULONG CurrentLocale; /* 0c4/0108 */
343 ULONG FpSoftwareStatusRegister; /* 0c8/010c */
344 PVOID SystemReserved1[54]; /* 0cc/0110 used for kernel32 private data in Wine */
345 LONG ExceptionCode; /* 1a4/02c0 */
346 ACTIVATION_CONTEXT_STACK ActivationContextStack; /* 1a8/02c8 */
347 BYTE SpareBytes1[24]; /* 1bc/02e8 used for ntdll private data in Wine */
348 PVOID SystemReserved2[10]; /* 1d4/0300 used for ntdll private data in Wine */
349 GDI_TEB_BATCH GdiTebBatch; /* 1fc/0350 used for vm86 private data in Wine */
350 HANDLE gdiRgn; /* 6dc/0838 */
351 HANDLE gdiPen; /* 6e0/0840 */
352 HANDLE gdiBrush; /* 6e4/0848 */
353 CLIENT_ID RealClientId; /* 6e8/0850 */
354 HANDLE GdiCachedProcessHandle; /* 6f0/0860 */
355 ULONG GdiClientPID; /* 6f4/0868 */
356 ULONG GdiClientTID; /* 6f8/086c */
357 PVOID GdiThreadLocaleInfo; /* 6fc/0870 */
358 ULONG UserReserved[5]; /* 700/0878 */
359 PVOID glDispachTable[280]; /* 714/0890 */
360 PVOID glReserved1[26]; /* b74/1150 */
361 PVOID glReserved2; /* bdc/1220 */
362 PVOID glSectionInfo; /* be0/1228 */
363 PVOID glSection; /* be4/1230 */
364 PVOID glTable; /* be8/1238 */
365 PVOID glCurrentRC; /* bec/1240 */
366 PVOID glContext; /* bf0/1248 */
367 ULONG LastStatusValue; /* bf4/1250 */
368 UNICODE_STRING StaticUnicodeString; /* bf8/1258 used by advapi32 */
369 WCHAR StaticUnicodeBuffer[261]; /* c00/1268 used by advapi32 */
370 PVOID DeallocationStack; /* e0c/1478 */
371 PVOID TlsSlots[64]; /* e10/1480 */
372 LIST_ENTRY TlsLinks; /* f10/1680 */
373 PVOID Vdm; /* f18/1690 */
374 PVOID ReservedForNtRpc; /* f1c/1698 */
375 PVOID DbgSsReserved[2]; /* f20/16a0 */
376 ULONG HardErrorDisabled; /* f28/16b0 */
377 PVOID Instrumentation[16]; /* f2c/16b8 */
378 PVOID WinSockData; /* f6c/1738 */
379 ULONG GdiBatchCount; /* f70/1740 */
380 ULONG Spare2; /* f74/1744 */
381 PVOID Spare3; /* f78/1748 */
382 PVOID Spare4; /* f7c/1750 */
383 PVOID ReservedForOle; /* f80/1758 */
384 ULONG WaitingOnLoaderLock; /* f84/1760 */
385 PVOID Reserved5[3]; /* f88/1768 used for wineserver shared memory */
386 PVOID *TlsExpansionSlots; /* f94/1780 */
387 ULONG ImpersonationLocale; /* f98/1788 */
388 ULONG IsImpersonating; /* f9c/178c */
389 PVOID NlsCache; /* fa0/1790 */
390 PVOID ShimData; /* fa4/1798 */
391 ULONG HeapVirtualAffinity; /* fa8/17a0 */
392 PVOID CurrentTransactionHandle; /* fac/17a8 */
393 PVOID ActiveFrame; /* fb0/17b0 */
394 #ifdef _WIN64
395 PVOID unknown[2]; /* 17b8 */
396 #endif
397 PVOID *FlsSlots; /* fb4/17c8 */
398 } TEB, *PTEB;
399
400 /***********************************************************************
401 * Enums
402 */
403
404 typedef enum _FILE_INFORMATION_CLASS {
405 FileDirectoryInformation = 1,
406 FileFullDirectoryInformation,
407 FileBothDirectoryInformation,
408 FileBasicInformation,
409 FileStandardInformation,
410 FileInternalInformation,
411 FileEaInformation,
412 FileAccessInformation,
413 FileNameInformation,
414 FileRenameInformation,
415 FileLinkInformation,
416 FileNamesInformation,
417 FileDispositionInformation,
418 FilePositionInformation,
419 FileFullEaInformation,
420 FileModeInformation,
421 FileAlignmentInformation,
422 FileAllInformation,
423 FileAllocationInformation,
424 FileEndOfFileInformation,
425 FileAlternateNameInformation,
426 FileStreamInformation,
427 FilePipeInformation,
428 FilePipeLocalInformation,
429 FilePipeRemoteInformation,
430 FileMailslotQueryInformation,
431 FileMailslotSetInformation,
432 FileCompressionInformation,
433 FileObjectIdInformation,
434 FileCompletionInformation,
435 FileMoveClusterInformation,
436 FileQuotaInformation,
437 FileReparsePointInformation,
438 FileNetworkOpenInformation,
439 FileAttributeTagInformation,
440 FileTrackingInformation,
441 FileIdBothDirectoryInformation,
442 FileIdFullDirectoryInformation,
443 FileValidDataLengthInformation,
444 FileShortNameInformation,
445 FileIoCompletionNotificationInformation,
446 FileIoStatusBlockRangeInformation,
447 FileIoPriorityHintInformation,
448 FileSfioReserveInformation,
449 FileSfioVolumeInformation,
450 FileHardLinkInformation,
451 FileProcessIdsUsingFileInformation,
452 FileNormalizedNameInformation,
453 FileNetworkPhysicalNameInformation,
454 FileIdGlobalTxDirectoryInformation,
455 FileIsRemoteDeviceInformation,
456 FileAttributeCacheInformation,
457 FileNumaNodeInformation,
458 FileStandardLinkInformation,
459 FileRemoteProtocolInformation,
460 FileReplaceCompletionInformation,
461 FileMaximumInformation
462 } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
463
464 typedef struct _FILE_DIRECTORY_INFORMATION {
465 ULONG NextEntryOffset;
466 ULONG FileIndex;
467 LARGE_INTEGER CreationTime;
468 LARGE_INTEGER LastAccessTime;
469 LARGE_INTEGER LastWriteTime;
470 LARGE_INTEGER ChangeTime;
471 LARGE_INTEGER EndOfFile;
472 LARGE_INTEGER AllocationSize;
473 ULONG FileAttributes;
474 ULONG FileNameLength;
475 WCHAR FileName[ANYSIZE_ARRAY];
476 } FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION;
477
478 typedef struct _FILE_FULL_DIRECTORY_INFORMATION {
479 ULONG NextEntryOffset;
480 ULONG FileIndex;
481 LARGE_INTEGER CreationTime;
482 LARGE_INTEGER LastAccessTime;
483 LARGE_INTEGER LastWriteTime;
484 LARGE_INTEGER ChangeTime;
485 LARGE_INTEGER EndOfFile;
486 LARGE_INTEGER AllocationSize;
487 ULONG FileAttributes;
488 ULONG FileNameLength;
489 ULONG EaSize;
490 WCHAR FileName[ANYSIZE_ARRAY];
491 } FILE_FULL_DIRECTORY_INFORMATION, *PFILE_FULL_DIRECTORY_INFORMATION,
492 FILE_FULL_DIR_INFORMATION, *PFILE_FULL_DIR_INFORMATION;
493
494 typedef struct _FILE_ID_FULL_DIRECTORY_INFORMATION {
495 ULONG NextEntryOffset;
496 ULONG FileIndex;
497 LARGE_INTEGER CreationTime;
498 LARGE_INTEGER LastAccessTime;
499 LARGE_INTEGER LastWriteTime;
500 LARGE_INTEGER ChangeTime;
501 LARGE_INTEGER EndOfFile;
502 LARGE_INTEGER AllocationSize;
503 ULONG FileAttributes;
504 ULONG FileNameLength;
505 ULONG EaSize;
506 LARGE_INTEGER FileId;
507 WCHAR FileName[ANYSIZE_ARRAY];
508 } FILE_ID_FULL_DIRECTORY_INFORMATION, *PFILE_ID_FULL_DIRECTORY_INFORMATION;
509
510 typedef struct _FILE_BOTH_DIRECTORY_INFORMATION {
511 ULONG NextEntryOffset;
512 ULONG FileIndex;
513 LARGE_INTEGER CreationTime;
514 LARGE_INTEGER LastAccessTime;
515 LARGE_INTEGER LastWriteTime;
516 LARGE_INTEGER ChangeTime;
517 LARGE_INTEGER EndOfFile;
518 LARGE_INTEGER AllocationSize;
519 ULONG FileAttributes;
520 ULONG FileNameLength;
521 ULONG EaSize;
522 CHAR ShortNameLength;
523 WCHAR ShortName[12];
524 WCHAR FileName[ANYSIZE_ARRAY];
525 } FILE_BOTH_DIRECTORY_INFORMATION, *PFILE_BOTH_DIRECTORY_INFORMATION,
526 FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;
527
528 typedef struct _FILE_ID_BOTH_DIRECTORY_INFORMATION {
529 ULONG NextEntryOffset;
530 ULONG FileIndex;
531 LARGE_INTEGER CreationTime;
532 LARGE_INTEGER LastAccessTime;
533 LARGE_INTEGER LastWriteTime;
534 LARGE_INTEGER ChangeTime;
535 LARGE_INTEGER EndOfFile;
536 LARGE_INTEGER AllocationSize;
537 ULONG FileAttributes;
538 ULONG FileNameLength;
539 ULONG EaSize;
540 CHAR ShortNameLength;
541 WCHAR ShortName[12];
542 LARGE_INTEGER FileId;
543 WCHAR FileName[ANYSIZE_ARRAY];
544 } FILE_ID_BOTH_DIRECTORY_INFORMATION, *PFILE_ID_BOTH_DIRECTORY_INFORMATION;
545
546 typedef struct _FILE_ID_GLOBAL_TX_DIR_INFORMATION {
547 ULONG NextEntryOffset;
548 ULONG FileIndex;
549 LARGE_INTEGER CreationTime;
550 LARGE_INTEGER LastAccessTime;
551 LARGE_INTEGER LastWriteTime;
552 LARGE_INTEGER ChangeTime;
553 LARGE_INTEGER EndOfFile;
554 LARGE_INTEGER AllocationSize;
555 ULONG FileAttributes;
556 ULONG FileNameLength;
557 LARGE_INTEGER FileId;
558 GUID LockingTransactionId;
559 ULONG TxInfoFlags;
560 WCHAR FileName[ANYSIZE_ARRAY];
561 } FILE_ID_GLOBAL_TX_DIR_INFORMATION, *PFILE_ID_GLOBAL_TX_DIR_INFORMATION;
562
563 typedef struct _FILE_BASIC_INFORMATION {
564 LARGE_INTEGER CreationTime;
565 LARGE_INTEGER LastAccessTime;
566 LARGE_INTEGER LastWriteTime;
567 LARGE_INTEGER ChangeTime;
568 ULONG FileAttributes;
569 } FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
570
571 typedef struct _FILE_STANDARD_INFORMATION {
572 LARGE_INTEGER AllocationSize;
573 LARGE_INTEGER EndOfFile;
574 ULONG NumberOfLinks;
575 BOOLEAN DeletePending;
576 BOOLEAN Directory;
577 } FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;
578
579 typedef struct _FILE_INTERNAL_INFORMATION {
580 LARGE_INTEGER IndexNumber;
581 } FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;
582
583 typedef struct _FILE_EA_INFORMATION {
584 ULONG EaSize;
585 } FILE_EA_INFORMATION, *PFILE_EA_INFORMATION;
586
587 typedef struct _FILE_ACCESS_INFORMATION {
588 ACCESS_MASK AccessFlags;
589 } FILE_ACCESS_INFORMATION, *PFILE_ACCESS_INFORMATION;
590
591 typedef struct _FILE_NAME_INFORMATION {
592 ULONG FileNameLength;
593 WCHAR FileName[1];
594 } FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
595
596 typedef struct _FILE_RENAME_INFORMATION {
597 BOOLEAN Replace;
598 HANDLE RootDir;
599 ULONG FileNameLength;
600 WCHAR FileName[1];
601 } FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;
602
603 typedef struct _FILE_LINK_INFORMATION {
604 BOOLEAN ReplaceIfExists;
605 HANDLE RootDirectory;
606 ULONG FileNameLength;
607 WCHAR FileName[1];
608 } FILE_LINK_INFORMATION, *PFILE_LINK_INFORMATION;
609
610 typedef struct _FILE_NAMES_INFORMATION {
611 ULONG NextEntryOffset;
612 ULONG FileIndex;
613 ULONG FileNameLength;
614 WCHAR FileName[1];
615 } FILE_NAMES_INFORMATION, *PFILE_NAMES_INFORMATION;
616
617 typedef struct _FILE_DISPOSITION_INFORMATION {
618 BOOLEAN DoDeleteFile;
619 } FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION;
620
621 typedef struct _FILE_POSITION_INFORMATION {
622 LARGE_INTEGER CurrentByteOffset;
623 } FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;
624
625 typedef struct _FILE_ALIGNMENT_INFORMATION {
626 ULONG AlignmentRequirement;
627 } FILE_ALIGNMENT_INFORMATION, *PFILE_ALIGNMENT_INFORMATION;
628
629 typedef struct _FILE_ALLOCATION_INFORMATION {
630 LARGE_INTEGER AllocationSize;
631 } FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION;
632
633 typedef struct _FILE_END_OF_FILE_INFORMATION {
634 LARGE_INTEGER EndOfFile;
635 } FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;
636
637 typedef struct _FILE_NETWORK_OPEN_INFORMATION {
638 LARGE_INTEGER CreationTime;
639 LARGE_INTEGER LastAccessTime;
640 LARGE_INTEGER LastWriteTime;
641 LARGE_INTEGER ChangeTime;
642 LARGE_INTEGER AllocationSize;
643 LARGE_INTEGER EndOfFile;
644 ULONG FileAttributes;
645 } FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;
646
647 typedef struct _FILE_FULL_EA_INFORMATION {
648 ULONG NextEntryOffset;
649 UCHAR Flags;
650 UCHAR EaNameLength;
651 USHORT EaValueLength;
652 CHAR EaName[1];
653 } FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
654
655 typedef struct _FILE_MODE_INFORMATION {
656 ULONG Mode;
657 } FILE_MODE_INFORMATION, *PFILE_MODE_INFORMATION;
658
659 typedef struct _FILE_STREAM_INFORMATION
660 {
661 ULONG NextEntryOffset;
662 ULONG StreamNameLength;
663 LARGE_INTEGER StreamSize;
664 LARGE_INTEGER StreamAllocationSize;
665 WCHAR StreamName[1];
666 } FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
667
668 typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION
669 {
670 ULONG FileAttributes;
671 ULONG ReparseTag;
672 } FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION;
673
674 typedef struct _FILE_MAILSLOT_QUERY_INFORMATION {
675 ULONG MaximumMessageSize;
676 ULONG MailslotQuota;
677 ULONG NextMessageSize;
678 ULONG MessagesAvailable;
679 LARGE_INTEGER ReadTimeout;
680 } FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION;
681
682 typedef struct _FILE_MAILSLOT_SET_INFORMATION {
683 LARGE_INTEGER ReadTimeout;
684 } FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION;
685
686 typedef struct _FILE_PIPE_INFORMATION {
687 ULONG ReadMode;
688 ULONG CompletionMode;
689 } FILE_PIPE_INFORMATION, *PFILE_PIPE_INFORMATION;
690
691 typedef struct _FILE_PIPE_LOCAL_INFORMATION {
692 ULONG NamedPipeType;
693 ULONG NamedPipeConfiguration;
694 ULONG MaximumInstances;
695 ULONG CurrentInstances;
696 ULONG InboundQuota;
697 ULONG ReadDataAvailable;
698 ULONG OutboundQuota;
699 ULONG WriteQuotaAvailable;
700 ULONG NamedPipeState;
701 ULONG NamedPipeEnd;
702 } FILE_PIPE_LOCAL_INFORMATION, *PFILE_PIPE_LOCAL_INFORMATION;
703
704 typedef struct _FILE_OBJECTID_INFORMATION {
705 LONGLONG FileReference;
706 UCHAR ObjectId[16];
707 union {
708 struct {
709 UCHAR BirthVolumeId[16];
710 UCHAR BirthObjectId[16];
711 UCHAR DomainId[16];
712 } DUMMYSTRUCTNAME;
713 UCHAR ExtendedInfo[48];
714 } DUMMYUNIONNAME;
715 } FILE_OBJECTID_INFORMATION, *PFILE_OBJECTID_INFORMATION;
716
717 typedef struct _FILE_QUOTA_INFORMATION {
718 ULONG NextEntryOffset;
719 ULONG SidLength;
720 LARGE_INTEGER ChangeTime;
721 LARGE_INTEGER QuotaUsed;
722 LARGE_INTEGER QuotaThreshold;
723 LARGE_INTEGER QuotaLimit;
724 SID Sid;
725 } FILE_QUOTA_INFORMATION, *PFILE_QUOTA_INFORMATION;
726
727 typedef struct _FILE_REPARSE_POINT_INFORMATION {
728 LONGLONG FileReference;
729 ULONG Tag;
730 } FILE_REPARSE_POINT_INFORMATION, *PFILE_REPARSE_POINT_INFORMATION;
731
732 #define FILE_PIPE_DISCONNECTED_STATE 0x01
733 #define FILE_PIPE_LISTENING_STATE 0x02
734 #define FILE_PIPE_CONNECTED_STATE 0x03
735 #define FILE_PIPE_CLOSING_STATE 0x04
736
737 typedef struct _FILE_ALL_INFORMATION {
738 FILE_BASIC_INFORMATION BasicInformation;
739 FILE_STANDARD_INFORMATION StandardInformation;
740 FILE_INTERNAL_INFORMATION InternalInformation;
741 FILE_EA_INFORMATION EaInformation;
742 FILE_ACCESS_INFORMATION AccessInformation;
743 FILE_POSITION_INFORMATION PositionInformation;
744 FILE_MODE_INFORMATION ModeInformation;
745 FILE_ALIGNMENT_INFORMATION AlignmentInformation;
746 FILE_NAME_INFORMATION NameInformation;
747 } FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION;
748
749 typedef enum _FSINFOCLASS {
750 FileFsVolumeInformation = 1,
751 FileFsLabelInformation,
752 FileFsSizeInformation,
753 FileFsDeviceInformation,
754 FileFsAttributeInformation,
755 FileFsControlInformation,
756 FileFsFullSizeInformation,
757 FileFsObjectIdInformation,
758 FileFsMaximumInformation
759 } FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
760
761 typedef enum _KEY_INFORMATION_CLASS {
762 KeyBasicInformation,
763 KeyNodeInformation,
764 KeyFullInformation,
765 KeyNameInformation,
766 KeyCachedInformation,
767 KeyFlagsInformation,
768 KeyVirtualizationInformation,
769 KeyHandleTagsInformation,
770 MaxKeyInfoClass
771 } KEY_INFORMATION_CLASS;
772
773 typedef enum _KEY_VALUE_INFORMATION_CLASS {
774 KeyValueBasicInformation,
775 KeyValueFullInformation,
776 KeyValuePartialInformation,
777 KeyValueFullInformationAlign64,
778 KeyValuePartialInformationAlign64
779 } KEY_VALUE_INFORMATION_CLASS;
780
781 typedef enum _OBJECT_INFORMATION_CLASS {
782 ObjectBasicInformation,
783 ObjectNameInformation,
784 ObjectTypeInformation,
785 ObjectAllInformation,
786 ObjectDataInformation
787 } OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS;
788
789 typedef enum _PROCESSINFOCLASS {
790 ProcessBasicInformation = 0,
791 ProcessQuotaLimits = 1,
792 ProcessIoCounters = 2,
793 ProcessVmCounters = 3,
794 ProcessTimes = 4,
795 ProcessBasePriority = 5,
796 ProcessRaisePriority = 6,
797 ProcessDebugPort = 7,
798 ProcessExceptionPort = 8,
799 ProcessAccessToken = 9,
800 ProcessLdtInformation = 10,
801 ProcessLdtSize = 11,
802 ProcessDefaultHardErrorMode = 12,
803 ProcessIoPortHandlers = 13,
804 ProcessPooledUsageAndLimits = 14,
805 ProcessWorkingSetWatch = 15,
806 ProcessUserModeIOPL = 16,
807 ProcessEnableAlignmentFaultFixup = 17,
808 ProcessPriorityClass = 18,
809 ProcessWx86Information = 19,
810 ProcessHandleCount = 20,
811 ProcessAffinityMask = 21,
812 ProcessPriorityBoost = 22,
813 ProcessDeviceMap = 23,
814 ProcessSessionInformation = 24,
815 ProcessForegroundInformation = 25,
816 ProcessWow64Information = 26,
817 ProcessImageFileName = 27,
818 ProcessLUIDDeviceMapsEnabled = 28,
819 ProcessBreakOnTermination = 29,
820 ProcessDebugObjectHandle = 30,
821 ProcessDebugFlags = 31,
822 ProcessHandleTracing = 32,
823 ProcessExecuteFlags = 34,
824 MaxProcessInfoClass
825 } PROCESSINFOCLASS, PROCESS_INFORMATION_CLASS;
826
827 #define MEM_EXECUTE_OPTION_DISABLE 0x01
828 #define MEM_EXECUTE_OPTION_ENABLE 0x02
829 #define MEM_EXECUTE_OPTION_DISABLE_THUNK_EMULATION 0x04
830 #define MEM_EXECUTE_OPTION_PERMANENT 0x08
831
832 typedef enum _SECTION_INHERIT {
833 ViewShare = 1,
834 ViewUnmap = 2
835 } SECTION_INHERIT;
836
837 typedef enum _SYSTEM_INFORMATION_CLASS {
838 SystemBasicInformation = 0,
839 SystemCpuInformation = 1,
840 SystemPerformanceInformation = 2,
841 SystemTimeOfDayInformation = 3, /* was SystemTimeInformation */
842 Unknown4,
843 SystemProcessInformation = 5,
844 Unknown6,
845 Unknown7,
846 SystemProcessorPerformanceInformation = 8,
847 Unknown9,
848 Unknown10,
849 SystemModuleInformation = 11,
850 Unknown12,
851 Unknown13,
852 Unknown14,
853 Unknown15,
854 SystemHandleInformation = 16,
855 Unknown17,
856 SystemPageFileInformation = 18,
857 Unknown19,
858 Unknown20,
859 SystemCacheInformation = 21,
860 Unknown22,
861 SystemInterruptInformation = 23,
862 SystemDpcBehaviourInformation = 24,
863 SystemFullMemoryInformation = 25,
864 SystemNotImplemented6 = 25,
865 SystemLoadImage = 26,
866 SystemUnloadImage = 27,
867 SystemTimeAdjustmentInformation = 28,
868 SystemTimeAdjustment = 28,
869 SystemSummaryMemoryInformation = 29,
870 SystemNotImplemented7 = 29,
871 SystemNextEventIdInformation = 30,
872 SystemNotImplemented8 = 30,
873 SystemEventIdsInformation = 31,
874 SystemCrashDumpInformation = 32,
875 SystemExceptionInformation = 33,
876 SystemCrashDumpStateInformation = 34,
877 SystemKernelDebuggerInformation = 35,
878 SystemContextSwitchInformation = 36,
879 SystemRegistryQuotaInformation = 37,
880 SystemCurrentTimeZoneInformation = 44,
881 SystemTimeZoneInformation = 44,
882 SystemLookasideInformation = 45,
883 SystemSetTimeSlipEvent = 46,
884 SystemCreateSession = 47,
885 SystemDeleteSession = 48,
886 SystemInvalidInfoClass4 = 49,
887 SystemRangeStartInformation = 50,
888 SystemVerifierInformation = 51,
889 SystemAddVerifier = 52,
890 SystemSessionProcessesInformation = 53,
891 SystemLoadGdiDriverInSystemSpace = 54,
892 SystemNumaProcessorMap = 55,
893 SystemPrefetcherInformation = 56,
894 SystemExtendedProcessInformation = 57,
895 SystemRecommendedSharedDataAlignment = 58,
896 SystemComPlusPackage = 59,
897 SystemNumaAvailableMemory = 60,
898 SystemProcessorPowerInformation = 61,
899 SystemEmulationBasicInformation = 62,
900 SystemEmulationProcessorInformation = 63,
901 SystemExtendedHandleInformation = 64,
902 SystemLostDelayedWriteInformation = 65,
903 SystemBigPoolInformation = 66,
904 SystemSessionPoolTagInformation = 67,
905 SystemSessionMappedViewInformation = 68,
906 SystemHotpatchInformation = 69,
907 SystemObjectSecurityMode = 70,
908 SystemWatchdogTimerHandler = 71,
909 SystemWatchdogTimerInformation = 72,
910 SystemLogicalProcessorInformation = 73,
911 SystemWow64SharedInformation = 74,
912 SystemRegisterFirmwareTableInformationHandler = 75,
913 SystemFirmwareTableInformation = 76,
914 SystemModuleInformationEx = 77,
915 SystemVerifierTriageInformation = 78,
916 SystemSuperfetchInformation = 79,
917 SystemMemoryListInformation = 80,
918 SystemFileCacheInformationEx = 81,
919 SystemLogicalProcessorInformationEx = 107,
920 SystemInformationClassMax
921 } SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS;
922
923 typedef enum _THREADINFOCLASS {
924 ThreadBasicInformation,
925 ThreadTimes,
926 ThreadPriority,
927 ThreadBasePriority,
928 ThreadAffinityMask,
929 ThreadImpersonationToken,
930 ThreadDescriptorTableEntry,
931 ThreadEnableAlignmentFaultFixup,
932 ThreadEventPair_Reusable,
933 ThreadQuerySetWin32StartAddress,
934 ThreadZeroTlsCell,
935 ThreadPerformanceCount,
936 ThreadAmILastThread,
937 ThreadIdealProcessor,
938 ThreadPriorityBoost,
939 ThreadSetTlsArrayAddress,
940 ThreadIsIoPending,
941 ThreadHideFromDebugger,
942 ThreadBreakOnTermination,
943 ThreadSwitchLegacyState,
944 ThreadIsTerminated,
945 ThreadLastSystemCall,
946 ThreadIoPriority,
947 ThreadCycleTime,
948 ThreadPagePriority,
949 ThreadActualBasePriority,
950 ThreadTebInformation,
951 ThreadCSwitchMon,
952 ThreadCSwitchPmu,
953 ThreadWow64Context,
954 ThreadGroupInformation,
955 ThreadUmsInformation,
956 ThreadCounterProfiling,
957 ThreadIdealProcessorEx,
958 MaxThreadInfoClass
959 } THREADINFOCLASS;
960
961 typedef struct _THREAD_BASIC_INFORMATION
962 {
963 NTSTATUS ExitStatus;
964 PVOID TebBaseAddress;
965 CLIENT_ID ClientId;
966 ULONG_PTR AffinityMask;
967 LONG Priority;
968 LONG BasePriority;
969 } THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION;
970
971 typedef struct _THREAD_DESCRIPTOR_INFORMATION
972 {
973 DWORD Selector;
974 LDT_ENTRY Entry;
975 } THREAD_DESCRIPTOR_INFORMATION, *PTHREAD_DESCRIPTOR_INFORMATION;
976
977 typedef struct _KERNEL_USER_TIMES {
978 LARGE_INTEGER CreateTime;
979 LARGE_INTEGER ExitTime;
980 LARGE_INTEGER KernelTime;
981 LARGE_INTEGER UserTime;
982 } KERNEL_USER_TIMES, *PKERNEL_USER_TIMES;
983
984 typedef enum _WINSTATIONINFOCLASS {
985 WinStationInformation = 8
986 } WINSTATIONINFOCLASS;
987
988 typedef enum _MEMORY_INFORMATION_CLASS {
989 MemoryBasicInformation,
990 MemoryWorkingSetList,
991 MemorySectionName,
992 MemoryBasicVlmInformation
993 } MEMORY_INFORMATION_CLASS;
994
995 typedef struct _MEMORY_SECTION_NAME
996 {
997 UNICODE_STRING SectionFileName;
998 } MEMORY_SECTION_NAME, *PMEMORY_SECTION_NAME;
999
1000 typedef enum _MUTANT_INFORMATION_CLASS
1001 {
1002 MutantBasicInformation
1003 } MUTANT_INFORMATION_CLASS, *PMUTANT_INFORMATION_CLASS;
1004
1005 typedef struct _MUTANT_BASIC_INFORMATION {
1006 LONG CurrentCount;
1007 BOOLEAN OwnedByCaller;
1008 BOOLEAN AbandonedState;
1009 } MUTANT_BASIC_INFORMATION, *PMUTANT_BASIC_INFORMATION;
1010
1011 typedef enum _TIMER_INFORMATION_CLASS
1012 {
1013 TimerBasicInformation = 0
1014 } TIMER_INFORMATION_CLASS;
1015
1016 typedef struct _TIMER_BASIC_INFORMATION
1017 {
1018 LARGE_INTEGER RemainingTime;
1019 BOOLEAN TimerState;
1020 } TIMER_BASIC_INFORMATION, *PTIMER_BASIC_INFORMATION;
1021
1022
1023 /* return type of RtlDetermineDosPathNameType_U (FIXME: not the correct names) */
1024 typedef enum
1025 {
1026 INVALID_PATH = 0,
1027 UNC_PATH, /* "//foo" */
1028 ABSOLUTE_DRIVE_PATH, /* "c:/foo" */
1029 RELATIVE_DRIVE_PATH, /* "c:foo" */
1030 ABSOLUTE_PATH, /* "/foo" */
1031 RELATIVE_PATH, /* "foo" */
1032 DEVICE_PATH, /* "//./foo" */
1033 UNC_DOT_PATH /* "//." */
1034 } DOS_PATHNAME_TYPE;
1035
1036
1037 /***********************************************************************
1038 * Types and data structures
1039 */
1040
1041 /* This is used by NtQuerySystemInformation */
1042 typedef struct _SYSTEM_THREAD_INFORMATION
1043 { /* win32/win64 */
1044 LARGE_INTEGER KernelTime; /* 00/00 */
1045 LARGE_INTEGER UserTime; /* 08/08 */
1046 LARGE_INTEGER CreateTime; /* 10/10 */
1047 DWORD dwTickCount; /* 18/18 */
1048 LPVOID StartAddress; /* 1c/20 */
1049 CLIENT_ID ClientId; /* 20/28 */
1050 DWORD dwCurrentPriority; /* 28/38 */
1051 DWORD dwBasePriority; /* 2c/3c */
1052 DWORD dwContextSwitches; /* 30/40 */
1053 DWORD dwThreadState; /* 34/44 */
1054 DWORD dwWaitReason; /* 38/48 */
1055 DWORD dwUnknown; /* 3c/4c */
1056 } SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION;
1057
1058 typedef struct _IO_STATUS_BLOCK {
1059 union {
1060 NTSTATUS Status;
1061 PVOID Pointer;
1062 } DUMMYUNIONNAME;
1063
1064 ULONG_PTR Information;
1065 } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
1066
1067 typedef void (WINAPI * PIO_APC_ROUTINE)(PVOID,PIO_STATUS_BLOCK,ULONG);
1068
1069 typedef struct _KEY_BASIC_INFORMATION {
1070 LARGE_INTEGER LastWriteTime;
1071 ULONG TitleIndex;
1072 ULONG NameLength;
1073 WCHAR Name[1];
1074 } KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
1075
1076 typedef struct _KEY_NODE_INFORMATION
1077 {
1078 LARGE_INTEGER LastWriteTime;
1079 ULONG TitleIndex;
1080 ULONG ClassOffset;
1081 ULONG ClassLength;
1082 ULONG NameLength;
1083 WCHAR Name[1];
1084 /* Class[1]; */
1085 } KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
1086
1087 typedef struct _KEY_FULL_INFORMATION
1088 {
1089 LARGE_INTEGER LastWriteTime;
1090 ULONG TitleIndex;
1091 ULONG ClassOffset;
1092 ULONG ClassLength;
1093 ULONG SubKeys;
1094 ULONG MaxNameLen;
1095 ULONG MaxClassLen;
1096 ULONG Values;
1097 ULONG MaxValueNameLen;
1098 ULONG MaxValueDataLen;
1099 WCHAR Class[1];
1100 } KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
1101
1102 typedef struct _KEY_NAME_INFORMATION {
1103 ULONG NameLength;
1104 WCHAR Name[1];
1105 } KEY_NAME_INFORMATION, *PKEY_NAME_INFORMATION;
1106
1107 typedef struct _KEY_CACHED_INFORMATION
1108 {
1109 LARGE_INTEGER LastWriteTime;
1110 ULONG TitleIndex;
1111 ULONG SubKeys;
1112 ULONG MaxNameLen;
1113 ULONG Values;
1114 ULONG MaxValueNameLen;
1115 ULONG MaxValueDataLen;
1116 ULONG NameLength;
1117 } KEY_CACHED_INFORMATION, *PKEY_CACHED_INFORMATION;
1118
1119 typedef struct _KEY_VALUE_ENTRY
1120 {
1121 PUNICODE_STRING ValueName;
1122 ULONG DataLength;
1123 ULONG DataOffset;
1124 ULONG Type;
1125 } KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
1126
1127 typedef struct _KEY_VALUE_BASIC_INFORMATION {
1128 ULONG TitleIndex;
1129 ULONG Type;
1130 ULONG NameLength;
1131 WCHAR Name[1];
1132 } KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
1133
1134 typedef struct _KEY_VALUE_FULL_INFORMATION {
1135 ULONG TitleIndex;
1136 ULONG Type;
1137 ULONG DataOffset;
1138 ULONG DataLength;
1139 ULONG NameLength;
1140 WCHAR Name[1];
1141 } KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
1142
1143 typedef struct _KEY_VALUE_PARTIAL_INFORMATION {
1144 ULONG TitleIndex;
1145 ULONG Type;
1146 ULONG DataLength;
1147 UCHAR Data[1];
1148 } KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
1149
1150 #ifndef __OBJECT_ATTRIBUTES_DEFINED__
1151 #define __OBJECT_ATTRIBUTES_DEFINED__
1152 typedef struct _OBJECT_ATTRIBUTES {
1153 ULONG Length;
1154 HANDLE RootDirectory;
1155 PUNICODE_STRING ObjectName;
1156 ULONG Attributes;
1157 PVOID SecurityDescriptor; /* type SECURITY_DESCRIPTOR */
1158 PVOID SecurityQualityOfService; /* type SECURITY_QUALITY_OF_SERVICE */
1159 } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
1160 #endif
1161
1162 typedef struct _OBJECT_DATA_INFORMATION {
1163 BOOLEAN InheritHandle;
1164 BOOLEAN ProtectFromClose;
1165 } OBJECT_DATA_INFORMATION, *POBJECT_DATA_INFORMATION;
1166
1167 typedef struct _OBJECT_BASIC_INFORMATION {
1168 ULONG Attributes;
1169 ACCESS_MASK GrantedAccess;
1170 ULONG HandleCount;
1171 ULONG PointerCount;
1172 ULONG PagedPoolUsage;
1173 ULONG NonPagedPoolUsage;
1174 ULONG Reserved[3];
1175 ULONG NameInformationLength;
1176 ULONG TypeInformationLength;
1177 ULONG SecurityDescriptorLength;
1178 LARGE_INTEGER CreateTime;
1179 } OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION;
1180
1181 typedef struct _OBJECT_NAME_INFORMATION {
1182 UNICODE_STRING Name;
1183 } OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
1184
1185 typedef struct __OBJECT_TYPE_INFORMATION {
1186 UNICODE_STRING TypeName;
1187 ULONG Reserved [22];
1188 } OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION;
1189
1190 typedef struct _PROCESS_BASIC_INFORMATION {
1191 #ifdef __WINESRC__
1192 DWORD_PTR ExitStatus;
1193 PPEB PebBaseAddress;
1194 DWORD_PTR AffinityMask;
1195 DWORD_PTR BasePriority;
1196 ULONG_PTR UniqueProcessId;
1197 ULONG_PTR InheritedFromUniqueProcessId;
1198 #else
1199 PVOID Reserved1;
1200 PPEB PebBaseAddress;
1201 PVOID Reserved2[2];
1202 ULONG_PTR UniqueProcessId;
1203 PVOID Reserved3;
1204 #endif
1205 } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
1206
1207 #define PROCESS_PRIOCLASS_IDLE 1
1208 #define PROCESS_PRIOCLASS_NORMAL 2
1209 #define PROCESS_PRIOCLASS_HIGH 3
1210 #define PROCESS_PRIOCLASS_REALTIME 4
1211 #define PROCESS_PRIOCLASS_BELOW_NORMAL 5
1212 #define PROCESS_PRIOCLASS_ABOVE_NORMAL 6
1213
1214 typedef struct _PROCESS_PRIORITY_CLASS {
1215 BOOLEAN Foreground;
1216 UCHAR PriorityClass;
1217 } PROCESS_PRIORITY_CLASS, *PPROCESS_PRIORITY_CLASS;
1218
1219 typedef struct _RTL_HEAP_DEFINITION {
1220 ULONG Length; /* = sizeof(RTL_HEAP_DEFINITION) */
1221
1222 ULONG Unknown[11];
1223 } RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION;
1224
1225 typedef struct _RTL_RWLOCK {
1226 RTL_CRITICAL_SECTION rtlCS;
1227
1228 HANDLE hSharedReleaseSemaphore;
1229 UINT uSharedWaiters;
1230
1231 HANDLE hExclusiveReleaseSemaphore;
1232 UINT uExclusiveWaiters;
1233
1234 INT iNumberActive;
1235 HANDLE hOwningThreadId;
1236 DWORD dwTimeoutBoost;
1237 PVOID pDebugInfo;
1238 } RTL_RWLOCK, *LPRTL_RWLOCK;
1239
1240 /* System Information Class 0x00 */
1241
1242 typedef struct _SYSTEM_BASIC_INFORMATION {
1243 #ifdef __WINESRC__
1244 DWORD unknown;
1245 ULONG KeMaximumIncrement;
1246 ULONG PageSize;
1247 ULONG MmNumberOfPhysicalPages;
1248 ULONG MmLowestPhysicalPage;
1249 ULONG MmHighestPhysicalPage;
1250 ULONG_PTR AllocationGranularity;
1251 PVOID LowestUserAddress;
1252 PVOID HighestUserAddress;
1253 ULONG_PTR ActiveProcessorsAffinityMask;
1254 BYTE NumberOfProcessors;
1255 #else
1256 BYTE Reserved1[24];
1257 PVOID Reserved2[4];
1258 CCHAR NumberOfProcessors;
1259 #endif
1260 } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
1261
1262 /* System Information Class 0x01 */
1263
1264 typedef struct _SYSTEM_CPU_INFORMATION {
1265 WORD Architecture;
1266 WORD Level;
1267 WORD Revision; /* combination of CPU model and stepping */
1268 WORD Reserved; /* always zero */
1269 DWORD FeatureSet; /* see bit flags below */
1270 } SYSTEM_CPU_INFORMATION, *PSYSTEM_CPU_INFORMATION;
1271
1272 /* definitions of bits in the Feature set for the x86 processors */
1273 #define CPU_FEATURE_VME 0x00000005 /* Virtual 86 Mode Extensions */
1274 #define CPU_FEATURE_TSC 0x00000002 /* Time Stamp Counter available */
1275 #define CPU_FEATURE_CMOV 0x00000008 /* Conditional Move instruction*/
1276 #define CPU_FEATURE_PGE 0x00000014 /* Page table Entry Global bit */
1277 #define CPU_FEATURE_PSE 0x00000024 /* Page Size Extension */
1278 #define CPU_FEATURE_MTRR 0x00000040 /* Memory Type Range Registers */
1279 #define CPU_FEATURE_CX8 0x00000080 /* Compare and eXchange 8 byte instr. */
1280 #define CPU_FEATURE_MMX 0x00000100 /* Multi Media eXtensions */
1281 #define CPU_FEATURE_X86 0x00000200 /* seems to be always ON, on the '86 */
1282 #define CPU_FEATURE_PAT 0x00000400 /* Page Attribute Table */
1283 #define CPU_FEATURE_FXSR 0x00000800 /* FXSAVE and FXSTORE instructions */
1284 #define CPU_FEATURE_SEP 0x00001000 /* SYSENTER and SYSEXIT instructions */
1285 #define CPU_FEATURE_SSE 0x00002000 /* SSE extensions (ext. MMX) */
1286 #define CPU_FEATURE_3DNOW 0x00004000 /* 3DNOW instructions available */
1287 #define CPU_FEATURE_SSE2 0x00010000 /* SSE2 extensions (XMMI64) */
1288 #define CPU_FEATURE_DS 0x00020000 /* Debug Store */
1289 #define CPU_FEATURE_HTT 0x00040000 /* Hyper Threading Technology */
1290
1291 /* System Information Class 0x02 */
1292
1293 /* Documented in "Windows NT/2000 Native API Reference" by Gary Nebbett. */
1294 typedef struct _SYSTEM_PERFORMANCE_INFORMATION {
1295 LARGE_INTEGER IdleTime;
1296 LARGE_INTEGER ReadTransferCount;
1297 LARGE_INTEGER WriteTransferCount;
1298 LARGE_INTEGER OtherTransferCount;
1299 ULONG ReadOperationCount;
1300 ULONG WriteOperationCount;
1301 ULONG OtherOperationCount;
1302 ULONG AvailablePages;
1303 ULONG TotalCommittedPages;
1304 ULONG TotalCommitLimit;
1305 ULONG PeakCommitment;
1306 ULONG PageFaults;
1307 ULONG WriteCopyFaults;
1308 ULONG TransitionFaults;
1309 ULONG Reserved1;
1310 ULONG DemandZeroFaults;
1311 ULONG PagesRead;
1312 ULONG PageReadIos;
1313 ULONG Reserved2[2];
1314 ULONG PagefilePagesWritten;
1315 ULONG PagefilePageWriteIos;
1316 ULONG MappedFilePagesWritten;
1317 ULONG MappedFilePageWriteIos;
1318 ULONG PagedPoolUsage;
1319 ULONG NonPagedPoolUsage;
1320 ULONG PagedPoolAllocs;
1321 ULONG PagedPoolFrees;
1322 ULONG NonPagedPoolAllocs;
1323 ULONG NonPagedPoolFrees;
1324 ULONG TotalFreeSystemPtes;
1325 ULONG SystemCodePage;
1326 ULONG TotalSystemDriverPages;
1327 ULONG TotalSystemCodePages;
1328 ULONG SmallNonPagedLookasideListAllocateHits;
1329 ULONG SmallPagedLookasideListAllocateHits;
1330 ULONG Reserved3;
1331 ULONG MmSystemCachePage;
1332 ULONG PagedPoolPage;
1333 ULONG SystemDriverPage;
1334 ULONG FastReadNoWait;
1335 ULONG FastReadWait;
1336 ULONG FastReadResourceMiss;
1337 ULONG FastReadNotPossible;
1338 ULONG FastMdlReadNoWait;
1339 ULONG FastMdlReadWait;
1340 ULONG FastMdlReadResourceMiss;
1341 ULONG FastMdlReadNotPossible;
1342 ULONG MapDataNoWait;
1343 ULONG MapDataWait;
1344 ULONG MapDataNoWaitMiss;
1345 ULONG MapDataWaitMiss;
1346 ULONG PinMappedDataCount;
1347 ULONG PinReadNoWait;
1348 ULONG PinReadWait;
1349 ULONG PinReadNoWaitMiss;
1350 ULONG PinReadWaitMiss;
1351 ULONG CopyReadNoWait;
1352 ULONG CopyReadWait;
1353 ULONG CopyReadNoWaitMiss;
1354 ULONG CopyReadWaitMiss;
1355 ULONG MdlReadNoWait;
1356 ULONG MdlReadWait;
1357 ULONG MdlReadNoWaitMiss;
1358 ULONG MdlReadWaitMiss;
1359 ULONG ReadAheadIos;
1360 ULONG LazyWriteIos;
1361 ULONG LazyWritePages;
1362 ULONG DataFlushes;
1363 ULONG DataPages;
1364 ULONG ContextSwitches;
1365 ULONG FirstLevelTbFills;
1366 ULONG SecondLevelTbFills;
1367 ULONG SystemCalls;
1368 } SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
1369
1370 /* System Information Class 0x03 */
1371
1372 typedef struct _SYSTEM_TIMEOFDAY_INFORMATION {
1373 #ifdef __WINESRC__
1374 LARGE_INTEGER liKeBootTime;
1375 LARGE_INTEGER liKeSystemTime;
1376 LARGE_INTEGER liExpTimeZoneBias;
1377 ULONG uCurrentTimeZoneId;
1378 DWORD dwUnknown1[5];
1379 #else
1380 BYTE Reserved1[48];
1381 #endif
1382 } SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION; /* was SYSTEM_TIME_INFORMATION */
1383
1384 /* System Information Class 0x08 */
1385
1386 typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION {
1387 LARGE_INTEGER IdleTime;
1388 LARGE_INTEGER KernelTime;
1389 LARGE_INTEGER UserTime;
1390 LARGE_INTEGER Reserved1[2];
1391 ULONG Reserved2;
1392 } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
1393
1394 /* System Information Class 0x0b */
1395
1396 typedef struct _SYSTEM_DRIVER_INFORMATION {
1397 PVOID pvAddress;
1398 DWORD dwUnknown1;
1399 DWORD dwUnknown2;
1400 DWORD dwEntryIndex;
1401 DWORD dwUnknown3;
1402 char szName[MAX_PATH + 1];
1403 } SYSTEM_DRIVER_INFORMATION, *PSYSTEM_DRIVER_INFORMATION;
1404
1405 /* System Information Class 0x10 */
1406
1407 typedef struct _SYSTEM_HANDLE_ENTRY {
1408 ULONG OwnerPid;
1409 BYTE ObjectType;
1410 BYTE HandleFlags;
1411 USHORT HandleValue;
1412 PVOID ObjectPointer;
1413 ULONG AccessMask;
1414 } SYSTEM_HANDLE_ENTRY, *PSYSTEM_HANDLE_ENTRY;
1415
1416 typedef struct _SYSTEM_HANDLE_INFORMATION {
1417 ULONG Count;
1418 SYSTEM_HANDLE_ENTRY Handle[1];
1419 } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
1420
1421 /* System Information Class 0x15 */
1422
1423 typedef struct _SYSTEM_CACHE_INFORMATION {
1424 ULONG CurrentSize;
1425 ULONG PeakSize;
1426 ULONG PageFaultCount;
1427 ULONG MinimumWorkingSet;
1428 ULONG MaximumWorkingSet;
1429 ULONG unused[4];
1430 #ifdef _WIN64
1431 ULONG unknown64[7];
1432 #endif
1433 } SYSTEM_CACHE_INFORMATION, *PSYSTEM_CACHE_INFORMATION;
1434
1435 /* System Information Class 0x17 */
1436
1437 typedef struct _SYSTEM_INTERRUPT_INFORMATION {
1438 BYTE Reserved1[24];
1439 } SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION;
1440
1441 typedef struct _SYSTEM_CONFIGURATION_INFO {
1442 union {
1443 ULONG OemId;
1444 struct {
1445 WORD ProcessorArchitecture;
1446 WORD Reserved;
1447 } tag1;
1448 } tag2;
1449 ULONG PageSize;
1450 PVOID MinimumApplicationAddress;
1451 PVOID MaximumApplicationAddress;
1452 ULONG ActiveProcessorMask;
1453 ULONG NumberOfProcessors;
1454 ULONG ProcessorType;
1455 ULONG AllocationGranularity;
1456 WORD ProcessorLevel;
1457 WORD ProcessorRevision;
1458 } SYSTEM_CONFIGURATION_INFO, *PSYSTEM_CONFIGURATION_INFO;
1459
1460 typedef struct _SYSTEM_EXCEPTION_INFORMATION {
1461 BYTE Reserved1[16];
1462 } SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION;
1463
1464 typedef struct _SYSTEM_LOOKASIDE_INFORMATION {
1465 BYTE Reserved1[32];
1466 } SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION;
1467
1468 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION {
1469 BOOLEAN DebuggerEnabled;
1470 BOOLEAN DebuggerNotPresent;
1471 } SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION;
1472
1473 /* System Information Class 0x05 */
1474
1475 typedef struct _VM_COUNTERS_ {
1476 SIZE_T PeakVirtualSize;
1477 SIZE_T VirtualSize;
1478 ULONG PageFaultCount;
1479 SIZE_T PeakWorkingSetSize;
1480 SIZE_T WorkingSetSize;
1481 SIZE_T QuotaPeakPagedPoolUsage;
1482 SIZE_T QuotaPagedPoolUsage;
1483 SIZE_T QuotaPeakNonPagedPoolUsage;
1484 SIZE_T QuotaNonPagedPoolUsage;
1485 SIZE_T PagefileUsage;
1486 SIZE_T PeakPagefileUsage;
1487 SIZE_T PrivatePageCount;
1488 } VM_COUNTERS, *PVM_COUNTERS;
1489
1490 typedef struct _SYSTEM_PROCESS_INFORMATION {
1491 #ifdef __WINESRC__ /* win32/win64 */
1492 ULONG NextEntryOffset; /* 00/00 */
1493 DWORD dwThreadCount; /* 04/04 */
1494 DWORD dwUnknown1[6]; /* 08/08 */
1495 LARGE_INTEGER CreationTime; /* 20/20 */
1496 LARGE_INTEGER UserTime; /* 28/28 */
1497 LARGE_INTEGER KernelTime; /* 30/30 */
1498 UNICODE_STRING ProcessName; /* 38/38 */
1499 DWORD dwBasePriority; /* 40/48 */
1500 HANDLE UniqueProcessId; /* 44/50 */
1501 HANDLE ParentProcessId; /* 48/58 */
1502 ULONG HandleCount; /* 4c/60 */
1503 ULONG SessionId; /* 50/64 */
1504 DWORD dwUnknown4; /* 54/68 */
1505 VM_COUNTERS vmCounters; /* 58/70 */
1506 IO_COUNTERS ioCounters; /* 88/d0 */
1507 SYSTEM_THREAD_INFORMATION ti[1]; /* b8/100 */
1508 #else
1509 ULONG NextEntryOffset; /* 00/00 */
1510 BYTE Reserved1[52]; /* 04/04 */
1511 PVOID Reserved2[3]; /* 38/38 */
1512 HANDLE UniqueProcessId; /* 44/50 */
1513 PVOID Reserved3; /* 48/58 */
1514 ULONG HandleCount; /* 4c/60 */
1515 BYTE Reserved4[4]; /* 50/64 */
1516 PVOID Reserved5[11]; /* 54/68 */
1517 SIZE_T PeakPagefileUsage; /* 80/c0 */
1518 SIZE_T PrivatePageCount; /* 84/c8 */
1519 LARGE_INTEGER Reserved6[6]; /* 88/d0 */
1520 #endif
1521 } SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
1522
1523 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION {
1524 ULONG RegistryQuotaAllowed;
1525 ULONG RegistryQuotaUsed;
1526 PVOID Reserved1;
1527 } SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION;
1528
1529 typedef struct _SYSTEM_TIME_ADJUSTMENT {
1530 ULONG TimeAdjustment;
1531 BOOLEAN TimeAdjustmentDisabled;
1532 } SYSTEM_TIME_ADJUSTMENT, *PSYSTEM_TIME_ADJUSTMENT;
1533
1534 typedef struct _TIME_FIELDS
1535 { CSHORT Year;
1536 CSHORT Month;
1537 CSHORT Day;
1538 CSHORT Hour;
1539 CSHORT Minute;
1540 CSHORT Second;
1541 CSHORT Milliseconds;
1542 CSHORT Weekday;
1543 } TIME_FIELDS, *PTIME_FIELDS;
1544
1545 typedef struct _WINSTATIONINFORMATIONW {
1546 BYTE Reserved2[70];
1547 ULONG LogonId;
1548 BYTE Reserved3[1140];
1549 } WINSTATIONINFORMATIONW, *PWINSTATIONINFORMATIONW;
1550
1551 typedef BOOLEAN (WINAPI * PWINSTATIONQUERYINFORMATIONW)(HANDLE,ULONG,WINSTATIONINFOCLASS,PVOID,ULONG,PULONG);
1552
1553 typedef struct _LDR_RESOURCE_INFO
1554 {
1555 ULONG_PTR Type;
1556 ULONG_PTR Name;
1557 ULONG Language;
1558 } LDR_RESOURCE_INFO, *PLDR_RESOURCE_INFO;
1559
1560
1561 /* debug buffer definitions */
1562
1563 typedef struct _DEBUG_BUFFER {
1564 HANDLE SectionHandle;
1565 PVOID SectionBase;
1566 PVOID RemoteSectionBase;
1567 ULONG SectionBaseDelta;
1568 HANDLE EventPairHandle;
1569 ULONG Unknown[2];
1570 HANDLE RemoteThreadHandle;
1571 ULONG InfoClassMask;
1572 ULONG SizeOfInfo;
1573 ULONG AllocatedSize;
1574 ULONG SectionSize;
1575 PVOID ModuleInformation;
1576 PVOID BackTraceInformation;
1577 PVOID HeapInformation;
1578 PVOID LockInformation;
1579 PVOID Reserved[8];
1580 } DEBUG_BUFFER, *PDEBUG_BUFFER;
1581
1582 #define PDI_MODULES 0x01
1583 #define PDI_BACKTRACE 0x02
1584 #define PDI_HEAPS 0x04
1585 #define PDI_HEAP_TAGS 0x08
1586 #define PDI_HEAP_BLOCKS 0x10
1587 #define PDI_LOCKS 0x20
1588
1589 typedef struct _DEBUG_MODULE_INFORMATION {
1590 ULONG Reserved[2];
1591 ULONG Base;
1592 ULONG Size;
1593 ULONG Flags;
1594 USHORT Index;
1595 USHORT Unknown;
1596 USHORT LoadCount;
1597 USHORT ModuleNameOffset;
1598 CHAR ImageName[256];
1599 } DEBUG_MODULE_INFORMATION, *PDEBUG_MODULE_INFORMATION;
1600
1601 typedef struct _DEBUG_HEAP_INFORMATION {
1602 ULONG Base;
1603 ULONG Flags;
1604 USHORT Granularity;
1605 USHORT Unknown;
1606 ULONG Allocated;
1607 ULONG Committed;
1608 ULONG TagCount;
1609 ULONG BlockCount;
1610 ULONG Reserved[7];
1611 PVOID Tags;
1612 PVOID Blocks;
1613 } DEBUG_HEAP_INFORMATION, *PDEBUG_HEAP_INFORMATION;
1614
1615 typedef struct _DEBUG_LOCK_INFORMATION {
1616 PVOID Address;
1617 USHORT Type;
1618 USHORT CreatorBackTraceIndex;
1619 ULONG OwnerThreadId;
1620 ULONG ActiveCount;
1621 ULONG ContentionCount;
1622 ULONG EntryCount;
1623 ULONG RecursionCount;
1624 ULONG NumberOfSharedWaiters;
1625 ULONG NumberOfExclusiveWaiters;
1626 } DEBUG_LOCK_INFORMATION, *PDEBUG_LOCK_INFORMATION;
1627
1628 typedef struct _PORT_MESSAGE_HEADER {
1629 USHORT DataSize;
1630 USHORT MessageSize;
1631 USHORT MessageType;
1632 USHORT VirtualRangesOffset;
1633 CLIENT_ID ClientId;
1634 ULONG MessageId;
1635 ULONG SectionSize;
1636 } PORT_MESSAGE_HEADER, *PPORT_MESSAGE_HEADER, PORT_MESSAGE, *PPORT_MESSAGE;
1637
1638 typedef unsigned short RTL_ATOM, *PRTL_ATOM;
1639
1640 /* Wine doesn't implement atom table as NT does:
1641 * - in NT, atom tables are user space tables, which ntdll directly accesses
1642 * - on Wine, (even local) atom tables are wineserver objects, hence a HANDLE
1643 */
1644 typedef struct atom_table *RTL_ATOM_TABLE, **PRTL_ATOM_TABLE;
1645
1646 typedef enum _ATOM_INFORMATION_CLASS {
1647 AtomBasicInformation = 0,
1648 AtomTableInformation = 1,
1649 } ATOM_INFORMATION_CLASS;
1650
1651 typedef struct _ATOM_BASIC_INFORMATION {
1652 USHORT ReferenceCount;
1653 USHORT Pinned;
1654 USHORT NameLength;
1655 WCHAR Name[1];
1656 } ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION;
1657
1658 /* FIXME: names probably not correct */
1659 typedef struct _RTL_HANDLE
1660 {
1661 struct _RTL_HANDLE * Next;
1662 } RTL_HANDLE;
1663
1664 /* FIXME: names probably not correct */
1665 typedef struct _RTL_HANDLE_TABLE
1666 {
1667 ULONG MaxHandleCount; /* 0x00 */
1668 ULONG HandleSize; /* 0x04 */
1669 ULONG Unused[2]; /* 0x08-0x0c */
1670 PVOID NextFree; /* 0x10 */
1671 PVOID FirstHandle; /* 0x14 */
1672 PVOID ReservedMemory; /* 0x18 */
1673 PVOID MaxHandle; /* 0x1c */
1674 } RTL_HANDLE_TABLE;
1675
1676 /***********************************************************************
1677 * Defines
1678 */
1679
1680 /* flags for NtCreateFile and NtOpenFile */
1681 #define FILE_DIRECTORY_FILE 0x00000001
1682 #define FILE_WRITE_THROUGH 0x00000002
1683 #define FILE_SEQUENTIAL_ONLY 0x00000004
1684 #define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
1685 #define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
1686 #define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
1687 #define FILE_NON_DIRECTORY_FILE 0x00000040
1688 #define FILE_CREATE_TREE_CONNECTION 0x00000080
1689 #define FILE_COMPLETE_IF_OPLOCKED 0x00000100
1690 #define FILE_NO_EA_KNOWLEDGE 0x00000200
1691 #define FILE_OPEN_FOR_RECOVERY 0x00000400
1692 #define FILE_RANDOM_ACCESS 0x00000800
1693 #define FILE_DELETE_ON_CLOSE 0x00001000
1694 #define FILE_OPEN_BY_FILE_ID 0x00002000
1695 #define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
1696 #define FILE_NO_COMPRESSION 0x00008000
1697 #define FILE_RESERVE_OPFILTER 0x00100000
1698 #define FILE_TRANSACTED_MODE 0x00200000
1699 #define FILE_OPEN_OFFLINE_FILE 0x00400000
1700 #define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000
1701
1702 #define FILE_ATTRIBUTE_VALID_FLAGS 0x00007fb7
1703 #define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7
1704
1705 /* status for NtCreateFile or NtOpenFile */
1706 #define FILE_SUPERSEDED 0
1707 #define FILE_OPENED 1
1708 #define FILE_CREATED 2
1709 #define FILE_OVERWRITTEN 3
1710 #define FILE_EXISTS 4
1711 #define FILE_DOES_NOT_EXIST 5
1712
1713 /* disposition for NtCreateFile */
1714 #define FILE_SUPERSEDE 0
1715 #define FILE_OPEN 1
1716 #define FILE_CREATE 2
1717 #define FILE_OPEN_IF 3
1718 #define FILE_OVERWRITE 4
1719 #define FILE_OVERWRITE_IF 5
1720 #define FILE_MAXIMUM_DISPOSITION 5
1721
1722 /* Characteristics of a File System */
1723 #define FILE_REMOVABLE_MEDIA 0x00000001
1724 #define FILE_READ_ONLY_DEVICE 0x00000002
1725 #define FILE_FLOPPY_DISKETTE 0x00000004
1726 #define FILE_WRITE_ONE_MEDIA 0x00000008
1727 #define FILE_REMOTE_DEVICE 0x00000010
1728 #define FILE_DEVICE_IS_MOUNTED 0x00000020
1729 #define FILE_VIRTUAL_VOLUME 0x00000040
1730 #define FILE_AUTOGENERATED_DEVICE_NAME 0x00000080
1731 #define FILE_DEVICE_SECURE_OPEN 0x00000100
1732
1733 /* options for NtCreateNamedPipeFile */
1734 #define FILE_PIPE_INBOUND 0x00000000
1735 #define FILE_PIPE_OUTBOUND 0x00000001
1736 #define FILE_PIPE_FULL_DUPLEX 0x00000002
1737
1738 /* options for pipe's type */
1739 #define FILE_PIPE_TYPE_MESSAGE 0x00000001
1740 #define FILE_PIPE_TYPE_BYTE 0x00000000
1741 /* options for pipe's message mode */
1742 #define FILE_PIPE_MESSAGE_MODE 0x00000001
1743 #define FILE_PIPE_BYTE_STREAM_MODE 0x00000000
1744 /* options for pipe's blocking mode */
1745 #define FILE_PIPE_COMPLETE_OPERATION 0x00000001
1746 #define FILE_PIPE_QUEUE_OPERATION 0x00000000
1747 /* and client / server end */
1748 #define FILE_PIPE_SERVER_END 0x00000001
1749 #define FILE_PIPE_CLIENT_END 0x00000000
1750
1751 #define INTERNAL_TS_ACTIVE_CONSOLE_ID ( *((volatile ULONG*)(0x7ffe02d8)) )
1752
1753 #define LOGONID_CURRENT ((ULONG)-1)
1754
1755 #define OBJ_INHERIT 0x00000002
1756 #define OBJ_PERMANENT 0x00000010
1757 #define OBJ_EXCLUSIVE 0x00000020
1758 #define OBJ_CASE_INSENSITIVE 0x00000040
1759 #define OBJ_OPENIF 0x00000080
1760 #define OBJ_OPENLINK 0x00000100
1761 #define OBJ_KERNEL_HANDLE 0x00000200
1762 #define OBJ_VALID_ATTRIBUTES 0x000003F2
1763
1764 #define SERVERNAME_CURRENT ((HANDLE)NULL)
1765
1766 typedef void (CALLBACK *PNTAPCFUNC)(ULONG_PTR,ULONG_PTR,ULONG_PTR); /* FIXME: not the right name */
1767 typedef void (CALLBACK *PRTL_THREAD_START_ROUTINE)(LPVOID); /* FIXME: not the right name */
1768 typedef DWORD (CALLBACK *PRTL_WORK_ITEM_ROUTINE)(LPVOID); /* FIXME: not the right name */
1769 typedef void (NTAPI *RTL_WAITORTIMERCALLBACKFUNC)(PVOID,BOOLEAN); /* FIXME: not the right name */
1770
1771
1772 /* DbgPrintEx default levels */
1773 #define DPFLTR_ERROR_LEVEL 0
1774 #define DPFLTR_WARNING_LEVEL 1
1775 #define DPFLTR_TRACE_LEVEL 2
1776 #define DPFLTR_INFO_LEVEL 3
1777 #define DPFLTR_MASK 0x8000000
1778
1779 /* Well-known LUID values */
1780 #define SE_MIN_WELL_KNOWN_PRIVILEGE 2
1781 #define SE_CREATE_TOKEN_PRIVILEGE 2
1782 #define SE_ASSIGNPRIMARYTOKEN_PRIVILEGE 3
1783 #define SE_LOCK_MEMORY_PRIVILEGE 4
1784 #define SE_INCREASE_QUOTA_PRIVILEGE 5
1785 #define SE_UNSOLICITED_INPUT_PRIVILEGE 6 /* obsolete */
1786 #define SE_MACHINE_ACCOUNT_PRIVILEGE 6
1787 #define SE_TCB_PRIVILEGE 7
1788 #define SE_SECURITY_PRIVILEGE 8
1789 #define SE_TAKE_OWNERSHIP_PRIVILEGE 9
1790 #define SE_LOAD_DRIVER_PRIVILEGE 10
1791 #define SE_SYSTEM_PROFILE_PRIVILEGE 11
1792 #define SE_SYSTEMTIME_PRIVILEGE 12
1793 #define SE_PROF_SINGLE_PROCESS_PRIVILEGE 13
1794 #define SE_INC_BASE_PRIORITY_PRIVILEGE 14
1795 #define SE_CREATE_PAGEFILE_PRIVILEGE 15
1796 #define SE_CREATE_PERMANENT_PRIVILEGE 16
1797 #define SE_BACKUP_PRIVILEGE 17
1798 #define SE_RESTORE_PRIVILEGE 18
1799 #define SE_SHUTDOWN_PRIVILEGE 19
1800 #define SE_DEBUG_PRIVILEGE 20
1801 #define SE_AUDIT_PRIVILEGE 21
1802 #define SE_SYSTEM_ENVIRONMENT_PRIVILEGE 22
1803 #define SE_CHANGE_NOTIFY_PRIVILEGE 23
1804 #define SE_REMOTE_SHUTDOWN_PRIVILEGE 24
1805 #define SE_UNDOCK_PRIVILEGE 25
1806 #define SE_SYNC_AGENT_PRIVILEGE 26
1807 #define SE_ENABLE_DELEGATION_PRIVILEGE 27
1808 #define SE_MANAGE_VOLUME_PRIVILEGE 28
1809 #define SE_IMPERSONATE_PRIVILEGE 29
1810 #define SE_CREATE_GLOBAL_PRIVILEGE 30
1811 #define SE_MAX_WELL_KNOWN_PRIVILEGE SE_CREATE_GLOBAL_PRIVILEGE
1812
1813 /* NtGlobalFlag bits */
1814 #define FLG_STOP_ON_EXCEPTION 0x00000001
1815 #define FLG_SHOW_LDR_SNAPS 0x00000002
1816 #define FLG_DEBUG_INITIAL_COMMAND 0x00000004
1817 #define FLG_STOP_ON_HUNG_GUI 0x00000008
1818 #define FLG_HEAP_ENABLE_TAIL_CHECK 0x00000010
1819 #define FLG_HEAP_ENABLE_FREE_CHECK 0x00000020
1820 #define FLG_HEAP_VALIDATE_PARAMETERS 0x00000040
1821 #define FLG_HEAP_VALIDATE_ALL 0x00000080
1822 #define FLG_APPLICATION_VERIFIER 0x00000100
1823 #define FLG_POOL_ENABLE_TAGGING 0x00000400
1824 #define FLG_HEAP_ENABLE_TAGGING 0x00000800
1825 #define FLG_USER_STACK_TRACE_DB 0x00001000
1826 #define FLG_KERNEL_STACK_TRACE_DB 0x00002000
1827 #define FLG_MAINTAIN_OBJECT_TYPELIST 0x00004000
1828 #define FLG_HEAP_ENABLE_TAG_BY_DLL 0x00008000
1829 #define FLG_DISABLE_STACK_EXTENSION 0x00010000
1830 #define FLG_ENABLE_CSRDEBUG 0x00020000
1831 #define FLG_ENABLE_KDEBUG_SYMBOL_LOAD 0x00040000
1832 #define FLG_DISABLE_PAGE_KERNEL_STACKS 0x00080000
1833 #define FLG_ENABLE_SYSTEM_CRIT_BREAKS 0x00100000
1834 #define FLG_HEAP_DISABLE_COALESCING 0x00200000
1835 #define FLG_ENABLE_CLOSE_EXCEPTIONS 0x00400000
1836 #define FLG_ENABLE_EXCEPTION_LOGGING 0x00800000
1837 #define FLG_ENABLE_HANDLE_TYPE_TAGGING 0x01000000
1838 #define FLG_HEAP_PAGE_ALLOCS 0x02000000
1839 #define FLG_DEBUG_INITIAL_COMMAND_EX 0x04000000
1840 #define FLG_DISABLE_DBGPRINT 0x08000000
1841 #define FLG_CRITSEC_EVENT_CREATION 0x10000000
1842 #define FLG_LDR_TOP_DOWN 0x20000000
1843 #define FLG_ENABLE_HANDLE_EXCEPTIONS 0x40000000
1844 #define FLG_DISABLE_PROTDLLS 0x80000000
1845
1846 /* Rtl*Registry* functions structs and defines */
1847 #define RTL_REGISTRY_ABSOLUTE 0
1848 #define RTL_REGISTRY_SERVICES 1
1849 #define RTL_REGISTRY_CONTROL 2
1850 #define RTL_REGISTRY_WINDOWS_NT 3
1851 #define RTL_REGISTRY_DEVICEMAP 4
1852 #define RTL_REGISTRY_USER 5
1853
1854 #define RTL_REGISTRY_HANDLE 0x40000000
1855 #define RTL_REGISTRY_OPTIONAL 0x80000000
1856
1857 #define RTL_QUERY_REGISTRY_SUBKEY 0x00000001
1858 #define RTL_QUERY_REGISTRY_TOPKEY 0x00000002
1859 #define RTL_QUERY_REGISTRY_REQUIRED 0x00000004
1860 #define RTL_QUERY_REGISTRY_NOVALUE 0x00000008
1861 #define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010
1862 #define RTL_QUERY_REGISTRY_DIRECT 0x00000020
1863 #define RTL_QUERY_REGISTRY_DELETE 0x00000040
1864
1865 typedef NTSTATUS (WINAPI *PRTL_QUERY_REGISTRY_ROUTINE)( PCWSTR ValueName,
1866 ULONG ValueType,
1867 PVOID ValueData,
1868 ULONG ValueLength,
1869 PVOID Context,
1870 PVOID EntryContext);
1871
1872 typedef struct _RTL_QUERY_REGISTRY_TABLE
1873 {
1874 PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;
1875 ULONG Flags;
1876 PWSTR Name;
1877 PVOID EntryContext;
1878 ULONG DefaultType;
1879 PVOID DefaultData;
1880 ULONG DefaultLength;
1881 } RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
1882
1883 typedef struct _KEY_MULTIPLE_VALUE_INFORMATION
1884 {
1885 PUNICODE_STRING ValueName;
1886 ULONG DataLength;
1887 ULONG DataOffset;
1888 ULONG Type;
1889 } KEY_MULTIPLE_VALUE_INFORMATION, *PKEY_MULTIPLE_VALUE_INFORMATION;
1890
1891 typedef VOID (CALLBACK *PRTL_OVERLAPPED_COMPLETION_ROUTINE)(DWORD,DWORD,LPVOID);
1892
1893 typedef VOID (CALLBACK *PTIMER_APC_ROUTINE) ( PVOID, ULONG, LONG );
1894
1895 typedef enum _EVENT_INFORMATION_CLASS {
1896 EventBasicInformation
1897 } EVENT_INFORMATION_CLASS, *PEVENT_INFORMATION_CLASS;
1898
1899 typedef struct _EVENT_BASIC_INFORMATION {
1900 EVENT_TYPE EventType;
1901 LONG EventState;
1902 } EVENT_BASIC_INFORMATION, *PEVENT_BASIC_INFORMATION;
1903
1904 typedef enum _SEMAPHORE_INFORMATION_CLASS {
1905 SemaphoreBasicInformation
1906 } SEMAPHORE_INFORMATION_CLASS, *PSEMAPHORE_INFORMATION_CLASS;
1907
1908 typedef struct _SEMAPHORE_BASIC_INFORMATION {
1909 ULONG CurrentCount;
1910 ULONG MaximumCount;
1911 } SEMAPHORE_BASIC_INFORMATION, *PSEMAPHORE_BASIC_INFORMATION;
1912
1913 typedef enum _SECTION_INFORMATION_CLASS
1914 {
1915 SectionBasicInformation,
1916 SectionImageInformation,
1917 } SECTION_INFORMATION_CLASS;
1918
1919 typedef struct _SECTION_BASIC_INFORMATION {
1920 PVOID BaseAddress;
1921 ULONG Attributes;
1922 LARGE_INTEGER Size;
1923 } SECTION_BASIC_INFORMATION, *PSECTION_BASIC_INFORMATION;
1924
1925 typedef struct _SECTION_IMAGE_INFORMATION {
1926 PVOID TransferAddress;
1927 ULONG ZeroBits;
1928 SIZE_T MaximumStackSize;
1929 SIZE_T CommittedStackSize;
1930 ULONG SubSystemType;
1931 WORD SubsystemVersionLow;
1932 WORD SubsystemVersionHigh;
1933 ULONG GpValue;
1934 USHORT ImageCharacteristics;
1935 USHORT DllCharacteristics;
1936 USHORT Machine;
1937 BOOLEAN ImageContainsCode;
1938 UCHAR ImageFlags;
1939 ULONG LoaderFlags;
1940 ULONG ImageFileSize;
1941 ULONG CheckSum;
1942 } SECTION_IMAGE_INFORMATION, *PSECTION_IMAGE_INFORMATION;
1943
1944 typedef struct _LPC_SECTION_WRITE {
1945 ULONG Length;
1946 HANDLE SectionHandle;
1947 ULONG SectionOffset;
1948 ULONG ViewSize;
1949 PVOID ViewBase;
1950 PVOID TargetViewBase;
1951 } LPC_SECTION_WRITE, *PLPC_SECTION_WRITE;
1952
1953 typedef struct _LPC_SECTION_READ {
1954 ULONG Length;
1955 ULONG ViewSize;
1956 PVOID ViewBase;
1957 } LPC_SECTION_READ, *PLPC_SECTION_READ;
1958
1959 typedef struct _LPC_MESSAGE {
1960 USHORT DataSize;
1961 USHORT MessageSize;
1962 USHORT MessageType;
1963 USHORT VirtualRangesOffset;
1964 CLIENT_ID ClientId;
1965 ULONG_PTR MessageId;
1966 ULONG_PTR SectionSize;
1967 UCHAR Data[ANYSIZE_ARRAY];
1968 } LPC_MESSAGE, *PLPC_MESSAGE;
1969
1970 typedef struct _RTL_USER_PROCESS_INFORMATION
1971 {
1972 ULONG Length;
1973 HANDLE Process;
1974 HANDLE Thread;
1975 CLIENT_ID ClientId;
1976 SECTION_IMAGE_INFORMATION ImageInformation;
1977 } RTL_USER_PROCESS_INFORMATION, *PRTL_USER_PROCESS_INFORMATION;
1978
1979 typedef enum _SHUTDOWN_ACTION {
1980 ShutdownNoReboot,
1981 ShutdownReboot,
1982 ShutdownPowerOff
1983 } SHUTDOWN_ACTION, *PSHUTDOWN_ACTION;
1984
1985 typedef enum _KPROFILE_SOURCE {
1986 ProfileTime,
1987 ProfileAlignmentFixup,
1988 ProfileTotalIssues,
1989 ProfilePipelineDry,
1990 ProfileLoadInstructions,
1991 ProfilePipelineFrozen,
1992 ProfileBranchInstructions,
1993 ProfileTotalNonissues,
1994 ProfileDcacheMisses,
1995 ProfileIcacheMisses,
1996 ProfileCacheMisses,
1997 ProfileBranchMispredictions,
1998 ProfileStoreInstructions,
1999 ProfileFpInstructions,
2000 ProfileIntegerInstructions,
2001 Profile2Issue,
2002 Profile3Issue,
2003 Profile4Issue,
2004 ProfileSpecialInstructions,
2005 ProfileTotalCycles,
2006 ProfileIcacheIssues,
2007 ProfileDcacheAccesses,
2008 ProfileMemoryBarrierCycles,
2009 ProfileLoadLinkedIssues,
2010 ProfileMaximum
2011 } KPROFILE_SOURCE, *PKPROFILE_SOURCE;
2012
2013 typedef struct _DIRECTORY_BASIC_INFORMATION {
2014 UNICODE_STRING ObjectName;
2015 UNICODE_STRING ObjectTypeName;
2016 } DIRECTORY_BASIC_INFORMATION, *PDIRECTORY_BASIC_INFORMATION;
2017
2018 typedef struct _INITIAL_TEB {
2019 PVOID StackBase;
2020 PVOID StackLimit;
2021 PVOID StackCommit;
2022 PVOID StackCommitMax;
2023 PVOID StackReserved;
2024 } INITIAL_TEB, *PINITIAL_TEB;
2025
2026 typedef enum _PORT_INFORMATION_CLASS {
2027 PortNoInformation
2028 } PORT_INFORMATION_CLASS, *PPORT_INFORMATION_CLASS;
2029
2030 typedef enum _IO_COMPLETION_INFORMATION_CLASS {
2031 IoCompletionBasicInformation
2032 } IO_COMPLETION_INFORMATION_CLASS, *PIO_COMPLETION_INFORMATION_CLASS;
2033
2034 typedef struct _FILE_COMPLETION_INFORMATION {
2035 HANDLE CompletionPort;
2036 ULONG_PTR CompletionKey;
2037 } FILE_COMPLETION_INFORMATION, *PFILE_COMPLETION_INFORMATION;
2038
2039 #define IO_COMPLETION_QUERY_STATE 0x0001
2040 #define IO_COMPLETION_MODIFY_STATE 0x0002
2041 #define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
2042
2043 typedef enum _HARDERROR_RESPONSE_OPTION {
2044 OptionAbortRetryIgnore,
2045 OptionOk,
2046 OptionOkCancel,
2047 OptionRetryCancel,
2048 OptionYesNo,
2049 OptionYesNoCancel,
2050 OptionShutdownSystem
2051 } HARDERROR_RESPONSE_OPTION, *PHARDERROR_RESPONSE_OPTION;
2052
2053 typedef enum _HARDERROR_RESPONSE {
2054 ResponseReturnToCaller,
2055 ResponseNotHandled,
2056 ResponseAbort,
2057 ResponseCancel,
2058 ResponseIgnore,
2059 ResponseNo,
2060 ResponseOk,
2061 ResponseRetry,
2062 ResponseYes
2063 } HARDERROR_RESPONSE, *PHARDERROR_RESPONSE;
2064
2065 typedef enum _SYSDBG_COMMAND {
2066 SysDbgQueryModuleInformation,
2067 SysDbgQueryTraceInformation,
2068 SysDbgSetTracepoint,
2069 SysDbgSetSpecialCall,
2070 SysDbgClearSpecialCalls,
2071 SysDbgQuerySpecialCalls,
2072 SysDbgBreakPoint,
2073 SysDbgQueryVersion,
2074 SysDbgReadVirtual,
2075 SysDbgWriteVirtual,
2076 SysDbgReadPhysical,
2077 SysDbgWritePhysical,
2078 SysDbgReadControlSpace,
2079 SysDbgWriteControlSpace,
2080 SysDbgReadIoSpace,
2081 SysDbgWriteIoSpace,
2082 SysDbgReadMsr,
2083 SysDbgWriteMsr,
2084 SysDbgReadBusData,
2085 SysDbgWriteBusData
2086 } SYSDBG_COMMAND, *PSYSDBG_COMMAND;
2087
2088
2089 /*************************************************************************
2090 * Loader structures
2091 *
2092 * Those are not part of standard Winternl.h
2093 */
2094 typedef struct _LDR_MODULE
2095 {
2096 LIST_ENTRY InLoadOrderModuleList;
2097 LIST_ENTRY InMemoryOrderModuleList;
2098 LIST_ENTRY InInitializationOrderModuleList;
2099 void* BaseAddress;
2100 void* EntryPoint;
2101 ULONG SizeOfImage;
2102 UNICODE_STRING FullDllName;
2103 UNICODE_STRING BaseDllName;
2104 ULONG Flags;
2105 SHORT LoadCount;
2106 SHORT TlsIndex;
2107 HANDLE SectionHandle;
2108 ULONG CheckSum;
2109 ULONG TimeDateStamp;
2110 HANDLE ActivationContext;
2111 } LDR_MODULE, *PLDR_MODULE;
2112
2113 /* those defines are (some of the) regular LDR_MODULE.Flags values */
2114 #define LDR_IMAGE_IS_DLL 0x00000004
2115 #define LDR_LOAD_IN_PROGRESS 0x00001000
2116 #define LDR_UNLOAD_IN_PROGRESS 0x00002000
2117 #define LDR_NO_DLL_CALLS 0x00040000
2118 #define LDR_PROCESS_ATTACHED 0x00080000
2119 #define LDR_MODULE_REBASED 0x00200000
2120
2121 /* these ones is Wine specific */
2122 #define LDR_DONT_RESOLVE_REFS 0x40000000
2123 #define LDR_WINE_INTERNAL 0x80000000
2124
2125 /* flag for LdrAddRefDll */
2126 #define LDR_ADDREF_DLL_PIN 0x00000001
2127
2128 /* FIXME: to be checked */
2129 #define MAXIMUM_FILENAME_LENGTH 256
2130
2131 typedef struct _SYSTEM_MODULE
2132 {
2133 PVOID Reserved1; /* 00/00 */
2134 PVOID Reserved2; /* 04/08 */
2135 PVOID ImageBaseAddress; /* 08/10 */
2136 ULONG ImageSize; /* 0c/18 */
2137 ULONG Flags; /* 10/1c */
2138 WORD Id; /* 14/20 */
2139 WORD Rank; /* 16/22 */
2140 WORD Unknown; /* 18/24 */
2141 WORD NameOffset; /* 1a/26 */
2142 BYTE Name[MAXIMUM_FILENAME_LENGTH]; /* 1c/28 */
2143 } SYSTEM_MODULE, *PSYSTEM_MODULE;
2144
2145 typedef struct _SYSTEM_MODULE_INFORMATION
2146 {
2147 ULONG ModulesCount;
2148 SYSTEM_MODULE Modules[1]; /* FIXME: should be Modules[0] */
2149 } SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;
2150
2151 /***********************************************************************
2152 * Function declarations
2153 */
2154
2155 #if defined(__i386__) && defined(__GNUC__)
2156 static inline void WINAPI DbgBreakPoint(void) { __asm__ __volatile__("int3"); }
2157 static inline void WINAPI DbgUserBreakPoint(void) { __asm__ __volatile__("int3"); }
2158 #else /* __i386__ && __GNUC__ */
2159 NTSYSAPI void WINAPI DbgBreakPoint(void);
2160 NTSYSAPI void WINAPI DbgUserBreakPoint(void);
2161 #endif /* __i386__ && __GNUC__ */
2162 #ifndef __REACTOS__
2163 NTSYSAPI NTSTATUS WINAPIV DbgPrint(LPCSTR fmt, ...);
2164 #endif /* __REACTOS__ */
2165 NTSYSAPI NTSTATUS WINAPIV DbgPrintEx(ULONG iComponentId, ULONG Level, LPCSTR fmt, ...);
2166 NTSYSAPI NTSTATUS WINAPI LdrAccessResource(HMODULE,const IMAGE_RESOURCE_DATA_ENTRY*,void**,PULONG);
2167 NTSYSAPI NTSTATUS WINAPI LdrAddRefDll(ULONG,HMODULE);
2168 NTSYSAPI NTSTATUS WINAPI LdrFindResourceDirectory_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DIRECTORY**);
2169 NTSYSAPI NTSTATUS WINAPI LdrFindResource_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DATA_ENTRY**);
2170 NTSYSAPI NTSTATUS WINAPI LdrDisableThreadCalloutsForDll(HMODULE);
2171 NTSYSAPI NTSTATUS WINAPI LdrFindEntryForAddress(const void*, PLDR_MODULE*);
2172 NTSYSAPI NTSTATUS WINAPI LdrGetDllHandle(LPCWSTR, ULONG, const UNICODE_STRING*, HMODULE*);
2173 NTSYSAPI NTSTATUS WINAPI LdrGetProcedureAddress(HMODULE, const ANSI_STRING*, ULONG, void**);
2174 NTSYSAPI void WINAPI LdrInitializeThunk(void*,ULONG_PTR,ULONG_PTR,ULONG_PTR);
2175 NTSYSAPI NTSTATUS WINAPI LdrLoadDll(LPCWSTR, DWORD, const UNICODE_STRING*, HMODULE*);
2176 NTSYSAPI NTSTATUS WINAPI LdrLockLoaderLock(ULONG,ULONG*,ULONG_PTR*);
2177 IMAGE_BASE_RELOCATION * WINAPI LdrProcessRelocationBlock(void*,UINT,USHORT*,INT_PTR);
2178 NTSYSAPI NTSTATUS WINAPI LdrQueryImageFileExecutionOptions(const UNICODE_STRING*,LPCWSTR,ULONG,void*,ULONG,ULONG*);
2179 NTSYSAPI NTSTATUS WINAPI LdrQueryProcessModuleInformation(SYSTEM_MODULE_INFORMATION*, ULONG, ULONG*);
2180 NTSYSAPI void WINAPI LdrShutdownProcess(void);
2181 NTSYSAPI void WINAPI LdrShutdownThread(void);
2182 NTSYSAPI NTSTATUS WINAPI LdrUnloadDll(HMODULE);
2183 NTSYSAPI NTSTATUS WINAPI LdrUnlockLoaderLock(ULONG,ULONG_PTR);
2184 NTSYSAPI NTSTATUS WINAPI NtAcceptConnectPort(PHANDLE,ULONG,PLPC_MESSAGE,BOOLEAN,PLPC_SECTION_WRITE,PLPC_SECTION_READ);
2185 NTSYSAPI NTSTATUS WINAPI NtAccessCheck(PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,PGENERIC_MAPPING,PPRIVILEGE_SET,PULONG,PULONG,NTSTATUS*);
2186 NTSYSAPI NTSTATUS WINAPI NtAccessCheckAndAuditAlarm(PUNICODE_STRING,HANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,ACCESS_MASK,PGENERIC_MAPPING,BOOLEAN,PACCESS_MASK,PBOOLEAN,PBOOLEAN);
2187 NTSYSAPI NTSTATUS WINAPI NtAddAtom(const WCHAR*,ULONG,RTL_ATOM*);
2188 NTSYSAPI NTSTATUS WINAPI NtAdjustGroupsToken(HANDLE,BOOLEAN,PTOKEN_GROUPS,ULONG,PTOKEN_GROUPS,PULONG);
2189 NTSYSAPI NTSTATUS WINAPI NtAdjustPrivilegesToken(HANDLE,BOOLEAN,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD);
2190 NTSYSAPI NTSTATUS WINAPI NtAlertResumeThread(HANDLE,PULONG);
2191 NTSYSAPI NTSTATUS WINAPI NtAlertThread(HANDLE ThreadHandle);
2192 NTSYSAPI NTSTATUS WINAPI NtAllocateLocallyUniqueId(PLUID lpLuid);
2193 NTSYSAPI NTSTATUS WINAPI NtAllocateUuids(PULARGE_INTEGER,PULONG,PULONG);
2194 NTSYSAPI NTSTATUS WINAPI NtAllocateVirtualMemory(HANDLE,PVOID*,ULONG,SIZE_T*,ULONG,ULONG);
2195 NTSYSAPI NTSTATUS WINAPI NtAreMappedFilesTheSame(PVOID,PVOID);
2196 NTSYSAPI NTSTATUS WINAPI NtAssignProcessToJobObject(HANDLE,HANDLE);
2197 NTSYSAPI NTSTATUS WINAPI NtCallbackReturn(PVOID,ULONG,NTSTATUS);
2198 NTSYSAPI NTSTATUS WINAPI NtCancelIoFile(HANDLE,PIO_STATUS_BLOCK);
2199 NTSYSAPI NTSTATUS WINAPI NtCancelIoFileEx(HANDLE,PIO_STATUS_BLOCK,PIO_STATUS_BLOCK);
2200 NTSYSAPI NTSTATUS WINAPI NtCancelTimer(HANDLE, BOOLEAN*);
2201 NTSYSAPI NTSTATUS WINAPI NtClearEvent(HANDLE);
2202 NTSYSAPI NTSTATUS WINAPI NtClose(HANDLE);
2203 NTSYSAPI NTSTATUS WINAPI NtCloseObjectAuditAlarm(PUNICODE_STRING,HANDLE,BOOLEAN);
2204 NTSYSAPI NTSTATUS WINAPI NtCompleteConnectPort(HANDLE);
2205 NTSYSAPI NTSTATUS WINAPI NtConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
2206 NTSYSAPI NTSTATUS WINAPI NtContinue(PCONTEXT,BOOLEAN);
2207 NTSYSAPI NTSTATUS WINAPI NtCreateDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
2208 NTSYSAPI NTSTATUS WINAPI NtCreateEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *,EVENT_TYPE,BOOLEAN);
2209 NTSYSAPI NTSTATUS WINAPI NtCreateEventPair(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
2210 NTSYSAPI NTSTATUS WINAPI NtCreateFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,PLARGE_INTEGER,ULONG,ULONG,ULONG,ULONG,PVOID,ULONG);
2211 NTSYSAPI NTSTATUS WINAPI NtCreateIoCompletion(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,ULONG);
2212 NTSYSAPI NTSTATUS WINAPI NtCreateJobObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2213 NTSYSAPI NTSTATUS WINAPI NtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
2214 NTSYSAPI NTSTATUS WINAPI NtCreateKeyTransacted(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,HANDLE,ULONG*);
2215 NTSYSAPI NTSTATUS WINAPI NtCreateKeyedEvent(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG);
2216 NTSYSAPI NTSTATUS WINAPI NtCreateMailslotFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,PLARGE_INTEGER);
2217 NTSYSAPI NTSTATUS WINAPI NtCreateMutant(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,BOOLEAN);
2218 NTSYSAPI NTSTATUS WINAPI NtCreateNamedPipeFile(PHANDLE,ULONG,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,PLARGE_INTEGER);
2219 NTSYSAPI NTSTATUS WINAPI NtCreatePagingFile(PUNICODE_STRING,PLARGE_INTEGER,PLARGE_INTEGER,PLARGE_INTEGER);
2220 NTSYSAPI NTSTATUS WINAPI NtCreatePort(PHANDLE,POBJECT_ATTRIBUTES,ULONG,ULONG,PULONG);
2221 NTSYSAPI NTSTATUS WINAPI NtCreateProcess(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,HANDLE,BOOLEAN,HANDLE,HANDLE,HANDLE);
2222 NTSYSAPI NTSTATUS WINAPI NtCreateProfile(PHANDLE,HANDLE,PVOID,ULONG,ULONG,PVOID,ULONG,KPROFILE_SOURCE,KAFFINITY);
2223 NTSYSAPI NTSTATUS WINAPI NtCreateSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const LARGE_INTEGER*,ULONG,ULONG,HANDLE);
2224 NTSYSAPI NTSTATUS WINAPI NtCreateSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,LONG,LONG);
2225 NTSYSAPI NTSTATUS WINAPI NtCreateSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PUNICODE_STRING);
2226 NTSYSAPI NTSTATUS WINAPI NtCreateThread(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,HANDLE,PCLIENT_ID,PCONTEXT,PINITIAL_TEB,BOOLEAN);
2227 NTSYSAPI NTSTATUS WINAPI NtCreateTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*, TIMER_TYPE);
2228 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);
2229 NTSYSAPI NTSTATUS WINAPI NtDelayExecution(BOOLEAN,const LARGE_INTEGER*);
2230 NTSYSAPI NTSTATUS WINAPI NtDeleteAtom(RTL_ATOM);
2231 NTSYSAPI NTSTATUS WINAPI NtDeleteFile(POBJECT_ATTRIBUTES);
2232 NTSYSAPI NTSTATUS WINAPI NtDeleteKey(HANDLE);
2233 NTSYSAPI NTSTATUS WINAPI NtDeleteValueKey(HANDLE,const UNICODE_STRING *);
2234 NTSYSAPI NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
2235 NTSYSAPI NTSTATUS WINAPI NtDisplayString(PUNICODE_STRING);
2236 NTSYSAPI NTSTATUS WINAPI NtDuplicateObject(HANDLE,HANDLE,HANDLE,PHANDLE,ACCESS_MASK,ULONG,ULONG);
2237 NTSYSAPI NTSTATUS WINAPI NtDuplicateToken(HANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,PHANDLE);
2238 NTSYSAPI NTSTATUS WINAPI NtEnumerateKey(HANDLE,ULONG,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
2239 NTSYSAPI NTSTATUS WINAPI NtEnumerateValueKey(HANDLE,ULONG,KEY_VALUE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2240 NTSYSAPI NTSTATUS WINAPI NtExtendSection(HANDLE,PLARGE_INTEGER);
2241 NTSYSAPI NTSTATUS WINAPI NtFindAtom(const WCHAR*,ULONG,RTL_ATOM*);
2242 NTSYSAPI NTSTATUS WINAPI NtFlushBuffersFile(HANDLE,IO_STATUS_BLOCK*);
2243 NTSYSAPI NTSTATUS WINAPI NtFlushInstructionCache(HANDLE,LPCVOID,SIZE_T);
2244 NTSYSAPI NTSTATUS WINAPI NtFlushKey(HANDLE);
2245 NTSYSAPI NTSTATUS WINAPI NtFlushVirtualMemory(HANDLE,LPCVOID*,SIZE_T*,ULONG);
2246 NTSYSAPI NTSTATUS WINAPI NtFlushWriteBuffer(VOID);
2247 NTSYSAPI NTSTATUS WINAPI NtFreeVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
2248 NTSYSAPI NTSTATUS WINAPI NtFsControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
2249 NTSYSAPI NTSTATUS WINAPI NtGetContextThread(HANDLE,CONTEXT*);
2250 NTSYSAPI ULONG WINAPI NtGetCurrentProcessorNumber(void);
2251 NTSYSAPI NTSTATUS WINAPI NtGetPlugPlayEvent(ULONG,ULONG,PVOID,ULONG);
2252 NTSYSAPI ULONG WINAPI NtGetTickCount(VOID);
2253 NTSYSAPI NTSTATUS WINAPI NtGetWriteWatch(HANDLE,ULONG,PVOID,SIZE_T,PVOID*,ULONG_PTR*,ULONG*);
2254 NTSYSAPI NTSTATUS WINAPI NtImpersonateAnonymousToken(HANDLE);
2255 NTSYSAPI NTSTATUS WINAPI NtImpersonateClientOfPort(HANDLE,PPORT_MESSAGE);
2256 NTSYSAPI NTSTATUS WINAPI NtImpersonateThread(HANDLE,HANDLE,PSECURITY_QUALITY_OF_SERVICE);
2257 NTSYSAPI NTSTATUS WINAPI NtInitializeRegistry(BOOLEAN);
2258 NTSYSAPI NTSTATUS WINAPI NtInitiatePowerAction(POWER_ACTION,SYSTEM_POWER_STATE,ULONG,BOOLEAN);
2259 NTSYSAPI NTSTATUS WINAPI NtIsProcessInJob(HANDLE,HANDLE);
2260 NTSYSAPI NTSTATUS WINAPI NtListenPort(HANDLE,PLPC_MESSAGE);
2261 NTSYSAPI NTSTATUS WINAPI NtLoadDriver(const UNICODE_STRING *);
2262 NTSYSAPI NTSTATUS WINAPI NtLoadKey(const OBJECT_ATTRIBUTES *,OBJECT_ATTRIBUTES *);
2263 NTSYSAPI NTSTATUS WINAPI NtLockFile(HANDLE,HANDLE,PIO_APC_ROUTINE,void*,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,ULONG*,BOOLEAN,BOOLEAN);
2264 NTSYSAPI NTSTATUS WINAPI NtLockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
2265 NTSYSAPI NTSTATUS WINAPI NtMakeTemporaryObject(HANDLE);
2266 NTSYSAPI NTSTATUS WINAPI NtMapViewOfSection(HANDLE,HANDLE,PVOID*,ULONG,SIZE_T,const LARGE_INTEGER*,SIZE_T*,SECTION_INHERIT,ULONG,ULONG);
2267 NTSYSAPI NTSTATUS WINAPI NtNotifyChangeDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,ULONG,BOOLEAN);
2268 NTSYSAPI NTSTATUS WINAPI NtNotifyChangeKey(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN);
2269 NTSYSAPI NTSTATUS WINAPI NtNotifyChangeMultipleKeys(HANDLE,ULONG,OBJECT_ATTRIBUTES*,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN);
2270 NTSYSAPI NTSTATUS WINAPI NtOpenDirectoryObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2271 NTSYSAPI NTSTATUS WINAPI NtOpenEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
2272 NTSYSAPI NTSTATUS WINAPI NtOpenEventPair(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2273 NTSYSAPI NTSTATUS WINAPI NtOpenFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG);
2274 NTSYSAPI NTSTATUS WINAPI NtOpenIoCompletion(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2275 NTSYSAPI NTSTATUS WINAPI NtOpenJobObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2276 NTSYSAPI NTSTATUS WINAPI NtOpenKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
2277 NTSYSAPI NTSTATUS WINAPI NtOpenKeyEx(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG);
2278 NTSYSAPI NTSTATUS WINAPI NtOpenKeyTransacted(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,HANDLE);
2279 NTSYSAPI NTSTATUS WINAPI NtOpenKeyTransactedEx(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,HANDLE);
2280 NTSYSAPI NTSTATUS WINAPI NtOpenKeyedEvent(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2281 NTSYSAPI NTSTATUS WINAPI NtOpenMutant(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2282 NTSYSAPI NTSTATUS WINAPI NtOpenObjectAuditAlarm(PUNICODE_STRING,PHANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,ACCESS_MASK,PPRIVILEGE_SET,BOOLEAN,BOOLEAN,PBOOLEAN);
2283 NTSYSAPI NTSTATUS WINAPI NtOpenProcess(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
2284 NTSYSAPI NTSTATUS WINAPI NtOpenProcessToken(HANDLE,DWORD,HANDLE *);
2285 NTSYSAPI NTSTATUS WINAPI NtOpenProcessTokenEx(HANDLE,DWORD,DWORD,HANDLE *);
2286 NTSYSAPI NTSTATUS WINAPI NtOpenSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2287 NTSYSAPI NTSTATUS WINAPI NtOpenSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2288 NTSYSAPI NTSTATUS WINAPI NtOpenSymbolicLinkObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2289 NTSYSAPI NTSTATUS WINAPI NtOpenThread(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
2290 NTSYSAPI NTSTATUS WINAPI NtOpenThreadToken(HANDLE,DWORD,BOOLEAN,HANDLE *);
2291 NTSYSAPI NTSTATUS WINAPI NtOpenThreadTokenEx(HANDLE,DWORD,BOOLEAN,DWORD,HANDLE *);
2292 NTSYSAPI NTSTATUS WINAPI NtOpenTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*);
2293 NTSYSAPI NTSTATUS WINAPI NtPowerInformation(POWER_INFORMATION_LEVEL,PVOID,ULONG,PVOID,ULONG);
2294 NTSYSAPI NTSTATUS WINAPI NtPrivilegeCheck(HANDLE,PPRIVILEGE_SET,PBOOLEAN);
2295 NTSYSAPI NTSTATUS WINAPI NtPrivilegeObjectAuditAlarm(PUNICODE_STRING,HANDLE,HANDLE,ULONG,PPRIVILEGE_SET,BOOLEAN);
2296 NTSYSAPI NTSTATUS WINAPI NtPrivilegedServiceAuditAlarm(PUNICODE_STRING,PUNICODE_STRING,HANDLE,PPRIVILEGE_SET,BOOLEAN);
2297 NTSYSAPI NTSTATUS WINAPI NtProtectVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG,ULONG*);
2298 NTSYSAPI NTSTATUS WINAPI NtPulseEvent(HANDLE,PULONG);
2299 NTSYSAPI NTSTATUS WINAPI NtQueueApcThread(HANDLE,PNTAPCFUNC,ULONG_PTR,ULONG_PTR,ULONG_PTR);
2300 NTSYSAPI NTSTATUS WINAPI NtQueryAttributesFile(const OBJECT_ATTRIBUTES*,FILE_BASIC_INFORMATION*);
2301 NTSYSAPI NTSTATUS WINAPI NtQueryDefaultLocale(BOOLEAN,LCID*);
2302 NTSYSAPI NTSTATUS WINAPI NtQueryDefaultUILanguage(LANGID*);
2303 NTSYSAPI NTSTATUS WINAPI NtQueryDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS,BOOLEAN,PUNICODE_STRING,BOOLEAN);
2304 NTSYSAPI NTSTATUS WINAPI NtQueryDirectoryObject(HANDLE,PDIRECTORY_BASIC_INFORMATION,ULONG,BOOLEAN,BOOLEAN,PULONG,PULONG);
2305 NTSYSAPI NTSTATUS WINAPI NtQueryEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,BOOLEAN,PVOID,ULONG,PULONG,BOOLEAN);
2306 NTSYSAPI NTSTATUS WINAPI NtQueryEvent(HANDLE,EVENT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2307 NTSYSAPI NTSTATUS WINAPI NtQueryFullAttributesFile(const OBJECT_ATTRIBUTES*,FILE_NETWORK_OPEN_INFORMATION*);
2308 NTSYSAPI NTSTATUS WINAPI NtQueryInformationAtom(RTL_ATOM,ATOM_INFORMATION_CLASS,PVOID,ULONG,ULONG*);
2309 NTSYSAPI NTSTATUS WINAPI NtQueryInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,LONG,FILE_INFORMATION_CLASS);
2310 NTSYSAPI NTSTATUS WINAPI NtQueryInformationJobObject(HANDLE,JOBOBJECTINFOCLASS,PVOID,ULONG,PULONG);
2311 NTSYSAPI NTSTATUS WINAPI NtQueryInformationPort(HANDLE,PORT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2312 NTSYSAPI NTSTATUS WINAPI NtQueryInformationProcess(HANDLE,PROCESSINFOCLASS,PVOID,ULONG,PULONG);
2313 NTSYSAPI NTSTATUS WINAPI NtQueryInformationThread(HANDLE,THREADINFOCLASS,PVOID,ULONG,PULONG);
2314 NTSYSAPI NTSTATUS WINAPI NtQueryInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2315 NTSYSAPI NTSTATUS WINAPI NtQueryInstallUILanguage(LANGID*);
2316 NTSYSAPI NTSTATUS WINAPI NtQueryIntervalProfile(KPROFILE_SOURCE,PULONG);
2317 NTSYSAPI NTSTATUS WINAPI NtQueryIoCompletion(HANDLE,IO_COMPLETION_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2318 NTSYSAPI NTSTATUS WINAPI NtQueryKey(HANDLE,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
2319 NTSYSAPI NTSTATUS WINAPI NtQueryMultipleValueKey(HANDLE,PKEY_MULTIPLE_VALUE_INFORMATION,ULONG,PVOID,ULONG,PULONG);
2320 NTSYSAPI NTSTATUS WINAPI NtQueryMutant(HANDLE,MUTANT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2321 NTSYSAPI NTSTATUS WINAPI NtQueryObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG, PULONG);
2322 NTSYSAPI NTSTATUS WINAPI NtQueryOpenSubKeys(POBJECT_ATTRIBUTES,PULONG);
2323 NTSYSAPI NTSTATUS WINAPI NtQueryPerformanceCounter(PLARGE_INTEGER, PLARGE_INTEGER);
2324 NTSYSAPI NTSTATUS WINAPI NtQuerySecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,ULONG,PULONG);
2325 NTSYSAPI NTSTATUS WINAPI NtQuerySection(HANDLE,SECTION_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2326 NTSYSAPI NTSTATUS WINAPI NtQuerySemaphore(HANDLE,SEMAPHORE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2327 NTSYSAPI NTSTATUS WINAPI NtQuerySymbolicLinkObject(HANDLE,PUNICODE_STRING,PULONG);
2328 NTSYSAPI NTSTATUS WINAPI NtQuerySystemEnvironmentValue(PUNICODE_STRING,PWCHAR,ULONG,PULONG);
2329 NTSYSAPI NTSTATUS WINAPI NtQuerySystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2330 NTSYSAPI NTSTATUS WINAPI NtQuerySystemInformationEx(SYSTEM_INFORMATION_CLASS,void*,ULONG,void*,ULONG,ULONG*);
2331 NTSYSAPI NTSTATUS WINAPI NtQuerySystemTime(PLARGE_INTEGER);
2332 NTSYSAPI NTSTATUS WINAPI NtQueryTimer(HANDLE,TIMER_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2333 NTSYSAPI NTSTATUS WINAPI NtQueryTimerResolution(PULONG,PULONG,PULONG);
2334 NTSYSAPI NTSTATUS WINAPI NtQueryValueKey(HANDLE,const UNICODE_STRING *,KEY_VALUE_INFORMATION_CLASS,void *,DWORD,DWORD *);
2335 NTSYSAPI NTSTATUS WINAPI NtQueryLicenseValue(const UNICODE_STRING *,ULONG *,PVOID,ULONG,ULONG *);
2336 NTSYSAPI NTSTATUS WINAPI NtQueryVirtualMemory(HANDLE,LPCVOID,MEMORY_INFORMATION_CLASS,PVOID,SIZE_T,SIZE_T*);
2337 NTSYSAPI NTSTATUS WINAPI NtQueryVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
2338 NTSYSAPI NTSTATUS WINAPI NtRaiseException(PEXCEPTION_RECORD,PCONTEXT,BOOL);
2339 NTSYSAPI NTSTATUS WINAPI NtRaiseHardError(NTSTATUS,ULONG,PUNICODE_STRING,PVOID*,HARDERROR_RESPONSE_OPTION,PHARDERROR_RESPONSE);
2340 NTSYSAPI NTSTATUS WINAPI NtReadFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,PLARGE_INTEGER,PULONG);
2341 NTSYSAPI NTSTATUS WINAPI NtReadFileScatter(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,FILE_SEGMENT_ELEMENT*,ULONG,PLARGE_INTEGER,PULONG);
2342 NTSYSAPI NTSTATUS WINAPI NtReadRequestData(HANDLE,PLPC_MESSAGE,ULONG,PVOID,ULONG,PULONG);
2343 NTSYSAPI NTSTATUS WINAPI NtReadVirtualMemory(HANDLE,const void*,void*,SIZE_T,SIZE_T*);
2344 NTSYSAPI NTSTATUS WINAPI NtRegisterThreadTerminatePort(HANDLE);
2345 NTSYSAPI NTSTATUS WINAPI NtReleaseKeyedEvent(HANDLE,const void*,BOOLEAN,const LARGE_INTEGER*);
2346 NTSYSAPI NTSTATUS WINAPI NtReleaseMutant(HANDLE,PLONG);
2347 NTSYSAPI NTSTATUS WINAPI NtReleaseSemaphore(HANDLE,ULONG,PULONG);
2348 NTSYSAPI NTSTATUS WINAPI NtRemoveIoCompletion(HANDLE,PULONG_PTR,PULONG_PTR,PIO_STATUS_BLOCK,PLARGE_INTEGER);
2349 NTSYSAPI NTSTATUS WINAPI NtRenameKey(HANDLE,UNICODE_STRING*);
2350 NTSYSAPI NTSTATUS WINAPI NtReplaceKey(POBJECT_ATTRIBUTES,HANDLE,POBJECT_ATTRIBUTES);
2351 NTSYSAPI NTSTATUS WINAPI NtReplyPort(HANDLE,PLPC_MESSAGE);
2352 NTSYSAPI NTSTATUS WINAPI NtReplyWaitReceivePort(HANDLE,PULONG,PLPC_MESSAGE,PLPC_MESSAGE);
2353 NTSYSAPI NTSTATUS WINAPI NtReplyWaitReceivePortEx(HANDLE,PVOID*,PPORT_MESSAGE,PPORT_MESSAGE,PLARGE_INTEGER);
2354 NTSYSAPI NTSTATUS WINAPI NtReplyWaitReplyPort(HANDLE,PLPC_MESSAGE);
2355 NTSYSAPI NTSTATUS WINAPI NtRequestPort(HANDLE,PLPC_MESSAGE);
2356 NTSYSAPI NTSTATUS WINAPI NtRequestWaitReplyPort(HANDLE,PLPC_MESSAGE,PLPC_MESSAGE);
2357 NTSYSAPI NTSTATUS WINAPI NtResetEvent(HANDLE,PULONG);
2358 NTSYSAPI NTSTATUS WINAPI NtResetWriteWatch(HANDLE,PVOID,SIZE_T);
2359 NTSYSAPI NTSTATUS WINAPI NtRestoreKey(HANDLE,HANDLE,ULONG);
2360 NTSYSAPI NTSTATUS WINAPI NtResumeThread(HANDLE,PULONG);
2361 NTSYSAPI NTSTATUS WINAPI NtSaveKey(HANDLE,HANDLE);
2362 NTSYSAPI NTSTATUS WINAPI NtSecureConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PSID,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
2363 NTSYSAPI NTSTATUS WINAPI NtSetContextThread(HANDLE,const CONTEXT*);
2364 NTSYSAPI NTSTATUS WINAPI NtSetDefaultHardErrorPort(HANDLE);
2365 NTSYSAPI NTSTATUS WINAPI NtSetDefaultLocale(BOOLEAN,LCID);
2366 NTSYSAPI NTSTATUS WINAPI NtSetDefaultUILanguage(LANGID);
2367 NTSYSAPI NTSTATUS WINAPI NtSetEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG);
2368 NTSYSAPI NTSTATUS WINAPI NtSetEvent(HANDLE,PULONG);
2369 NTSYSAPI NTSTATUS WINAPI NtSetHighEventPair(HANDLE);
2370 NTSYSAPI NTSTATUS WINAPI NtSetHighWaitLowEventPair(HANDLE);
2371 NTSYSAPI NTSTATUS WINAPI NtSetHighWaitLowThread(VOID);
2372 NTSYSAPI NTSTATUS WINAPI NtSetInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS);
2373 NTSYSAPI NTSTATUS WINAPI NtSetInformationJobObject(HANDLE,JOBOBJECTINFOCLASS,PVOID,ULONG);
2374 NTSYSAPI NTSTATUS WINAPI NtSetInformationKey(HANDLE,const int,PVOID,ULONG);
2375 NTSYSAPI NTSTATUS WINAPI NtSetInformationObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG);
2376 NTSYSAPI NTSTATUS WINAPI NtSetInformationProcess(HANDLE,PROCESS_INFORMATION_CLASS,PVOID,ULONG);
2377 NTSYSAPI NTSTATUS WINAPI NtSetInformationThread(HANDLE,THREADINFOCLASS,LPCVOID,ULONG);
2378 NTSYSAPI NTSTATUS WINAPI NtSetInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG);
2379 NTSYSAPI NTSTATUS WINAPI NtSetIntervalProfile(ULONG,KPROFILE_SOURCE);
2380 NTSYSAPI NTSTATUS WINAPI NtSetIoCompletion(HANDLE,ULONG_PTR,ULONG_PTR,NTSTATUS,SIZE_T);
2381 NTSYSAPI NTSTATUS WINAPI NtSetLdtEntries(ULONG,ULONG,ULONG,ULONG,ULONG,ULONG);
2382 NTSYSAPI NTSTATUS WINAPI NtSetLowEventPair(HANDLE);
2383 NTSYSAPI NTSTATUS WINAPI NtSetLowWaitHighEventPair(HANDLE);
2384 NTSYSAPI NTSTATUS WINAPI NtSetLowWaitHighThread(VOID);
2385 NTSYSAPI NTSTATUS WINAPI NtSetSecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
2386 NTSYSAPI NTSTATUS WINAPI NtSetSystemEnvironmentValue(PUNICODE_STRING,PUNICODE_STRING);
2387 NTSYSAPI NTSTATUS WINAPI NtSetSystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG);
2388 NTSYSAPI NTSTATUS WINAPI NtSetSystemPowerState(POWER_ACTION,SYSTEM_POWER_STATE,ULONG);
2389 NTSYSAPI NTSTATUS WINAPI NtSetSystemTime(const LARGE_INTEGER*,LARGE_INTEGER*);
2390 NTSYSAPI NTSTATUS WINAPI NtSetTimer(HANDLE, const LARGE_INTEGER*, PTIMER_APC_ROUTINE, PVOID, BOOLEAN, ULONG, BOOLEAN*);
2391 NTSYSAPI NTSTATUS WINAPI NtSetTimerResolution(ULONG,BOOLEAN,PULONG);
2392 NTSYSAPI NTSTATUS WINAPI NtSetValueKey(HANDLE,const UNICODE_STRING *,ULONG,ULONG,const void *,ULONG);
2393 NTSYSAPI NTSTATUS WINAPI NtSetVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
2394 NTSYSAPI NTSTATUS WINAPI NtSignalAndWaitForSingleObject(HANDLE,HANDLE,BOOLEAN,const LARGE_INTEGER*);
2395 NTSYSAPI NTSTATUS WINAPI NtShutdownSystem(SHUTDOWN_ACTION);
2396 NTSYSAPI NTSTATUS WINAPI NtStartProfile(HANDLE);
2397 NTSYSAPI NTSTATUS WINAPI NtStopProfile(HANDLE);
2398 NTSYSAPI NTSTATUS WINAPI NtSuspendThread(HANDLE,PULONG);
2399 NTSYSAPI NTSTATUS WINAPI NtSystemDebugControl(SYSDBG_COMMAND,PVOID,ULONG,PVOID,ULONG,PULONG);
2400 NTSYSAPI NTSTATUS WINAPI NtTerminateJobObject(HANDLE,NTSTATUS);
2401 NTSYSAPI NTSTATUS WINAPI NtTerminateProcess(HANDLE,LONG);
2402 NTSYSAPI NTSTATUS WINAPI NtTerminateThread(HANDLE,LONG);
2403 NTSYSAPI NTSTATUS WINAPI NtTestAlert(VOID);
2404 NTSYSAPI NTSTATUS WINAPI NtUnloadDriver(const UNICODE_STRING *);
2405 NTSYSAPI NTSTATUS WINAPI NtUnloadKey(POBJECT_ATTRIBUTES);
2406 NTSYSAPI NTSTATUS WINAPI NtUnloadKeyEx(POBJECT_ATTRIBUTES,HANDLE);
2407 NTSYSAPI NTSTATUS WINAPI NtUnlockFile(HANDLE,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,PULONG);
2408 NTSYSAPI NTSTATUS WINAPI NtUnlockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
2409 NTSYSAPI NTSTATUS WINAPI NtUnmapViewOfSection(HANDLE,PVOID);
2410 NTSYSAPI NTSTATUS WINAPI NtVdmControl(ULONG,PVOID);
2411 NTSYSAPI NTSTATUS WINAPI NtWaitForKeyedEvent(HANDLE,const void*,BOOLEAN,const LARGE_INTEGER*);
2412 NTSYSAPI NTSTATUS WINAPI NtWaitForSingleObject(HANDLE,BOOLEAN,const LARGE_INTEGER*);
2413 NTSYSAPI NTSTATUS WINAPI NtWaitForMultipleObjects(ULONG,const HANDLE*,BOOLEAN,BOOLEAN,const LARGE_INTEGER*);
2414 NTSYSAPI NTSTATUS WINAPI NtWaitHighEventPair(HANDLE);
2415 NTSYSAPI NTSTATUS WINAPI NtWaitLowEventPair(HANDLE);
2416 NTSYSAPI NTSTATUS WINAPI NtWriteFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,const void*,ULONG,PLARGE_INTEGER,PULONG);
2417 NTSYSAPI NTSTATUS WINAPI NtWriteFileGather(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,FILE_SEGMENT_ELEMENT*,ULONG,PLARGE_INTEGER,PULONG);
2418 NTSYSAPI NTSTATUS WINAPI NtWriteRequestData(HANDLE,PLPC_MESSAGE,ULONG,PVOID,ULONG,PULONG);
2419 NTSYSAPI NTSTATUS WINAPI NtWriteVirtualMemory(HANDLE,void*,const void*,SIZE_T,SIZE_T*);
2420 NTSYSAPI NTSTATUS WINAPI NtYieldExecution(void);
2421
2422 NTSYSAPI void WINAPI RtlAcquirePebLock(void);
2423 NTSYSAPI BYTE WINAPI RtlAcquireResourceExclusive(LPRTL_RWLOCK,BYTE);
2424 NTSYSAPI BYTE WINAPI RtlAcquireResourceShared(LPRTL_RWLOCK,BYTE);
2425 NTSYSAPI void WINAPI RtlAcquireSRWLockExclusive(RTL_SRWLOCK*);
2426 NTSYSAPI void WINAPI RtlAcquireSRWLockShared(RTL_SRWLOCK*);
2427 NTSYSAPI NTSTATUS WINAPI RtlActivateActivationContext(DWORD,HANDLE,ULONG_PTR*);
2428 NTSYSAPI NTSTATUS WINAPI RtlAddAce(PACL,DWORD,DWORD,PACE_HEADER,DWORD);
2429 NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAce(PACL,DWORD,DWORD,PSID);
2430 NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
2431 NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedObjectAce(PACL,DWORD,DWORD,DWORD,GUID*,GUID*,PSID);
2432 NTSYSAPI NTSTATUS WINAPI RtlAddAccessDeniedAce(PACL,DWORD,DWORD,PSID);
2433 NTSYSAPI NTSTATUS WINAPI RtlAddAccessDeniedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
2434 NTSYSAPI NTSTATUS WINAPI RtlAddAccessDeniedObjectAce(PACL,DWORD,DWORD,DWORD,GUID*,GUID*,PSID);
2435 NTSYSAPI NTSTATUS WINAPI RtlAddAtomToAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*);
2436 NTSYSAPI NTSTATUS WINAPI RtlAddAuditAccessAce(PACL,DWORD,DWORD,PSID,BOOL,BOOL);
2437 NTSYSAPI NTSTATUS WINAPI RtlAddAuditAccessAceEx(PACL,DWORD,DWORD,DWORD,PSID,BOOL,BOOL);
2438 NTSYSAPI NTSTATUS WINAPI RtlAddAuditAccessObjectAce(PACL,DWORD,DWORD,DWORD,GUID*,GUID*,PSID,BOOL,BOOL);
2439 NTSYSAPI void WINAPI RtlAddRefActivationContext(HANDLE);
2440 NTSYSAPI PVOID WINAPI RtlAddVectoredExceptionHandler(ULONG,PVECTORED_EXCEPTION_HANDLER);
2441 NTSYSAPI NTSTATUS WINAPI RtlAdjustPrivilege(ULONG,BOOLEAN,BOOLEAN,PBOOLEAN);
2442 NTSYSAPI NTSTATUS WINAPI RtlAllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PSID *);
2443 NTSYSAPI RTL_HANDLE * WINAPI RtlAllocateHandle(RTL_HANDLE_TABLE *,ULONG *);
2444 NTSYSAPI PVOID WINAPI RtlAllocateHeap(HANDLE,ULONG,SIZE_T) __WINE_ALLOC_SIZE(3);
2445 NTSYSAPI WCHAR WINAPI RtlAnsiCharToUnicodeChar(LPSTR *);
2446 NTSYSAPI DWORD WINAPI RtlAnsiStringToUnicodeSize(const STRING *);
2447 NTSYSAPI NTSTATUS WINAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING,PCANSI_STRING,BOOLEAN);
2448 NTSYSAPI NTSTATUS WINAPI RtlAppendAsciizToString(STRING *,LPCSTR);
2449 NTSYSAPI NTSTATUS WINAPI RtlAppendStringToString(STRING *,const STRING *);
2450 NTSYSAPI NTSTATUS WINAPI RtlAppendUnicodeStringToString(UNICODE_STRING *,const UNICODE_STRING *);
2451 NTSYSAPI NTSTATUS WINAPI RtlAppendUnicodeToString(UNICODE_STRING *,LPCWSTR);
2452 NTSYSAPI BOOLEAN WINAPI RtlAreAllAccessesGranted(ACCESS_MASK,ACCESS_MASK);
2453 NTSYSAPI BOOLEAN WINAPI RtlAreAnyAccessesGranted(ACCESS_MASK,ACCESS_MASK);
2454 NTSYSAPI BOOLEAN WINAPI RtlAreBitsSet(PCRTL_BITMAP,ULONG,ULONG);
2455 NTSYSAPI BOOLEAN WINAPI RtlAreBitsClear(PCRTL_BITMAP,ULONG,ULONG);
2456 NTSYSAPI NTSTATUS WINAPI RtlCharToInteger(PCSZ,ULONG,PULONG);
2457 NTSYSAPI NTSTATUS WINAPI RtlCheckRegistryKey(ULONG, PWSTR);
2458 NTSYSAPI void WINAPI RtlClearAllBits(PRTL_BITMAP);
2459 NTSYSAPI void WINAPI RtlClearBits(PRTL_BITMAP,ULONG,ULONG);
2460 NTSYSAPI NTSTATUS WINAPI RtlCreateActivationContext(HANDLE*,const void*);
2461 NTSYSAPI PDEBUG_BUFFER WINAPI RtlCreateQueryDebugBuffer(ULONG,BOOLEAN);
2462 NTSYSAPI ULONG WINAPI RtlCompactHeap(HANDLE,ULONG);
2463 NTSYSAPI LONG WINAPI RtlCompareString(const STRING*,const STRING*,BOOLEAN);
2464 NTSYSAPI LONG WINAPI RtlCompareUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
2465 NTSYSAPI LONG WINAPI RtlCompareUnicodeStrings(const WCHAR*,SIZE_T,const WCHAR*,SIZE_T,BOOLEAN);
2466 NTSYSAPI NTSTATUS WINAPI RtlCompressBuffer(USHORT,PUCHAR,ULONG,PUCHAR,ULONG,ULONG,PULONG,PVOID);
2467 NTSYSAPI DWORD WINAPI RtlComputeCrc32(DWORD,const BYTE*,INT);
2468 NTSYSAPI NTSTATUS WINAPI RtlConvertSidToUnicodeString(PUNICODE_STRING,PSID,BOOLEAN);
2469 NTSYSAPI void WINAPI RtlCopyLuid(PLUID,const LUID*);
2470 NTSYSAPI void WINAPI RtlCopyLuidAndAttributesArray(ULONG,const LUID_AND_ATTRIBUTES*,PLUID_AND_ATTRIBUTES);
2471 NTSYSAPI BOOLEAN WINAPI RtlCopySid(DWORD,PSID,PSID);
2472 NTSYSAPI NTSTATUS WINAPI RtlCopySecurityDescriptor(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR);
2473 NTSYSAPI void WINAPI RtlCopyString(STRING*,const STRING*);
2474 NTSYSAPI void WINAPI RtlCopyUnicodeString(UNICODE_STRING*,const UNICODE_STRING*);
2475 NTSYSAPI NTSTATUS WINAPI RtlCreateAcl(PACL,DWORD,DWORD);
2476 NTSYSAPI NTSTATUS WINAPI RtlCreateAtomTable(ULONG,RTL_ATOM_TABLE*);
2477 NTSYSAPI NTSTATUS WINAPI RtlCreateEnvironment(BOOLEAN, PWSTR*);
2478 NTSYSAPI HANDLE WINAPI RtlCreateHeap(ULONG,PVOID,SIZE_T,SIZE_T,PVOID,PRTL_HEAP_DEFINITION);
2479 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*);
2480 NTSYSAPI NTSTATUS WINAPI RtlCreateSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD);
2481 NTSYSAPI NTSTATUS WINAPI RtlCreateTimerQueue(PHANDLE);
2482 NTSYSAPI NTSTATUS WINAPI RtlCreateTimer(PHANDLE, HANDLE, RTL_WAITORTIMERCALLBACKFUNC, PVOID, DWORD, DWORD, ULONG);
2483 NTSYSAPI BOOLEAN WINAPI RtlCreateUnicodeString(PUNICODE_STRING,LPCWSTR);
2484 NTSYSAPI BOOLEAN WINAPI RtlCreateUnicodeStringFromAsciiz(PUNICODE_STRING,LPCSTR);
2485 NTSYSAPI NTSTATUS WINAPI RtlCreateUserProcess(UNICODE_STRING*,ULONG,RTL_USER_PROCESS_PARAMETERS*,SECURITY_DESCRIPTOR*,SECURITY_DESCRIPTOR*,HANDLE,BOOLEAN,HANDLE,HANDLE,RTL_USER_PROCESS_INFORMATION*);
2486 NTSYSAPI NTSTATUS WINAPI RtlCreateUserThread(HANDLE,const SECURITY_DESCRIPTOR*,BOOLEAN,PVOID,SIZE_T,SIZE_T,PRTL_THREAD_START_ROUTINE,void*,HANDLE*,CLIENT_ID*);
2487 NTSYSAPI void WINAPI RtlDeactivateActivationContext(DWORD,ULONG_PTR);
2488 NTSYSAPI PVOID WINAPI RtlDecodePointer(PVOID);
2489 NTSYSAPI NTSTATUS WINAPI RtlDecompressBuffer(USHORT,PUCHAR,ULONG,PUCHAR,ULONG,PULONG);
2490 NTSYSAPI NTSTATUS WINAPI RtlDeleteAce(PACL,DWORD);
2491 NTSYSAPI NTSTATUS WINAPI RtlDeleteAtomFromAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
2492 NTSYSAPI NTSTATUS WINAPI RtlDeleteCriticalSection(RTL_CRITICAL_SECTION *);
2493 NTSYSAPI NTSTATUS WINAPI RtlDeleteRegistryValue(ULONG, PCWSTR, PCWSTR);
2494 NTSYSAPI void WINAPI RtlDeleteResource(LPRTL_RWLOCK);
2495 NTSYSAPI NTSTATUS WINAPI RtlDeleteSecurityObject(PSECURITY_DESCRIPTOR*);
2496 NTSYSAPI NTSTATUS WINAPI RtlDeleteTimer(HANDLE, HANDLE, HANDLE);
2497 NTSYSAPI NTSTATUS WINAPI RtlDeleteTimerQueueEx(HANDLE, HANDLE);
2498 NTSYSAPI PRTL_USER_PROCESS_PARAMETERS WINAPI RtlDeNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
2499 NTSYSAPI NTSTATUS WINAPI RtlDeregisterWait(HANDLE);
2500 NTSYSAPI NTSTATUS WINAPI RtlDeregisterWaitEx(HANDLE,HANDLE);
2501 NTSYSAPI NTSTATUS WINAPI RtlDestroyAtomTable(RTL_ATOM_TABLE);
2502 NTSYSAPI NTSTATUS WINAPI RtlDestroyEnvironment(PWSTR);
2503 NTSYSAPI NTSTATUS WINAPI RtlDestroyHandleTable(RTL_HANDLE_TABLE *);
2504 NTSYSAPI HANDLE WINAPI RtlDestroyHeap(HANDLE);
2505 NTSYSAPI void WINAPI RtlDestroyProcessParameters(RTL_USER_PROCESS_PARAMETERS*);
2506 NTSYSAPI NTSTATUS WINAPI RtlDestroyQueryDebugBuffer(PDEBUG_BUFFER);
2507 NTSYSAPI DOS_PATHNAME_TYPE WINAPI RtlDetermineDosPathNameType_U(PCWSTR);
2508 NTSYSAPI BOOLEAN WINAPI RtlDllShutdownInProgress(void);
2509 NTSYSAPI BOOLEAN WINAPI RtlDoesFileExists_U(LPCWSTR);
2510 NTSYSAPI BOOLEAN WINAPI RtlDosPathNameToNtPathName_U(PCWSTR,PUNICODE_STRING,PWSTR*,CURDIR*);
2511 NTSYSAPI ULONG WINAPI RtlDosSearchPath_U(LPCWSTR, LPCWSTR, LPCWSTR, ULONG, LPWSTR, LPWSTR*);
2512 NTSYSAPI WCHAR WINAPI RtlDowncaseUnicodeChar(WCHAR);
2513 NTSYSAPI NTSTATUS WINAPI RtlDowncaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
2514 NTSYSAPI void WINAPI RtlDumpResource(LPRTL_RWLOCK);
2515 NTSYSAPI NTSTATUS WINAPI RtlDuplicateUnicodeString(int,const UNICODE_STRING*,UNICODE_STRING*);
2516 NTSYSAPI NTSTATUS WINAPI RtlEmptyAtomTable(RTL_ATOM_TABLE,BOOLEAN);
2517 NTSYSAPI PVOID WINAPI RtlEncodePointer(PVOID);
2518 NTSYSAPI NTSTATUS WINAPI RtlEnterCriticalSection(RTL_CRITICAL_SECTION *);
2519 NTSYSAPI void WINAPI RtlEraseUnicodeString(UNICODE_STRING*);
2520 NTSYSAPI NTSTATUS WINAPI RtlEqualComputerName(const UNICODE_STRING*,const UNICODE_STRING*);
2521 NTSYSAPI NTSTATUS WINAPI RtlEqualDomainName(const UNICODE_STRING*,const UNICODE_STRING*);
2522 NTSYSAPI BOOLEAN WINAPI RtlEqualLuid(const LUID*,const LUID*);
2523 NTSYSAPI BOOL WINAPI RtlEqualPrefixSid(PSID,PSID);
2524 NTSYSAPI BOOL WINAPI RtlEqualSid(PSID,PSID);
2525 NTSYSAPI BOOLEAN WINAPI RtlEqualString(const STRING*,const STRING*,BOOLEAN);
2526 NTSYSAPI BOOLEAN WINAPI RtlEqualUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
2527 NTSYSAPI void DECLSPEC_NORETURN WINAPI RtlExitUserProcess(ULONG);
2528 NTSYSAPI void DECLSPEC_NORETURN WINAPI RtlExitUserThread(ULONG);
2529 NTSYSAPI NTSTATUS WINAPI RtlExpandEnvironmentStrings_U(PCWSTR, const UNICODE_STRING*, UNICODE_STRING*, ULONG*);
2530 NTSYSAPI NTSTATUS WINAPI RtlFindActivationContextSectionString(ULONG,const GUID*,ULONG,const UNICODE_STRING*,PVOID);
2531 NTSYSAPI NTSTATUS WINAPI RtlFindActivationContextSectionGuid(ULONG,const GUID*,ULONG,const GUID*,PVOID);
2532 NTSYSAPI NTSTATUS WINAPI RtlFindCharInUnicodeString(int,const UNICODE_STRING*,const UNICODE_STRING*,USHORT*);
2533 NTSYSAPI ULONG WINAPI RtlFindClearBits(PCRTL_BITMAP,ULONG,ULONG);
2534 NTSYSAPI ULONG WINAPI RtlFindClearBitsAndSet(PRTL_BITMAP,ULONG,ULONG);
2535 NTSYSAPI ULONG WINAPI RtlFindClearRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
2536 NTSYSAPI ULONG WINAPI RtlFindLastBackwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
2537 NTSYSAPI ULONG WINAPI RtlFindLastBackwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
2538 NTSYSAPI CCHAR WINAPI RtlFindLeastSignificantBit(ULONGLONG);
2539 NTSYSAPI ULONG WINAPI RtlFindLongestRunSet(PCRTL_BITMAP,PULONG);
2540 NTSYSAPI ULONG WINAPI RtlFindLongestRunClear(PCRTL_BITMAP,PULONG);
2541 NTSYSAPI NTSTATUS WINAPI RtlFindMessage(HMODULE,ULONG,ULONG,ULONG,const MESSAGE_RESOURCE_ENTRY**);
2542 NTSYSAPI CCHAR WINAPI RtlFindMostSignificantBit(ULONGLONG);
2543 NTSYSAPI ULONG WINAPI RtlFindNextForwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
2544 NTSYSAPI ULONG WINAPI RtlFindNextForwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
2545 NTSYSAPI ULONG WINAPI RtlFindSetBits(PCRTL_BITMAP,ULONG,ULONG);
2546 NTSYSAPI ULONG WINAPI RtlFindSetBitsAndClear(PRTL_BITMAP,ULONG,ULONG);
2547 NTSYSAPI ULONG WINAPI RtlFindSetRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
2548 NTSYSAPI BOOLEAN WINAPI RtlFirstFreeAce(PACL,PACE_HEADER *);
2549 NTSYSAPI NTSTATUS WINAPI RtlFormatCurrentUserKeyPath(PUNICODE_STRING);
2550 NTSYSAPI NTSTATUS WINAPI RtlFormatMessage(LPWSTR,UCHAR,BOOLEAN,BOOLEAN,BOOLEAN,__ms_va_list *,LPWSTR,ULONG);
2551 NTSYSAPI void WINAPI RtlFreeAnsiString(PANSI_STRING);
2552 NTSYSAPI BOOLEAN WINAPI RtlFreeHandle(RTL_HANDLE_TABLE *,RTL_HANDLE *);
2553 NTSYSAPI BOOLEAN WINAPI RtlFreeHeap(HANDLE,ULONG,PVOID);
2554 NTSYSAPI void WINAPI RtlFreeOemString(POEM_STRING);
2555 NTSYSAPI DWORD WINAPI RtlFreeSid(PSID);
2556 NTSYSAPI void WINAPI RtlFreeThreadActivationContextStack(void);
2557 NTSYSAPI void WINAPI RtlFreeUnicodeString(PUNICODE_STRING);
2558 NTSYSAPI NTSTATUS WINAPI RtlGetAce(PACL,DWORD,LPVOID *);
2559 NTSYSAPI NTSTATUS WINAPI RtlGetActiveActivationContext(HANDLE*);
2560 NTSYSAPI NTSTATUS WINAPI RtlGetCompressionWorkSpaceSize(USHORT,PULONG,PULONG);
2561 NTSYSAPI NTSTATUS WINAPI RtlGetControlSecurityDescriptor(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL,LPDWORD);
2562 NTSYSAPI NTSTATUS WINAPI RtlGetCurrentDirectory_U(ULONG, LPWSTR);
2563 NTSYSAPI PEB * WINAPI RtlGetCurrentPeb(void);
2564 NTSYSAPI NTSTATUS WINAPI RtlGetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
2565 NTSYSAPI ULONG WINAPI RtlGetFullPathName_U(PCWSTR,ULONG,PWSTR,PWSTR*);
2566 NTSYSAPI NTSTATUS WINAPI RtlGetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
2567 NTSYSAPI NTSTATUS WINAPI RtlGetLastNtStatus(void);
2568 NTSYSAPI DWORD WINAPI RtlGetLastWin32Error(void);
2569 NTSYSAPI DWORD WINAPI RtlGetLongestNtPathLength(void);
2570 NTSYSAPI ULONG WINAPI RtlGetNtGlobalFlags(void);
2571 NTSYSAPI BOOLEAN WINAPI RtlGetNtProductType(LPDWORD);
2572 NTSYSAPI NTSTATUS WINAPI RtlGetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
2573 NTSYSAPI ULONG WINAPI RtlGetProcessHeaps(ULONG,HANDLE*);
2574 NTSYSAPI DWORD WINAPI RtlGetThreadErrorMode(void);
2575 NTSYSAPI NTSTATUS WINAPI RtlGetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
2576 NTSYSAPI NTSTATUS WINAPI RtlGetVersion(RTL_OSVERSIONINFOEXW*);
2577 NTSYSAPI NTSTATUS WINAPI RtlGUIDFromString(PUNICODE_STRING,GUID*);
2578 NTSYSAPI PSID_IDENTIFIER_AUTHORITY WINAPI RtlIdentifierAuthoritySid(PSID);
2579 NTSYSAPI PVOID WINAPI RtlImageDirectoryEntryToData(HMODULE,BOOL,WORD,ULONG *);
2580 NTSYSAPI PIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE);
2581 NTSYSAPI PIMAGE_SECTION_HEADER WINAPI RtlImageRvaToSection(const IMAGE_NT_HEADERS *,HMODULE,DWORD);
2582 NTSYSAPI PVOID WINAPI RtlImageRvaToVa(const IMAGE_NT_HEADERS *,HMODULE,DWORD,IMAGE_SECTION_HEADER **);
2583 NTSYSAPI NTSTATUS WINAPI RtlImpersonateSelf(SECURITY_IMPERSONATION_LEVEL);
2584 NTSYSAPI void WINAPI RtlInitString(PSTRING,PCSZ);
2585 NTSYSAPI void WINAPI RtlInitAnsiString(PANSI_STRING,PCSZ);
2586 NTSYSAPI NTSTATUS WINAPI RtlInitAnsiStringEx(PANSI_STRING,PCSZ);
2587 NTSYSAPI void WINAPI RtlInitUnicodeString(PUNICODE_STRING,PCWSTR);
2588 NTSYSAPI NTSTATUS WINAPI RtlInitUnicodeStringEx(PUNICODE_STRING,PCWSTR);
2589 NTSYSAPI void WINAPI RtlInitializeBitMap(PRTL_BITMAP,PULONG,ULONG);
2590 NTSYSAPI void WINAPI RtlInitializeConditionVariable(RTL_CONDITION_VARIABLE *);
2591 NTSYSAPI NTSTATUS WINAPI RtlInitializeCriticalSection(RTL_CRITICAL_SECTION *);
2592 NTSYSAPI NTSTATUS WINAPI RtlInitializeCriticalSectionAndSpinCount(RTL_CRITICAL_SECTION *,ULONG);
2593 NTSYSAPI NTSTATUS WINAPI RtlInitializeCriticalSectionEx(RTL_CRITICAL_SECTION *,ULONG,ULONG);
2594 NTSYSAPI void WINAPI RtlInitializeHandleTable(ULONG,ULONG,RTL_HANDLE_TABLE *);
2595 NTSYSAPI void WINAPI RtlInitializeResource(LPRTL_RWLOCK);
2596 NTSYSAPI void WINAPI RtlInitializeSRWLock(RTL_SRWLOCK*);
2597 NTSYSAPI BOOL WINAPI RtlInitializeSid(PSID,PSID_IDENTIFIER_AUTHORITY,BYTE);
2598 NTSYSAPI NTSTATUS WINAPI RtlInt64ToUnicodeString(ULONGLONG,ULONG,UNICODE_STRING *);
2599 NTSYSAPI NTSTATUS WINAPI RtlIntegerToChar(ULONG,ULONG,ULONG,PCHAR);
2600 NTSYSAPI NTSTATUS WINAPI RtlIntegerToUnicodeString(ULONG,ULONG,UNICODE_STRING *);
2601 NTSYSAPI BOOLEAN WINAPI RtlIsActivationContextActive(HANDLE);
2602 NTSYSAPI BOOL WINAPI RtlIsCriticalSectionLocked(RTL_CRITICAL_SECTION *);
2603 NTSYSAPI BOOL WINAPI RtlIsCriticalSectionLockedByThread(RTL_CRITICAL_SECTION *);
2604 NTSYSAPI ULONG WINAPI RtlIsDosDeviceName_U(PCWSTR);
2605 NTSYSAPI BOOLEAN WINAPI RtlIsNameLegalDOS8Dot3(const UNICODE_STRING*,POEM_STRING,PBOOLEAN);
2606 NTSYSAPI BOOLEAN WINAPI RtlIsTextUnicode(LPCVOID,INT,INT *);
2607 NTSYSAPI BOOLEAN WINAPI RtlIsValidHandle(const RTL_HANDLE_TABLE *, const RTL_HANDLE *);
2608 NTSYSAPI BOOLEAN WINAPI RtlIsValidIndexHandle(const RTL_HANDLE_TABLE *, ULONG Index, RTL_HANDLE **);
2609 NTSYSAPI NTSTATUS WINAPI RtlLeaveCriticalSection(RTL_CRITICAL_SECTION *);
2610 NTSYSAPI DWORD WINAPI RtlLengthRequiredSid(DWORD);
2611 NTSYSAPI ULONG WINAPI RtlLengthSecurityDescriptor(PSECURITY_DESCRIPTOR);
2612 NTSYSAPI DWORD WINAPI RtlLengthSid(PSID);
2613 NTSYSAPI NTSTATUS WINAPI RtlLocalTimeToSystemTime(const LARGE_INTEGER*,PLARGE_INTEGER);
2614 NTSYSAPI BOOLEAN WINAPI RtlLockHeap(HANDLE);
2615 NTSYSAPI NTSTATUS WINAPI RtlLookupAtomInAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*);
2616 NTSYSAPI NTSTATUS WINAPI RtlMakeSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,LPDWORD);
2617 NTSYSAPI void WINAPI RtlMapGenericMask(PACCESS_MASK,const GENERIC_MAPPING*);
2618 NTSYSAPI NTSTATUS WINAPI RtlMultiByteToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
2619 NTSYSAPI NTSTATUS WINAPI RtlMultiByteToUnicodeSize(DWORD*,LPCSTR,UINT);
2620 NTSYSAPI NTSTATUS WINAPI RtlNewSecurityObject(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,BOOLEAN,HANDLE,PGENERIC_MAPPING);
2621 NTSYSAPI PRTL_USER_PROCESS_PARAMETERS WINAPI RtlNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
2622 NTSYSAPI ULONG WINAPI RtlNtStatusToDosError(NTSTATUS);
2623 NTSYSAPI ULONG WINAPI RtlNtStatusToDosErrorNoTeb(NTSTATUS);
2624 NTSYSAPI ULONG WINAPI RtlNumberOfSetBits(PCRTL_BITMAP);
2625 NTSYSAPI ULONG WINAPI RtlNumberOfClearBits(PCRTL_BITMAP);
2626 NTSYSAPI UINT WINAPI RtlOemStringToUnicodeSize(const STRING*);
2627 NTSYSAPI NTSTATUS WINAPI RtlOemStringToUnicodeString(UNICODE_STRING*,const STRING*,BOOLEAN);
2628 NTSYSAPI NTSTATUS WINAPI RtlOemToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
2629 NTSYSAPI NTSTATUS WINAPI RtlOpenCurrentUser(ACCESS_MASK,PHANDLE);
2630 NTSYSAPI PVOID WINAPI RtlPcToFileHeader(PVOID,PVOID*);
2631 NTSYSAPI NTSTATUS WINAPI RtlPinAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
2632 NTSYSAPI BOOLEAN WINAPI RtlPrefixString(const STRING*,const STRING*,BOOLEAN);
2633 NTSYSAPI BOOLEAN WINAPI RtlPrefixUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
2634 NTSYSAPI NTSTATUS WINAPI RtlQueryAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM,ULONG*,ULONG*,WCHAR*,ULONG*);
2635 NTSYSAPI NTSTATUS WINAPI RtlQueryDynamicTimeZoneInformation(RTL_DYNAMIC_TIME_ZONE_INFORMATION*);
2636 NTSYSAPI NTSTATUS WINAPI RtlQueryEnvironmentVariable_U(PWSTR,PUNICODE_STRING,PUNICODE_STRING);
2637 NTSYSAPI NTSTATUS WINAPI RtlQueryHeapInformation(HANDLE,HEAP_INFORMATION_CLASS,PVOID,SIZE_T,PSIZE_T);
2638 NTSYSAPI NTSTATUS WINAPI RtlQueryInformationAcl(PACL,LPVOID,DWORD,ACL_INFORMATION_CLASS);
2639 NTSYSAPI NTSTATUS WINAPI RtlQueryInformationActivationContext(ULONG,HANDLE,PVOID,ULONG,PVOID,SIZE_T,SIZE_T*);
2640 NTSYSAPI NTSTATUS WINAPI RtlQueryProcessDebugInformation(ULONG,ULONG,PDEBUG_BUFFER);
2641 NTSYSAPI NTSTATUS WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID);
2642 NTSYSAPI NTSTATUS WINAPI RtlQueryTimeZoneInformation(RTL_TIME_ZONE_INFORMATION*);
2643 NTSYSAPI NTSTATUS WINAPI RtlQueryUnbiasedInterruptTime(ULONGLONG*);
2644 NTSYSAPI NTSTATUS WINAPI RtlQueueWorkItem(PRTL_WORK_ITEM_ROUTINE,PVOID,ULONG);
2645 NTSYSAPI void WINAPI RtlRaiseException(PEXCEPTION_RECORD);
2646 NTSYSAPI void WINAPI RtlRaiseStatus(NTSTATUS);
2647 NTSYSAPI ULONG WINAPI RtlRandom(PULONG);
2648 NTSYSAPI PVOID WINAPI RtlReAllocateHeap(HANDLE,ULONG,PVOID,SIZE_T);
2649 NTSYSAPI NTSTATUS WINAPI RtlRegisterWait(PHANDLE,HANDLE,RTL_WAITORTIMERCALLBACKFUNC,PVOID,ULONG,ULONG);
2650 NTSYSAPI void WINAPI RtlReleaseActivationContext(HANDLE);
2651 NTSYSAPI void WINAPI RtlReleasePebLock(void);
2652 NTSYSAPI void WINAPI RtlReleaseResource(LPRTL_RWLOCK);
2653 NTSYSAPI void WINAPI RtlReleaseSRWLockExclusive(RTL_SRWLOCK*);
2654 NTSYSAPI void WINAPI RtlReleaseSRWLockShared(RTL_SRWLOCK*);
2655 NTSYSAPI ULONG WINAPI RtlRemoveVectoredExceptionHandler(PVOID);
2656 NTSYSAPI void WINAPI RtlRestoreLastWin32Error(DWORD);
2657 NTSYSAPI void WINAPI RtlSecondsSince1970ToTime(DWORD,LARGE_INTEGER *);
2658 NTSYSAPI void WINAPI RtlSecondsSince1980ToTime(DWORD,LARGE_INTEGER *);
2659 NTSYSAPI NTSTATUS WINAPI RtlSelfRelativeToAbsoluteSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PDWORD,PACL,PDWORD,PACL,PDWORD,PSID,PDWORD,PSID,PDWORD);
2660 NTSYSAPI void WINAPI RtlSetAllBits(PRTL_BITMAP);
2661 NTSYSAPI void WINAPI RtlSetBits(PRTL_BITMAP,ULONG,ULONG);
2662 NTSYSAPI ULONG WINAPI RtlSetCriticalSectionSpinCount(RTL_CRITICAL_SECTION*,ULONG);
2663 NTSYSAPI NTSTATUS WINAPI RtlSetControlSecurityDescriptor(PSECURITY_DESCRIPTOR,SECURITY_DESCRIPTOR_CONTROL,SECURITY_DESCRIPTOR_CONTROL);
2664 NTSYSAPI NTSTATUS WINAPI RtlSetCurrentDirectory_U(const UNICODE_STRING*);
2665 NTSYSAPI void WINAPI RtlSetCurrentEnvironment(PWSTR, PWSTR*);
2666 NTSYSAPI NTSTATUS WINAPI RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
2667 NTSYSAPI NTSTATUS WINAPI RtlSetEnvironmentVariable(PWSTR*,PUNICODE_STRING,PUNICODE_STRING);
2668 NTSYSAPI NTSTATUS WINAPI RtlSetHeapInformation(HANDLE,HEAP_INFORMATION_CLASS,PVOID,SIZE_T);
2669 NTSYSAPI NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
2670 NTSYSAPI NTSTATUS WINAPI RtlSetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
2671 NTSYSAPI NTSTATUS WINAPI RtlSetIoCompletionCallback(HANDLE,PRTL_OVERLAPPED_COMPLETION_ROUTINE,ULONG);
2672 NTSYSAPI void WINAPI RtlSetLastWin32Error(DWORD);
2673 NTSYSAPI void WINAPI RtlSetLastWin32ErrorAndNtStatusFromNtStatus(NTSTATUS);
2674 NTSYSAPI NTSTATUS WINAPI RtlSetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
2675 NTSYSAPI NTSTATUS WINAPI RtlSetThreadErrorMode(DWORD,LPDWORD);
2676 NTSYSAPI NTSTATUS WINAPI RtlSetTimeZoneInformation(const RTL_TIME_ZONE_INFORMATION*);
2677 NTSYSAPI SIZE_T WINAPI RtlSizeHeap(HANDLE,ULONG,const void*);
2678 NTSYSAPI NTSTATUS WINAPI RtlSleepConditionVariableCS(RTL_CONDITION_VARIABLE*,RTL_CRITICAL_SECTION*,const LARGE_INTEGER*);
2679 NTSYSAPI NTSTATUS WINAPI RtlSleepConditionVariableSRW(RTL_CONDITION_VARIABLE*,RTL_SRWLOCK*,const LARGE_INTEGER*,ULONG);
2680 NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID,PUNICODE_STRING);
2681 NTSYSAPI LPDWORD WINAPI RtlSubAuthoritySid(PSID,DWORD);
2682 NTSYSAPI LPBYTE WINAPI RtlSubAuthorityCountSid(PSID);
2683 NTSYSAPI NTSTATUS WINAPI RtlSystemTimeToLocalTime(const LARGE_INTEGER*,PLARGE_INTEGER);
2684 NTSYSAPI void WINAPI RtlTimeToTimeFields(const LARGE_INTEGER*,PTIME_FIELDS);
2685 NTSYSAPI BOOLEAN WINAPI RtlTimeFieldsToTime(PTIME_FIELDS,PLARGE_INTEGER);
2686 NTSYSAPI void WINAPI RtlTimeToElapsedTimeFields(const LARGE_INTEGER *,PTIME_FIELDS);
2687 NTSYSAPI BOOLEAN WINAPI RtlTimeToSecondsSince1970(const LARGE_INTEGER *,LPDWORD);
2688 NTSYSAPI BOOLEAN WINAPI RtlTimeToSecondsSince1980(const LARGE_INTEGER *,LPDWORD);
2689 NTSYSAPI BOOLEAN WINAPI RtlTryAcquireSRWLockExclusive(RTL_SRWLOCK *);
2690 NTSYSAPI BOOLEAN WINAPI RtlTryAcquireSRWLockShared(RTL_SRWLOCK *);
2691 NTSYSAPI BOOL WINAPI RtlTryEnterCriticalSection(RTL_CRITICAL_SECTION *);
2692 #ifdef __REACTOS__
2693 ULONGLONG __fastcall RtlUlonglongByteSwap(ULONGLONG);
2694 #define RtlUlonglongByteSwap(_x) _byteswap_uint64((_x))
2695 #else
2696 NTSYSAPI ULONGLONG __cdecl RtlUlonglongByteSwap(ULONGLONG);
2697 #endif /* __REACTOS__ */
2698 NTSYSAPI DWORD WINAPI RtlUnicodeStringToAnsiSize(const UNICODE_STRING*);
2699 NTSYSAPI NTSTATUS WINAPI RtlUnicodeStringToAnsiString(PANSI_STRING,PCUNICODE_STRING,BOOLEAN);
2700 NTSYSAPI NTSTATUS WINAPI RtlUnicodeStringToInteger(const UNICODE_STRING *,ULONG,ULONG *);
2701 NTSYSAPI DWORD WINAPI RtlUnicodeStringToOemSize(const UNICODE_STRING*);
2702 NTSYSAPI NTSTATUS WINAPI RtlUnicodeStringToOemString(POEM_STRING,PCUNICODE_STRING,BOOLEAN);
2703 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2704 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToMultiByteSize(PULONG,PCWSTR,ULONG);
2705 NTSYSAPI NTSTATUS WINAPI RtlUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2706 NTSYSAPI ULONG WINAPI RtlUniform(PULONG);
2707 NTSYSAPI BOOLEAN WINAPI RtlUnlockHeap(HANDLE);
2708 NTSYSAPI void WINAPI RtlUnwind(PVOID,PVOID,PEXCEPTION_RECORD,PVOID);
2709 #ifdef __x86_64__
2710 NTSYSAPI void WINAPI RtlUnwindEx(PVOID,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT,PUNWIND_HISTORY_TABLE);
2711 #elif defined(__ia64__)
2712 NTSYSAPI void WINAPI RtlUnwind2(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT);
2713 NTSYSAPI void WINAPI RtlUnwindEx(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT,PUNWIND_HISTORY_TABLE);
2714 #endif
2715 NTSYSAPI WCHAR WINAPI RtlUpcaseUnicodeChar(WCHAR);
2716 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING *,BOOLEAN);
2717 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToAnsiString(STRING*,const UNICODE_STRING*,BOOLEAN);
2718 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToCountedOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
2719 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
2720 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2721 NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2722 NTSYSAPI NTSTATUS WINAPI RtlUpdateTimer(HANDLE, HANDLE, DWORD, DWORD);
2723 NTSYSAPI CHAR WINAPI RtlUpperChar(CHAR);
2724 NTSYSAPI void WINAPI RtlUpperString(STRING *,const STRING *);
2725 NTSYSAPI NTSTATUS WINAPI RtlValidSecurityDescriptor(PSECURITY_DESCRIPTOR);
2726 NTSYSAPI BOOLEAN WINAPI RtlValidRelativeSecurityDescriptor(PSECURITY_DESCRIPTOR,ULONG,SECURITY_INFORMATION);
2727 NTSYSAPI BOOLEAN WINAPI RtlValidAcl(PACL);
2728 NTSYSAPI BOOLEAN WINAPI RtlValidSid(PSID);
2729 NTSYSAPI BOOLEAN WINAPI RtlValidateHeap(HANDLE,ULONG,LPCVOID);
2730 NTSYSAPI NTSTATUS WINAPI RtlVerifyVersionInfo(const RTL_OSVERSIONINFOEXW*,DWORD,DWORDLONG);
2731 NTSYSAPI void WINAPI RtlWakeAllConditionVariable(RTL_CONDITION_VARIABLE *);
2732 NTSYSAPI void WINAPI RtlWakeConditionVariable(RTL_CONDITION_VARIABLE *);
2733 NTSYSAPI NTSTATUS WINAPI RtlWalkHeap(HANDLE,PVOID);
2734 NTSYSAPI NTSTATUS WINAPI RtlWow64EnableFsRedirection(BOOLEAN);
2735 NTSYSAPI NTSTATUS WINAPI RtlWow64EnableFsRedirectionEx(ULONG,ULONG*);
2736 NTSYSAPI NTSTATUS WINAPI RtlWriteRegistryValue(ULONG,PCWSTR,PCWSTR,ULONG,PVOID,ULONG);
2737 NTSYSAPI NTSTATUS WINAPI RtlZombifyActivationContext(HANDLE);
2738 NTSYSAPI NTSTATUS WINAPI RtlpNtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
2739 NTSYSAPI NTSTATUS WINAPI RtlpNtEnumerateSubKey(HANDLE,UNICODE_STRING *, ULONG);
2740 NTSYSAPI NTSTATUS WINAPI RtlpWaitForCriticalSection(RTL_CRITICAL_SECTION *);
2741 NTSYSAPI NTSTATUS WINAPI RtlpUnWaitCriticalSection(RTL_CRITICAL_SECTION *);
2742 NTSYSAPI NTSTATUS WINAPI vDbgPrintEx(ULONG,ULONG,LPCSTR,__ms_va_list);
2743 NTSYSAPI NTSTATUS WINAPI vDbgPrintExWithPrefix(LPCSTR,ULONG,ULONG,LPCSTR,__ms_va_list);
2744
2745 /* 32-bit only functions */
2746
2747 #ifndef _WIN64
2748 NTSYSAPI LONGLONG WINAPI RtlConvertLongToLargeInteger(LONG);
2749 NTSYSAPI ULONGLONG WINAPI RtlConvertUlongToLargeInteger(ULONG);
2750 NTSYSAPI LONGLONG WINAPI RtlEnlargedIntegerMultiply(INT,INT);
2751 NTSYSAPI ULONGLONG WINAPI RtlEnlargedUnsignedMultiply(UINT,UINT);
2752 NTSYSAPI UINT WINAPI RtlEnlargedUnsignedDivide(ULONGLONG,UINT,UINT *);
2753 NTSYSAPI LONGLONG WINAPI RtlExtendedMagicDivide(LONGLONG,LONGLONG,INT);
2754 NTSYSAPI LONGLONG WINAPI RtlExtendedIntegerMultiply(LONGLONG,INT);
2755 NTSYSAPI LONGLONG WINAPI RtlExtendedLargeIntegerDivide(LONGLONG,INT,INT *);
2756 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerAdd(LONGLONG,LONGLONG);
2757 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerArithmeticShift(LONGLONG,INT);
2758 NTSYSAPI ULONGLONG WINAPI RtlLargeIntegerDivide( ULONGLONG,ULONGLONG,ULONGLONG *);
2759 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerNegate(LONGLONG);
2760 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerShiftLeft(LONGLONG,INT);
2761 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerShiftRight(LONGLONG,INT);
2762 NTSYSAPI LONGLONG WINAPI RtlLargeIntegerSubtract(LONGLONG,LONGLONG);
2763 NTSYSAPI NTSTATUS WINAPI RtlLargeIntegerToChar(const ULONGLONG *,ULONG,ULONG,PCHAR);
2764 #endif
2765
2766 /* Wine internal functions */
2767
2768 NTSYSAPI NTSTATUS CDECL wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRING *unix_name_ret,
2769 UINT disposition, BOOLEAN check_case );
2770 NTSYSAPI NTSTATUS CDECL wine_unix_to_nt_file_name( const ANSI_STRING *name, UNICODE_STRING *nt );
2771
2772 NTSYSAPI SIZE_T CDECL wine_uninterrupted_read_memory( const void *addr, void *buffer, SIZE_T size );
2773 NTSYSAPI SIZE_T CDECL wine_uninterrupted_write_memory( void *addr, const void *buffer, SIZE_T size );
2774
2775
2776 /***********************************************************************
2777 * Inline functions
2778 */
2779
2780 #define InitializeObjectAttributes(p,n,a,r,s) \
2781 do { \
2782 (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
2783 (p)->RootDirectory = r; \
2784 (p)->Attributes = a; \
2785 (p)->ObjectName = n; \
2786 (p)->SecurityDescriptor = s; \
2787 (p)->SecurityQualityOfService = NULL; \
2788 } while (0)
2789
2790 #define NtCurrentProcess() ((HANDLE)-1)
2791
2792 #ifndef RtlFillMemory // REACTOS
2793 #define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length))
2794 #endif // REACTOS
2795 #ifndef RtlMoveMemory // REACTOS
2796 #define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length))
2797 #endif // REACTOS
2798 #define RtlStoreUlong(p,v) do { ULONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
2799 #define RtlStoreUlonglong(p,v) do { ULONGLONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
2800 #define RtlRetrieveUlong(p,s) memcpy((p), (s), sizeof(ULONG))
2801 #define RtlRetrieveUlonglong(p,s) memcpy((p), (s), sizeof(ULONGLONG))
2802 #ifndef RtlZeroMemory // REACTOS
2803 #define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))
2804 #endif // REACTOS
2805
2806 static inline BOOLEAN RtlCheckBit(PCRTL_BITMAP lpBits, ULONG ulBit)
2807 {
2808 if (lpBits && ulBit < lpBits->SizeOfBitMap &&
2809 lpBits->Buffer[ulBit >> 5] & (1 << (ulBit & 31)))
2810 return TRUE;
2811 return FALSE;
2812 }
2813
2814 /* These are implemented as __fastcall, so we can't let Winelib apps link with them */
2815 static inline USHORT RtlUshortByteSwap(USHORT s)
2816 {
2817 return (s >> 8) | (s << 8);
2818 }
2819 static inline ULONG RtlUlongByteSwap(ULONG i)
2820 {
2821 #if defined(__i386__) && defined(__GNUC__)
2822 ULONG ret;
2823 __asm__("bswap %0" : "=r" (ret) : "0" (i) );
2824 return ret;
2825 #else
2826 return ((ULONG)RtlUshortByteSwap((USHORT)i) << 16) | RtlUshortByteSwap((USHORT)(i >> 16));
2827 #endif
2828 }
2829
2830 /* list manipulation macros */
2831 #define InitializeListHead(le) (void)((le)->Flink = (le)->Blink = (le))
2832 #define InsertHeadList(le,e) do { PLIST_ENTRY f = (le)->Flink; (e)->Flink = f; (e)->Blink = (le); f->Blink = (e); (le)->Flink = (e); } while (0)
2833 #define InsertTailList(le,e) do { PLIST_ENTRY b = (le)->Blink; (e)->Flink = (le); (e)->Blink = b; b->Flink = (e); (le)->Blink = (e); } while (0)
2834 #define IsListEmpty(le) ((le)->Flink == (le))
2835 #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)
2836 static inline PLIST_ENTRY RemoveHeadList(PLIST_ENTRY le)
2837 {
2838 PLIST_ENTRY f, b, e;
2839
2840 e = le->Flink;
2841 f = le->Flink->Flink;
2842 b = le->Flink->Blink;
2843 f->Blink = b;
2844 b->Flink = f;
2845
2846 if (e != le) e->Flink = e->Blink = NULL;
2847 return e;
2848 }
2849 static inline PLIST_ENTRY RemoveTailList(PLIST_ENTRY le)
2850 {
2851 PLIST_ENTRY f, b, e;
2852
2853 e = le->Blink;
2854 f = le->Blink->Flink;
2855 b = le->Blink->Blink;
2856 f->Blink = b;
2857 b->Flink = f;
2858
2859 if (e != le) e->Flink = e->Blink = NULL;
2860 return e;
2861 }
2862
2863
2864 #ifdef __WINESRC__
2865
2866 /* FIXME: private structure for vm86 mode, stored in teb->GdiTebBatch */
2867 typedef struct
2868 {
2869 DWORD dpmi_vif;
2870 DWORD vm86_pending;
2871 } WINE_VM86_TEB_INFO;
2872
2873 static inline WINE_VM86_TEB_INFO *get_vm86_teb_info(void)
2874 {
2875 return (WINE_VM86_TEB_INFO *)&NtCurrentTeb()->GdiTebBatch;
2876 }
2877
2878 /* The thread information for 16-bit threads */
2879 /* NtCurrentTeb()->SubSystemTib points to this */
2880 typedef struct
2881 {
2882 void *unknown; /* 00 unknown */
2883 UNICODE_STRING *exe_name; /* 04 exe module name */
2884
2885 /* the following fields do not exist under Windows */
2886 UNICODE_STRING exe_str; /* exe name string pointed to by exe_name */
2887 CURDIR curdir; /* current directory */
2888 WCHAR curdir_buffer[MAX_PATH];
2889 } WIN16_SUBSYSTEM_TIB;
2890
2891 #endif /* __WINESRC__ */
2892
2893 #ifdef __cplusplus
2894 } /* extern "C" */
2895 #endif /* defined(__cplusplus) */
2896
2897 #endif /* __WINE_WINTERNL_H */