VirtualBox

source: vbox/trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/winternl.h@ 21731

最後變更 在這個檔案從21731是 21731,由 vboxsync 提交於 16 年 前

crOpenGL: update to wine 1.1.26

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

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette