VirtualBox

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

Last change on this file since 19678 was 19678, checked in by vboxsync, 16 years ago

opengl: update wine to 1.1.21, add d3d9.dll to build list

  • Property svn:eol-style set to native
File size: 113.9 KB
Line 
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#endif /* __x86_64 */
1007
1008
1009/***********************************************************************
1010 * Types and data structures
1011 */
1012
1013/* This is used by NtQuerySystemInformation */
1014typedef struct _SYSTEM_THREAD_INFORMATION
1015{ /* win32/win64 */
1016 LARGE_INTEGER KernelTime; /* 00/00 */
1017 LARGE_INTEGER UserTime; /* 08/08 */
1018 LARGE_INTEGER CreateTime; /* 10/10 */
1019 DWORD dwTickCount; /* 18/18 */
1020 LPVOID StartAddress; /* 1c/20 */
1021 CLIENT_ID ClientId; /* 20/28 */
1022 DWORD dwCurrentPriority; /* 28/38 */
1023 DWORD dwBasePriority; /* 2c/3c */
1024 DWORD dwContextSwitches; /* 30/40 */
1025 DWORD dwThreadState; /* 34/44 */
1026 DWORD dwWaitReason; /* 38/48 */
1027 DWORD dwUnknown; /* 3c/4c */
1028} SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION;
1029
1030typedef struct _IO_STATUS_BLOCK {
1031 union {
1032 NTSTATUS Status;
1033 PVOID Pointer;
1034 } DUMMYUNIONNAME;
1035
1036 ULONG_PTR Information;
1037} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
1038
1039typedef void (WINAPI * PIO_APC_ROUTINE)(PVOID,PIO_STATUS_BLOCK,ULONG);
1040
1041typedef struct _KEY_BASIC_INFORMATION {
1042 LARGE_INTEGER LastWriteTime;
1043 ULONG TitleIndex;
1044 ULONG NameLength;
1045 WCHAR Name[1];
1046} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
1047
1048typedef struct _KEY_NODE_INFORMATION
1049{
1050 LARGE_INTEGER LastWriteTime;
1051 ULONG TitleIndex;
1052 ULONG ClassOffset;
1053 ULONG ClassLength;
1054 ULONG NameLength;
1055 WCHAR Name[1];
1056 /* Class[1]; */
1057} KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
1058
1059typedef struct _KEY_FULL_INFORMATION
1060{
1061 LARGE_INTEGER LastWriteTime;
1062 ULONG TitleIndex;
1063 ULONG ClassOffset;
1064 ULONG ClassLength;
1065 ULONG SubKeys;
1066 ULONG MaxNameLen;
1067 ULONG MaxClassLen;
1068 ULONG Values;
1069 ULONG MaxValueNameLen;
1070 ULONG MaxValueDataLen;
1071 WCHAR Class[1];
1072} KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
1073
1074typedef struct _KEY_VALUE_ENTRY
1075{
1076 PUNICODE_STRING ValueName;
1077 ULONG DataLength;
1078 ULONG DataOffset;
1079 ULONG Type;
1080} KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
1081
1082typedef struct _KEY_VALUE_BASIC_INFORMATION {
1083 ULONG TitleIndex;
1084 ULONG Type;
1085 ULONG NameLength;
1086 WCHAR Name[1];
1087} KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
1088
1089typedef struct _KEY_VALUE_FULL_INFORMATION {
1090 ULONG TitleIndex;
1091 ULONG Type;
1092 ULONG DataOffset;
1093 ULONG DataLength;
1094 ULONG NameLength;
1095 WCHAR Name[1];
1096} KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
1097
1098typedef struct _KEY_VALUE_PARTIAL_INFORMATION {
1099 ULONG TitleIndex;
1100 ULONG Type;
1101 ULONG DataLength;
1102 UCHAR Data[1];
1103} KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
1104
1105#ifndef __OBJECT_ATTRIBUTES_DEFINED__
1106#define __OBJECT_ATTRIBUTES_DEFINED__
1107typedef struct _OBJECT_ATTRIBUTES {
1108 ULONG Length;
1109 HANDLE RootDirectory;
1110 PUNICODE_STRING ObjectName;
1111 ULONG Attributes;
1112 PVOID SecurityDescriptor; /* type SECURITY_DESCRIPTOR */
1113 PVOID SecurityQualityOfService; /* type SECURITY_QUALITY_OF_SERVICE */
1114} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
1115#endif
1116
1117typedef struct _OBJECT_DATA_INFORMATION {
1118 BOOLEAN InheritHandle;
1119 BOOLEAN ProtectFromClose;
1120} OBJECT_DATA_INFORMATION, *POBJECT_DATA_INFORMATION;
1121
1122typedef struct _OBJECT_BASIC_INFORMATION {
1123 ULONG Attributes;
1124 ACCESS_MASK GrantedAccess;
1125 ULONG HandleCount;
1126 ULONG PointerCount;
1127 ULONG PagedPoolUsage;
1128 ULONG NonPagedPoolUsage;
1129 ULONG Reserved[3];
1130 ULONG NameInformationLength;
1131 ULONG TypeInformationLength;
1132 ULONG SecurityDescriptorLength;
1133 LARGE_INTEGER CreateTime;
1134} OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION;
1135
1136typedef struct _OBJECT_NAME_INFORMATION {
1137 UNICODE_STRING Name;
1138} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
1139
1140typedef struct _PROCESS_BASIC_INFORMATION {
1141#ifdef __WINESRC__
1142 DWORD_PTR ExitStatus;
1143 PPEB PebBaseAddress;
1144 DWORD_PTR AffinityMask;
1145 DWORD_PTR BasePriority;
1146 ULONG_PTR UniqueProcessId;
1147 ULONG_PTR InheritedFromUniqueProcessId;
1148#else
1149 PVOID Reserved1;
1150 PPEB PebBaseAddress;
1151 PVOID Reserved2[2];
1152 ULONG_PTR UniqueProcessId;
1153 PVOID Reserved3;
1154#endif
1155} PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
1156
1157#define PROCESS_PRIOCLASS_IDLE 1
1158#define PROCESS_PRIOCLASS_NORMAL 2
1159#define PROCESS_PRIOCLASS_HIGH 3
1160#define PROCESS_PRIOCLASS_REALTIME 4
1161#define PROCESS_PRIOCLASS_BELOW_NORMAL 5
1162#define PROCESS_PRIOCLASS_ABOVE_NORMAL 6
1163
1164typedef struct _PROCESS_PRIORITY_CLASS {
1165 BOOLEAN Foreground;
1166 UCHAR PriorityClass;
1167} PROCESS_PRIORITY_CLASS, *PPROCESS_PRIORITY_CLASS;
1168
1169typedef struct _RTL_HEAP_DEFINITION {
1170 ULONG Length; /* = sizeof(RTL_HEAP_DEFINITION) */
1171
1172 ULONG Unknown[11];
1173} RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION;
1174
1175typedef struct _RTL_RWLOCK {
1176 RTL_CRITICAL_SECTION rtlCS;
1177
1178 HANDLE hSharedReleaseSemaphore;
1179 UINT uSharedWaiters;
1180
1181 HANDLE hExclusiveReleaseSemaphore;
1182 UINT uExclusiveWaiters;
1183
1184 INT iNumberActive;
1185 HANDLE hOwningThreadId;
1186 DWORD dwTimeoutBoost;
1187 PVOID pDebugInfo;
1188} RTL_RWLOCK, *LPRTL_RWLOCK;
1189
1190/* System Information Class 0x00 */
1191
1192typedef struct _SYSTEM_BASIC_INFORMATION {
1193#ifdef __WINESRC__
1194 DWORD dwUnknown1;
1195 ULONG uKeMaximumIncrement;
1196 ULONG uPageSize;
1197 ULONG uMmNumberOfPhysicalPages;
1198 ULONG uMmLowestPhysicalPage;
1199 ULONG uMmHighestPhysicalPage;
1200 ULONG uAllocationGranularity;
1201 PVOID pLowestUserAddress;
1202 PVOID pMmHighestUserAddress;
1203 ULONG uKeActiveProcessors;
1204 BYTE bKeNumberProcessors;
1205 BYTE bUnknown2;
1206 WORD wUnknown3;
1207#else
1208 BYTE Reserved1[24];
1209 PVOID Reserved2[4];
1210 CCHAR NumberOfProcessors;
1211#endif
1212} SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
1213
1214/* System Information Class 0x01 */
1215
1216typedef struct _SYSTEM_CPU_INFORMATION {
1217 WORD Architecture;
1218 WORD Level;
1219 WORD Revision; /* combination of CPU model and stepping */
1220 WORD Reserved; /* always zero */
1221 DWORD FeatureSet; /* see bit flags below */
1222} SYSTEM_CPU_INFORMATION, *PSYSTEM_CPU_INFORMATION;
1223
1224/* definitions of bits in the Feature set for the x86 processors */
1225#define CPU_FEATURE_VME 0x00000005 /* Virtual 86 Mode Extensions */
1226#define CPU_FEATURE_TSC 0x00000002 /* Time Stamp Counter available */
1227#define CPU_FEATURE_CMOV 0x00000008 /* Conditional Move instruction*/
1228#define CPU_FEATURE_PGE 0x00000014 /* Page table Entry Global bit */
1229#define CPU_FEATURE_PSE 0x00000024 /* Page Size Extension */
1230#define CPU_FEATURE_MTRR 0x00000040 /* Memory Type Range Registers */
1231#define CPU_FEATURE_CX8 0x00000080 /* Compare and eXchange 8 byte instr. */
1232#define CPU_FEATURE_MMX 0x00000100 /* Multi Media eXtensions */
1233#define CPU_FEATURE_X86 0x00000200 /* seems to be always ON, on the '86 */
1234#define CPU_FEATURE_PAT 0x00000400 /* Page Attribute Table */
1235#define CPU_FEATURE_FXSR 0x00000800 /* FXSAVE and FXSTORE instructions */
1236#define CPU_FEATURE_SEP 0x00001000 /* SYSENTER and SYSEXIT instructions */
1237#define CPU_FEATURE_SSE 0x00002000 /* SSE extensions (ext. MMX) */
1238#define CPU_FEATURE_3DNOW 0x00008000 /* 3DNOW instructions available
1239 (FIXME: needs to be confirmed) */
1240#define CPU_FEATURE_SSE2 0x00010000 /* SSE2 extensions (XMMI64) */
1241#define CPU_FEATURE_DS 0x00020000 /* Debug Store */
1242#define CPU_FEATURE_HTT 0x00040000 /* Hyper Threading Technology */
1243
1244/* System Information Class 0x02 */
1245
1246typedef struct _SYSTEM_PERFORMANCE_INFORMATION {
1247 BYTE Reserved1[312];
1248} SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
1249
1250/* System Information Class 0x03 */
1251
1252typedef struct _SYSTEM_TIMEOFDAY_INFORMATION {
1253#ifdef __WINESRC__
1254 LARGE_INTEGER liKeBootTime;
1255 LARGE_INTEGER liKeSystemTime;
1256 LARGE_INTEGER liExpTimeZoneBias;
1257 ULONG uCurrentTimeZoneId;
1258 DWORD dwUnknown1[5];
1259#else
1260 BYTE Reserved1[48];
1261#endif
1262} SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION; /* was SYSTEM_TIME_INFORMATION */
1263
1264/* System Information Class 0x08 */
1265
1266typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION {
1267#ifdef __WINESRC__
1268 LARGE_INTEGER liIdleTime;
1269 LARGE_INTEGER liKernelTime;
1270 LARGE_INTEGER liUserTime;
1271 DWORD dwSpare[5];
1272#else
1273 LARGE_INTEGER IdleTime;
1274 LARGE_INTEGER KernelTime;
1275 LARGE_INTEGER UserTime;
1276 LARGE_INTEGER Reserved1[2];
1277 ULONG Reserved2;
1278#endif
1279} SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
1280
1281/* System Information Class 0x0b */
1282
1283typedef struct _SYSTEM_DRIVER_INFORMATION {
1284 PVOID pvAddress;
1285 DWORD dwUnknown1;
1286 DWORD dwUnknown2;
1287 DWORD dwEntryIndex;
1288 DWORD dwUnknown3;
1289 char szName[MAX_PATH + 1];
1290} SYSTEM_DRIVER_INFORMATION, *PSYSTEM_DRIVER_INFORMATION;
1291
1292/* System Information Class 0x10 */
1293
1294typedef struct _SYSTEM_HANDLE_ENTRY {
1295 ULONG OwnerPid;
1296 BYTE ObjectType;
1297 BYTE HandleFlags;
1298 USHORT HandleValue;
1299 PVOID ObjectPointer;
1300 ULONG AccessMask;
1301} SYSTEM_HANDLE_ENTRY, *PSYSTEM_HANDLE_ENTRY;
1302
1303typedef struct _SYSTEM_HANDLE_INFORMATION {
1304 ULONG Count;
1305 SYSTEM_HANDLE_ENTRY Handle[1];
1306} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
1307
1308/* System Information Class 0x15 */
1309
1310typedef struct _SYSTEM_CACHE_INFORMATION {
1311 ULONG CurrentSize;
1312 ULONG PeakSize;
1313 ULONG PageFaultCount;
1314#ifndef _WIN64
1315 ULONG MinimumWorkingSet;
1316 ULONG MaximumWorkingSet;
1317 ULONG unused[4];
1318#endif
1319} SYSTEM_CACHE_INFORMATION, *PSYSTEM_CACHE_INFORMATION;
1320
1321/* System Information Class 0x17 */
1322
1323typedef struct _SYSTEM_INTERRUPT_INFORMATION {
1324 BYTE Reserved1[24];
1325} SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION;
1326
1327typedef struct _SYSTEM_CONFIGURATION_INFO {
1328 union {
1329 ULONG OemId;
1330 struct {
1331 WORD ProcessorArchitecture;
1332 WORD Reserved;
1333 } tag1;
1334 } tag2;
1335 ULONG PageSize;
1336 PVOID MinimumApplicationAddress;
1337 PVOID MaximumApplicationAddress;
1338 ULONG ActiveProcessorMask;
1339 ULONG NumberOfProcessors;
1340 ULONG ProcessorType;
1341 ULONG AllocationGranularity;
1342 WORD ProcessorLevel;
1343 WORD ProcessorRevision;
1344} SYSTEM_CONFIGURATION_INFO, *PSYSTEM_CONFIGURATION_INFO;
1345
1346typedef struct _SYSTEM_EXCEPTION_INFORMATION {
1347 BYTE Reserved1[16];
1348} SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION;
1349
1350typedef struct _SYSTEM_LOOKASIDE_INFORMATION {
1351 BYTE Reserved1[32];
1352} SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION;
1353
1354typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION {
1355 BOOLEAN DebuggerEnabled;
1356 BOOLEAN DebuggerNotPresent;
1357} SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION;
1358
1359/* System Information Class 0x05 */
1360
1361typedef struct _VM_COUNTERS_ {
1362 SIZE_T PeakVirtualSize;
1363 SIZE_T VirtualSize;
1364 ULONG PageFaultCount;
1365 SIZE_T PeakWorkingSetSize;
1366 SIZE_T WorkingSetSize;
1367 SIZE_T QuotaPeakPagedPoolUsage;
1368 SIZE_T QuotaPagedPoolUsage;
1369 SIZE_T QuotaPeakNonPagedPoolUsage;
1370 SIZE_T QuotaNonPagedPoolUsage;
1371 SIZE_T PagefileUsage;
1372 SIZE_T PeakPagefileUsage;
1373 SIZE_T PrivatePageCount;
1374} VM_COUNTERS, *PVM_COUNTERS;
1375
1376typedef struct _SYSTEM_PROCESS_INFORMATION {
1377#ifdef __WINESRC__ /* win32/win64 */
1378 ULONG NextEntryOffset; /* 00/00 */
1379 DWORD dwThreadCount; /* 04/04 */
1380 DWORD dwUnknown1[6]; /* 08/08 */
1381 LARGE_INTEGER CreationTime; /* 20/20 */
1382 LARGE_INTEGER UserTime; /* 28/28 */
1383 LARGE_INTEGER KernelTime; /* 30/30 */
1384 UNICODE_STRING ProcessName; /* 38/38 */
1385 DWORD dwBasePriority; /* 40/48 */
1386 HANDLE UniqueProcessId; /* 44/50 */
1387 HANDLE ParentProcessId; /* 48/58 */
1388 ULONG HandleCount; /* 4c/60 */
1389 DWORD dwUnknown3; /* 50/64 */
1390 DWORD dwUnknown4; /* 54/68 */
1391 VM_COUNTERS vmCounters; /* 58/70 */
1392 IO_COUNTERS ioCounters; /* 88/d0 */
1393 SYSTEM_THREAD_INFORMATION ti[1]; /* b8/100 */
1394#else
1395 ULONG NextEntryOffset; /* 00/00 */
1396 BYTE Reserved1[52]; /* 04/04 */
1397 PVOID Reserved2[3]; /* 38/38 */
1398 HANDLE UniqueProcessId; /* 44/50 */
1399 PVOID Reserved3; /* 48/58 */
1400 ULONG HandleCount; /* 4c/60 */
1401 BYTE Reserved4[4]; /* 50/64 */
1402 PVOID Reserved5[11]; /* 54/68 */
1403 SIZE_T PeakPagefileUsage; /* 80/c0 */
1404 SIZE_T PrivatePageCount; /* 84/c8 */
1405 LARGE_INTEGER Reserved6[6]; /* 88/d0 */
1406#endif
1407} SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
1408
1409typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION {
1410 ULONG RegistryQuotaAllowed;
1411 ULONG RegistryQuotaUsed;
1412 PVOID Reserved1;
1413} SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION;
1414
1415typedef struct _SYSTEM_TIME_ADJUSTMENT {
1416 ULONG TimeAdjustment;
1417 BOOLEAN TimeAdjustmentDisabled;
1418} SYSTEM_TIME_ADJUSTMENT, *PSYSTEM_TIME_ADJUSTMENT;
1419
1420typedef struct _TIME_FIELDS
1421{ CSHORT Year;
1422 CSHORT Month;
1423 CSHORT Day;
1424 CSHORT Hour;
1425 CSHORT Minute;
1426 CSHORT Second;
1427 CSHORT Milliseconds;
1428 CSHORT Weekday;
1429} TIME_FIELDS, *PTIME_FIELDS;
1430
1431typedef struct _WINSTATIONINFORMATIONW {
1432 BYTE Reserved2[70];
1433 ULONG LogonId;
1434 BYTE Reserved3[1140];
1435} WINSTATIONINFORMATIONW, *PWINSTATIONINFORMATIONW;
1436
1437typedef BOOLEAN (WINAPI * PWINSTATIONQUERYINFORMATIONW)(HANDLE,ULONG,WINSTATIONINFOCLASS,PVOID,ULONG,PULONG);
1438
1439typedef struct _LDR_RESOURCE_INFO
1440{
1441 ULONG_PTR Type;
1442 ULONG_PTR Name;
1443 ULONG Language;
1444} LDR_RESOURCE_INFO, *PLDR_RESOURCE_INFO;
1445
1446
1447/* debug buffer definitions */
1448
1449typedef struct _DEBUG_BUFFER {
1450 HANDLE SectionHandle;
1451 PVOID SectionBase;
1452 PVOID RemoteSectionBase;
1453 ULONG SectionBaseDelta;
1454 HANDLE EventPairHandle;
1455 ULONG Unknown[2];
1456 HANDLE RemoteThreadHandle;
1457 ULONG InfoClassMask;
1458 ULONG SizeOfInfo;
1459 ULONG AllocatedSize;
1460 ULONG SectionSize;
1461 PVOID ModuleInformation;
1462 PVOID BackTraceInformation;
1463 PVOID HeapInformation;
1464 PVOID LockInformation;
1465 PVOID Reserved[8];
1466} DEBUG_BUFFER, *PDEBUG_BUFFER;
1467
1468#define PDI_MODULES 0x01
1469#define PDI_BACKTRACE 0x02
1470#define PDI_HEAPS 0x04
1471#define PDI_HEAP_TAGS 0x08
1472#define PDI_HEAP_BLOCKS 0x10
1473#define PDI_LOCKS 0x20
1474
1475typedef struct _DEBUG_MODULE_INFORMATION {
1476 ULONG Reserved[2];
1477 ULONG Base;
1478 ULONG Size;
1479 ULONG Flags;
1480 USHORT Index;
1481 USHORT Unknown;
1482 USHORT LoadCount;
1483 USHORT ModuleNameOffset;
1484 CHAR ImageName[256];
1485} DEBUG_MODULE_INFORMATION, *PDEBUG_MODULE_INFORMATION;
1486
1487typedef struct _DEBUG_HEAP_INFORMATION {
1488 ULONG Base;
1489 ULONG Flags;
1490 USHORT Granularity;
1491 USHORT Unknown;
1492 ULONG Allocated;
1493 ULONG Committed;
1494 ULONG TagCount;
1495 ULONG BlockCount;
1496 ULONG Reserved[7];
1497 PVOID Tags;
1498 PVOID Blocks;
1499} DEBUG_HEAP_INFORMATION, *PDEBUG_HEAP_INFORMATION;
1500
1501typedef struct _DEBUG_LOCK_INFORMATION {
1502 PVOID Address;
1503 USHORT Type;
1504 USHORT CreatorBackTraceIndex;
1505 ULONG OwnerThreadId;
1506 ULONG ActiveCount;
1507 ULONG ContentionCount;
1508 ULONG EntryCount;
1509 ULONG RecursionCount;
1510 ULONG NumberOfSharedWaiters;
1511 ULONG NumberOfExclusiveWaiters;
1512} DEBUG_LOCK_INFORMATION, *PDEBUG_LOCK_INFORMATION;
1513
1514typedef struct _PORT_MESSAGE_HEADER {
1515 USHORT DataSize;
1516 USHORT MessageSize;
1517 USHORT MessageType;
1518 USHORT VirtualRangesOffset;
1519 CLIENT_ID ClientId;
1520 ULONG MessageId;
1521 ULONG SectionSize;
1522} PORT_MESSAGE_HEADER, *PPORT_MESSAGE_HEADER, PORT_MESSAGE, *PPORT_MESSAGE;
1523
1524typedef unsigned short RTL_ATOM, *PRTL_ATOM;
1525
1526/* Wine doesn't implement atom table as NT does:
1527 * - in NT, atom tables are user space tables, which ntdll directly accesses
1528 * - on Wine, (even local) atom tables are wineserver objects, hence a HANDLE
1529 */
1530typedef struct atom_table *RTL_ATOM_TABLE, **PRTL_ATOM_TABLE;
1531
1532typedef enum _ATOM_INFORMATION_CLASS {
1533 AtomBasicInformation = 0,
1534 AtomTableInformation = 1,
1535} ATOM_INFORMATION_CLASS;
1536
1537typedef struct _ATOM_BASIC_INFORMATION {
1538 USHORT ReferenceCount;
1539 USHORT Pinned;
1540 USHORT NameLength;
1541 WCHAR Name[1];
1542} ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION;
1543
1544/* FIXME: names probably not correct */
1545typedef struct _RTL_HANDLE
1546{
1547 struct _RTL_HANDLE * Next;
1548} RTL_HANDLE;
1549
1550/* FIXME: names probably not correct */
1551typedef struct _RTL_HANDLE_TABLE
1552{
1553 ULONG MaxHandleCount; /* 0x00 */
1554 ULONG HandleSize; /* 0x04 */
1555 ULONG Unused[2]; /* 0x08-0x0c */
1556 PVOID NextFree; /* 0x10 */
1557 PVOID FirstHandle; /* 0x14 */
1558 PVOID ReservedMemory; /* 0x18 */
1559 PVOID MaxHandle; /* 0x1c */
1560} RTL_HANDLE_TABLE;
1561
1562/***********************************************************************
1563 * Defines
1564 */
1565
1566/* flags for NtCreateFile and NtOpenFile */
1567#define FILE_DIRECTORY_FILE 0x00000001
1568#define FILE_WRITE_THROUGH 0x00000002
1569#define FILE_SEQUENTIAL_ONLY 0x00000004
1570#define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
1571#define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
1572#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
1573#define FILE_NON_DIRECTORY_FILE 0x00000040
1574#define FILE_CREATE_TREE_CONNECTION 0x00000080
1575#define FILE_COMPLETE_IF_OPLOCKED 0x00000100
1576#define FILE_NO_EA_KNOWLEDGE 0x00000200
1577#define FILE_OPEN_FOR_RECOVERY 0x00000400
1578#define FILE_RANDOM_ACCESS 0x00000800
1579#define FILE_DELETE_ON_CLOSE 0x00001000
1580#define FILE_OPEN_BY_FILE_ID 0x00002000
1581#define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
1582#define FILE_NO_COMPRESSION 0x00008000
1583#define FILE_RESERVE_OPFILTER 0x00100000
1584#define FILE_TRANSACTED_MODE 0x00200000
1585#define FILE_OPEN_OFFLINE_FILE 0x00400000
1586#define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000
1587
1588#define FILE_ATTRIBUTE_VALID_FLAGS 0x00007fb7
1589#define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7
1590
1591/* status for NtCreateFile or NtOpenFile */
1592#define FILE_SUPERSEDED 0
1593#define FILE_OPENED 1
1594#define FILE_CREATED 2
1595#define FILE_OVERWRITTEN 3
1596#define FILE_EXISTS 4
1597#define FILE_DOES_NOT_EXIST 5
1598
1599/* disposition for NtCreateFile */
1600#define FILE_SUPERSEDE 0
1601#define FILE_OPEN 1
1602#define FILE_CREATE 2
1603#define FILE_OPEN_IF 3
1604#define FILE_OVERWRITE 4
1605#define FILE_OVERWRITE_IF 5
1606#define FILE_MAXIMUM_DISPOSITION 5
1607
1608/* Characteristics of a File System */
1609#define FILE_REMOVABLE_MEDIA 0x00000001
1610#define FILE_READ_ONLY_DEVICE 0x00000002
1611#define FILE_FLOPPY_DISKETTE 0x00000004
1612#define FILE_WRITE_ONE_MEDIA 0x00000008
1613#define FILE_REMOTE_DEVICE 0x00000010
1614#define FILE_DEVICE_IS_MOUNTED 0x00000020
1615#define FILE_VIRTUAL_VOLUME 0x00000040
1616#define FILE_AUTOGENERATED_DEVICE_NAME 0x00000080
1617#define FILE_DEVICE_SECURE_OPEN 0x00000100
1618
1619/* options for NtCreateNamedPipeFile */
1620#define FILE_PIPE_INBOUND 0x00000000
1621#define FILE_PIPE_OUTBOUND 0x00000001
1622#define FILE_PIPE_FULL_DUPLEX 0x00000002
1623
1624/* options for pipe's type */
1625#define FILE_PIPE_TYPE_MESSAGE 0x00000001
1626#define FILE_PIPE_TYPE_BYTE 0x00000000
1627/* and client / server end */
1628#define FILE_PIPE_SERVER_END 0x00000001
1629#define FILE_PIPE_CLIENT_END 0x00000000
1630
1631#if (_WIN32_WINNT >= 0x0501)
1632#define INTERNAL_TS_ACTIVE_CONSOLE_ID ( *((volatile ULONG*)(0x7ffe02d8)) )
1633#endif /* (_WIN32_WINNT >= 0x0501) */
1634
1635#define LOGONID_CURRENT ((ULONG)-1)
1636
1637#define OBJ_INHERIT 0x00000002L
1638#define OBJ_PERMANENT 0x00000010L
1639#define OBJ_EXCLUSIVE 0x00000020L
1640#define OBJ_CASE_INSENSITIVE 0x00000040L
1641#define OBJ_OPENIF 0x00000080L
1642#define OBJ_OPENLINK 0x00000100L
1643#define OBJ_KERNEL_HANDLE 0x00000200L
1644#define OBJ_VALID_ATTRIBUTES 0x000003F2L
1645
1646#define SERVERNAME_CURRENT ((HANDLE)NULL)
1647
1648typedef void (CALLBACK *PNTAPCFUNC)(ULONG_PTR,ULONG_PTR,ULONG_PTR); /* FIXME: not the right name */
1649typedef void (CALLBACK *PRTL_THREAD_START_ROUTINE)(LPVOID); /* FIXME: not the right name */
1650typedef DWORD (CALLBACK *PRTL_WORK_ITEM_ROUTINE)(LPVOID); /* FIXME: not the right name */
1651typedef void (NTAPI *RTL_WAITORTIMERCALLBACKFUNC)(PVOID,BOOLEAN); /* FIXME: not the right name */
1652
1653
1654/* DbgPrintEx default levels */
1655#define DPFLTR_ERROR_LEVEL 0
1656#define DPFLTR_WARNING_LEVEL 1
1657#define DPFLTR_TRACE_LEVEL 2
1658#define DPFLTR_INFO_LEVEL 3
1659#define DPFLTR_MASK 0x8000000
1660
1661/* Well-known LUID values */
1662#define SE_MIN_WELL_KNOWN_PRIVILEGE 2L
1663#define SE_CREATE_TOKEN_PRIVILEGE 2L
1664#define SE_ASSIGNPRIMARYTOKEN_PRIVILEGE 3L
1665#define SE_LOCK_MEMORY_PRIVILEGE 4L
1666#define SE_INCREASE_QUOTA_PRIVILEGE 5L
1667#define SE_UNSOLICITED_INPUT_PRIVILEGE 6L /* obsolete */
1668#define SE_MACHINE_ACCOUNT_PRIVILEGE 6L
1669#define SE_TCB_PRIVILEGE 7L
1670#define SE_SECURITY_PRIVILEGE 8L
1671#define SE_TAKE_OWNERSHIP_PRIVILEGE 9L
1672#define SE_LOAD_DRIVER_PRIVILEGE 10L
1673#define SE_SYSTEM_PROFILE_PRIVILEGE 11L
1674#define SE_SYSTEMTIME_PRIVILEGE 12L
1675#define SE_PROF_SINGLE_PROCESS_PRIVILEGE 13L
1676#define SE_INC_BASE_PRIORITY_PRIVILEGE 14L
1677#define SE_CREATE_PAGEFILE_PRIVILEGE 15L
1678#define SE_CREATE_PERMANENT_PRIVILEGE 16L
1679#define SE_BACKUP_PRIVILEGE 17L
1680#define SE_RESTORE_PRIVILEGE 18L
1681#define SE_SHUTDOWN_PRIVILEGE 19L
1682#define SE_DEBUG_PRIVILEGE 20L
1683#define SE_AUDIT_PRIVILEGE 21L
1684#define SE_SYSTEM_ENVIRONMENT_PRIVILEGE 22L
1685#define SE_CHANGE_NOTIFY_PRIVILEGE 23L
1686#define SE_REMOTE_SHUTDOWN_PRIVILEGE 24L
1687#define SE_UNDOCK_PRIVILEGE 25L
1688#define SE_SYNC_AGENT_PRIVILEGE 26L
1689#define SE_ENABLE_DELEGATION_PRIVILEGE 27L
1690#define SE_MANAGE_VOLUME_PRIVILEGE 28L
1691#define SE_IMPERSONATE_PRIVILEGE 29L
1692#define SE_CREATE_GLOBAL_PRIVILEGE 30L
1693#define SE_MAX_WELL_KNOWN_PRIVILEGE SE_CREATE_GLOBAL_PRIVILEGE
1694
1695
1696/* Rtl*Registry* functions structs and defines */
1697#define RTL_REGISTRY_ABSOLUTE 0
1698#define RTL_REGISTRY_SERVICES 1
1699#define RTL_REGISTRY_CONTROL 2
1700#define RTL_REGISTRY_WINDOWS_NT 3
1701#define RTL_REGISTRY_DEVICEMAP 4
1702#define RTL_REGISTRY_USER 5
1703
1704#define RTL_REGISTRY_HANDLE 0x40000000
1705#define RTL_REGISTRY_OPTIONAL 0x80000000
1706
1707#define RTL_QUERY_REGISTRY_SUBKEY 0x00000001
1708#define RTL_QUERY_REGISTRY_TOPKEY 0x00000002
1709#define RTL_QUERY_REGISTRY_REQUIRED 0x00000004
1710#define RTL_QUERY_REGISTRY_NOVALUE 0x00000008
1711#define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010
1712#define RTL_QUERY_REGISTRY_DIRECT 0x00000020
1713#define RTL_QUERY_REGISTRY_DELETE 0x00000040
1714
1715typedef NTSTATUS (WINAPI *PRTL_QUERY_REGISTRY_ROUTINE)( PCWSTR ValueName,
1716 ULONG ValueType,
1717 PVOID ValueData,
1718 ULONG ValueLength,
1719 PVOID Context,
1720 PVOID EntryContext);
1721
1722typedef struct _RTL_QUERY_REGISTRY_TABLE
1723{
1724 PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;
1725 ULONG Flags;
1726 PWSTR Name;
1727 PVOID EntryContext;
1728 ULONG DefaultType;
1729 PVOID DefaultData;
1730 ULONG DefaultLength;
1731} RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
1732
1733typedef struct _KEY_MULTIPLE_VALUE_INFORMATION
1734{
1735 PUNICODE_STRING ValueName;
1736 ULONG DataLength;
1737 ULONG DataOffset;
1738 ULONG Type;
1739} KEY_MULTIPLE_VALUE_INFORMATION, *PKEY_MULTIPLE_VALUE_INFORMATION;
1740
1741typedef VOID (CALLBACK *PRTL_OVERLAPPED_COMPLETION_ROUTINE)(DWORD,DWORD,LPVOID);
1742
1743typedef VOID (*PTIMER_APC_ROUTINE) ( PVOID, ULONG, LONG );
1744
1745typedef enum _EVENT_TYPE {
1746 NotificationEvent,
1747 SynchronizationEvent
1748} EVENT_TYPE, *PEVENT_TYPE;
1749
1750typedef enum _EVENT_INFORMATION_CLASS {
1751 EventBasicInformation
1752} EVENT_INFORMATION_CLASS, *PEVENT_INFORMATION_CLASS;
1753
1754typedef struct _EVENT_BASIC_INFORMATION {
1755 EVENT_TYPE EventType;
1756 LONG EventState;
1757} EVENT_BASIC_INFORMATION, *PEVENT_BASIC_INFORMATION;
1758
1759typedef enum _SEMAPHORE_INFORMATION_CLASS {
1760 SemaphoreBasicInformation
1761} SEMAPHORE_INFORMATION_CLASS, *PSEMAPHORE_INFORMATION_CLASS;
1762
1763typedef struct _SEMAPHORE_BASIC_INFORMATION {
1764 ULONG CurrentCount;
1765 ULONG MaximumCount;
1766} SEMAPHORE_BASIC_INFORMATION, *PSEMAPHORE_BASIC_INFORMATION;
1767
1768typedef enum _SECTION_INFORMATION_CLASS
1769{
1770 SectionBasicInformation,
1771 SectionImageInformation,
1772} SECTION_INFORMATION_CLASS;
1773
1774typedef struct _SECTION_BASIC_INFORMATION {
1775 ULONG BaseAddress;
1776 ULONG Attributes;
1777 LARGE_INTEGER Size;
1778} SECTION_BASIC_INFORMATION, *PSECTION_BASIC_INFORMATION;
1779
1780typedef struct _SECTION_IMAGE_INFORMATION {
1781 PVOID EntryPoint;
1782 ULONG StackZeroBits;
1783 ULONG StackReserved;
1784 ULONG StackCommit;
1785 ULONG ImageSubsystem;
1786 WORD SubsystemVersionLow;
1787 WORD SubsystemVersionHigh;
1788 ULONG Unknown1;
1789 ULONG ImageCharacteristics;
1790 ULONG ImageMachineType;
1791 ULONG Unknown2[3];
1792} SECTION_IMAGE_INFORMATION, *PSECTION_IMAGE_INFORMATION;
1793
1794typedef struct _LPC_SECTION_WRITE {
1795 ULONG Length;
1796 HANDLE SectionHandle;
1797 ULONG SectionOffset;
1798 ULONG ViewSize;
1799 PVOID ViewBase;
1800 PVOID TargetViewBase;
1801} LPC_SECTION_WRITE, *PLPC_SECTION_WRITE;
1802
1803typedef struct _LPC_SECTION_READ {
1804 ULONG Length;
1805 ULONG ViewSize;
1806 PVOID ViewBase;
1807} LPC_SECTION_READ, *PLPC_SECTION_READ;
1808
1809typedef struct _LPC_MESSAGE {
1810 USHORT DataSize;
1811 USHORT MessageSize;
1812 USHORT MessageType;
1813 USHORT VirtualRangesOffset;
1814 CLIENT_ID ClientId;
1815 ULONG_PTR MessageId;
1816 ULONG_PTR SectionSize;
1817 UCHAR Data[ANYSIZE_ARRAY];
1818} LPC_MESSAGE, *PLPC_MESSAGE;
1819
1820typedef enum _SHUTDOWN_ACTION {
1821 ShutdownNoReboot,
1822 ShutdownReboot,
1823 ShutdownPowerOff
1824} SHUTDOWN_ACTION, *PSHUTDOWN_ACTION;
1825
1826typedef enum _KPROFILE_SOURCE {
1827 ProfileTime,
1828 ProfileAlignmentFixup,
1829 ProfileTotalIssues,
1830 ProfilePipelineDry,
1831 ProfileLoadInstructions,
1832 ProfilePipelineFrozen,
1833 ProfileBranchInstructions,
1834 ProfileTotalNonissues,
1835 ProfileDcacheMisses,
1836 ProfileIcacheMisses,
1837 ProfileCacheMisses,
1838 ProfileBranchMispredictions,
1839 ProfileStoreInstructions,
1840 ProfileFpInstructions,
1841 ProfileIntegerInstructions,
1842 Profile2Issue,
1843 Profile3Issue,
1844 Profile4Issue,
1845 ProfileSpecialInstructions,
1846 ProfileTotalCycles,
1847 ProfileIcacheIssues,
1848 ProfileDcacheAccesses,
1849 ProfileMemoryBarrierCycles,
1850 ProfileLoadLinkedIssues,
1851 ProfileMaximum
1852} KPROFILE_SOURCE, *PKPROFILE_SOURCE;
1853
1854typedef struct _DIRECTORY_BASIC_INFORMATION {
1855 UNICODE_STRING ObjectName;
1856 UNICODE_STRING ObjectTypeName;
1857} DIRECTORY_BASIC_INFORMATION, *PDIRECTORY_BASIC_INFORMATION;
1858
1859typedef struct _INITIAL_TEB {
1860 PVOID StackBase;
1861 PVOID StackLimit;
1862 PVOID StackCommit;
1863 PVOID StackCommitMax;
1864 PVOID StackReserved;
1865} INITIAL_TEB, *PINITIAL_TEB;
1866
1867typedef enum _PORT_INFORMATION_CLASS {
1868 PortNoInformation
1869} PORT_INFORMATION_CLASS, *PPORT_INFORMATION_CLASS;
1870
1871typedef enum _IO_COMPLETION_INFORMATION_CLASS {
1872 IoCompletionBasicInformation
1873} IO_COMPLETION_INFORMATION_CLASS, *PIO_COMPLETION_INFORMATION_CLASS;
1874
1875typedef struct _FILE_COMPLETION_INFORMATION {
1876 HANDLE CompletionPort;
1877 ULONG_PTR CompletionKey;
1878} FILE_COMPLETION_INFORMATION, *PFILE_COMPLETION_INFORMATION;
1879
1880#define IO_COMPLETION_QUERY_STATE 0x0001
1881#define IO_COMPLETION_MODIFY_STATE 0x0002
1882#define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
1883
1884typedef enum _HARDERROR_RESPONSE_OPTION {
1885 OptionAbortRetryIgnore,
1886 OptionOk,
1887 OptionOkCancel,
1888 OptionRetryCancel,
1889 OptionYesNo,
1890 OptionYesNoCancel,
1891 OptionShutdownSystem
1892} HARDERROR_RESPONSE_OPTION, *PHARDERROR_RESPONSE_OPTION;
1893
1894typedef enum _HARDERROR_RESPONSE {
1895 ResponseReturnToCaller,
1896 ResponseNotHandled,
1897 ResponseAbort,
1898 ResponseCancel,
1899 ResponseIgnore,
1900 ResponseNo,
1901 ResponseOk,
1902 ResponseRetry,
1903 ResponseYes
1904} HARDERROR_RESPONSE, *PHARDERROR_RESPONSE;
1905
1906typedef enum _SYSDBG_COMMAND {
1907 SysDbgQueryModuleInformation,
1908 SysDbgQueryTraceInformation,
1909 SysDbgSetTracepoint,
1910 SysDbgSetSpecialCall,
1911 SysDbgClearSpecialCalls,
1912 SysDbgQuerySpecialCalls
1913} SYSDBG_COMMAND, *PSYSDBG_COMMAND;
1914
1915
1916/*************************************************************************
1917 * Loader structures
1918 *
1919 * Those are not part of standard Winternl.h
1920 */
1921typedef struct _LDR_MODULE
1922{
1923 LIST_ENTRY InLoadOrderModuleList;
1924 LIST_ENTRY InMemoryOrderModuleList;
1925 LIST_ENTRY InInitializationOrderModuleList;
1926 void* BaseAddress;
1927 void* EntryPoint;
1928 ULONG SizeOfImage;
1929 UNICODE_STRING FullDllName;
1930 UNICODE_STRING BaseDllName;
1931 ULONG Flags;
1932 SHORT LoadCount;
1933 SHORT TlsIndex;
1934 HANDLE SectionHandle;
1935 ULONG CheckSum;
1936 ULONG TimeDateStamp;
1937 HANDLE ActivationContext;
1938} LDR_MODULE, *PLDR_MODULE;
1939
1940/* those defines are (some of the) regular LDR_MODULE.Flags values */
1941#define LDR_IMAGE_IS_DLL 0x00000004
1942#define LDR_LOAD_IN_PROGRESS 0x00001000
1943#define LDR_UNLOAD_IN_PROGRESS 0x00002000
1944#define LDR_NO_DLL_CALLS 0x00040000
1945#define LDR_PROCESS_ATTACHED 0x00080000
1946#define LDR_MODULE_REBASED 0x00200000
1947
1948/* these ones is Wine specific */
1949#define LDR_DONT_RESOLVE_REFS 0x40000000
1950#define LDR_WINE_INTERNAL 0x80000000
1951
1952/* FIXME: to be checked */
1953#define MAXIMUM_FILENAME_LENGTH 256
1954
1955typedef struct _SYSTEM_MODULE
1956{
1957 PVOID Reserved1; /* 00/00 */
1958 PVOID Reserved2; /* 04/08 */
1959 PVOID ImageBaseAddress; /* 08/10 */
1960 ULONG ImageSize; /* 0c/18 */
1961 ULONG Flags; /* 10/1c */
1962 WORD Id; /* 14/20 */
1963 WORD Rank; /* 16/22 */
1964 WORD Unknown; /* 18/24 */
1965 WORD NameOffset; /* 1a/26 */
1966 BYTE Name[MAXIMUM_FILENAME_LENGTH]; /* 1c/28 */
1967} SYSTEM_MODULE, *PSYSTEM_MODULE;
1968
1969typedef struct _SYSTEM_MODULE_INFORMATION
1970{
1971 ULONG ModulesCount;
1972 SYSTEM_MODULE Modules[1]; /* FIXME: should be Modules[0] */
1973} SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;
1974
1975/***********************************************************************
1976 * Function declarations
1977 */
1978
1979#if defined(__i386__) && defined(__GNUC__)
1980static inline void WINAPI DbgBreakPoint(void) { __asm__ __volatile__("int3"); }
1981static inline void WINAPI DbgUserBreakPoint(void) { __asm__ __volatile__("int3"); }
1982#else /* __i386__ && __GNUC__ */
1983NTSYSAPI void WINAPI DbgBreakPoint(void);
1984NTSYSAPI void WINAPI DbgUserBreakPoint(void);
1985#endif /* __i386__ && __GNUC__ */
1986NTSYSAPI NTSTATUS WINAPIV DbgPrint(LPCSTR fmt, ...);
1987NTSYSAPI NTSTATUS WINAPIV DbgPrintEx(ULONG iComponentId, ULONG Level, LPCSTR fmt, ...);
1988NTSYSAPI NTSTATUS WINAPI LdrAccessResource(HMODULE,const IMAGE_RESOURCE_DATA_ENTRY*,void**,PULONG);
1989NTSYSAPI NTSTATUS WINAPI LdrAddRefDll(ULONG,HMODULE);
1990NTSYSAPI NTSTATUS WINAPI LdrFindResourceDirectory_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DIRECTORY**);
1991NTSYSAPI NTSTATUS WINAPI LdrFindResource_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DATA_ENTRY**);
1992NTSYSAPI NTSTATUS WINAPI LdrDisableThreadCalloutsForDll(HMODULE);
1993NTSYSAPI NTSTATUS WINAPI LdrFindEntryForAddress(const void*, PLDR_MODULE*);
1994NTSYSAPI NTSTATUS WINAPI LdrGetDllHandle(LPCWSTR, ULONG, const UNICODE_STRING*, HMODULE*);
1995NTSYSAPI NTSTATUS WINAPI LdrGetProcedureAddress(HMODULE, const ANSI_STRING*, ULONG, void**);
1996NTSYSAPI void WINAPI LdrInitializeThunk(ULONG,ULONG,ULONG,ULONG);
1997NTSYSAPI NTSTATUS WINAPI LdrLoadDll(LPCWSTR, DWORD, const UNICODE_STRING*, HMODULE*);
1998NTSYSAPI NTSTATUS WINAPI LdrLockLoaderLock(ULONG,ULONG*,ULONG*);
1999IMAGE_BASE_RELOCATION * WINAPI LdrProcessRelocationBlock(void*,UINT,USHORT*,INT_PTR);
2000NTSYSAPI NTSTATUS WINAPI LdrQueryProcessModuleInformation(SYSTEM_MODULE_INFORMATION*, ULONG, ULONG*);
2001NTSYSAPI void WINAPI LdrShutdownProcess(void);
2002NTSYSAPI void WINAPI LdrShutdownThread(void);
2003NTSYSAPI NTSTATUS WINAPI LdrUnloadDll(HMODULE);
2004NTSYSAPI NTSTATUS WINAPI LdrUnlockLoaderLock(ULONG,ULONG);
2005NTSYSAPI NTSTATUS WINAPI NtAcceptConnectPort(PHANDLE,ULONG,PLPC_MESSAGE,BOOLEAN,PLPC_SECTION_WRITE,PLPC_SECTION_READ);
2006NTSYSAPI NTSTATUS WINAPI NtAccessCheck(PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,PGENERIC_MAPPING,PPRIVILEGE_SET,PULONG,PULONG,NTSTATUS*);
2007NTSYSAPI NTSTATUS WINAPI NtAccessCheckAndAuditAlarm(PUNICODE_STRING,HANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,ACCESS_MASK,PGENERIC_MAPPING,BOOLEAN,PACCESS_MASK,PBOOLEAN,PBOOLEAN);
2008NTSYSAPI NTSTATUS WINAPI NtAddAtom(const WCHAR*,ULONG,RTL_ATOM*);
2009NTSYSAPI NTSTATUS WINAPI NtAdjustGroupsToken(HANDLE,BOOLEAN,PTOKEN_GROUPS,ULONG,PTOKEN_GROUPS,PULONG);
2010NTSYSAPI NTSTATUS WINAPI NtAdjustPrivilegesToken(HANDLE,BOOLEAN,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD);
2011NTSYSAPI NTSTATUS WINAPI NtAlertResumeThread(HANDLE,PULONG);
2012NTSYSAPI NTSTATUS WINAPI NtAlertThread(HANDLE ThreadHandle);
2013NTSYSAPI NTSTATUS WINAPI NtAllocateLocallyUniqueId(PLUID lpLuid);
2014NTSYSAPI NTSTATUS WINAPI NtAllocateUuids(PULARGE_INTEGER,PULONG,PULONG);
2015NTSYSAPI NTSTATUS WINAPI NtAllocateVirtualMemory(HANDLE,PVOID*,ULONG,SIZE_T*,ULONG,ULONG);
2016NTSYSAPI NTSTATUS WINAPI NtAreMappedFilesTheSame(PVOID,PVOID);
2017NTSYSAPI NTSTATUS WINAPI NtAssignProcessToJobObject(HANDLE,HANDLE);
2018NTSYSAPI NTSTATUS WINAPI NtCallbackReturn(PVOID,ULONG,NTSTATUS);
2019NTSYSAPI NTSTATUS WINAPI NtCancelIoFile(HANDLE,PIO_STATUS_BLOCK);
2020NTSYSAPI NTSTATUS WINAPI NtCancelTimer(HANDLE, BOOLEAN*);
2021NTSYSAPI NTSTATUS WINAPI NtClearEvent(HANDLE);
2022NTSYSAPI NTSTATUS WINAPI NtClose(HANDLE);
2023NTSYSAPI NTSTATUS WINAPI NtCloseObjectAuditAlarm(PUNICODE_STRING,HANDLE,BOOLEAN);
2024NTSYSAPI NTSTATUS WINAPI NtCompleteConnectPort(HANDLE);
2025NTSYSAPI NTSTATUS WINAPI NtConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
2026NTSYSAPI NTSTATUS WINAPI NtContinue(PCONTEXT,BOOLEAN);
2027NTSYSAPI NTSTATUS WINAPI NtCreateDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
2028NTSYSAPI NTSTATUS WINAPI NtCreateEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *,BOOLEAN,BOOLEAN);
2029NTSYSAPI NTSTATUS WINAPI NtCreateEventPair(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
2030NTSYSAPI NTSTATUS WINAPI NtCreateFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,PLARGE_INTEGER,ULONG,ULONG,ULONG,ULONG,PVOID,ULONG);
2031NTSYSAPI NTSTATUS WINAPI NtCreateIoCompletion(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,ULONG);
2032NTSYSAPI NTSTATUS WINAPI NtCreateJobObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2033NTSYSAPI NTSTATUS WINAPI NtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
2034NTSYSAPI NTSTATUS WINAPI NtCreateMailslotFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,PLARGE_INTEGER);
2035NTSYSAPI NTSTATUS WINAPI NtCreateMutant(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,BOOLEAN);
2036NTSYSAPI NTSTATUS WINAPI NtCreateNamedPipeFile(PHANDLE,ULONG,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,PLARGE_INTEGER);
2037NTSYSAPI NTSTATUS WINAPI NtCreatePagingFile(PUNICODE_STRING,PLARGE_INTEGER,PLARGE_INTEGER,PLARGE_INTEGER);
2038NTSYSAPI NTSTATUS WINAPI NtCreatePort(PHANDLE,POBJECT_ATTRIBUTES,ULONG,ULONG,PULONG);
2039NTSYSAPI NTSTATUS WINAPI NtCreateProcess(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,HANDLE,BOOLEAN,HANDLE,HANDLE,HANDLE);
2040NTSYSAPI NTSTATUS WINAPI NtCreateProfile(PHANDLE,HANDLE,PVOID,ULONG,ULONG,PVOID,ULONG,KPROFILE_SOURCE,KAFFINITY);
2041NTSYSAPI NTSTATUS WINAPI NtCreateSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const LARGE_INTEGER*,ULONG,ULONG,HANDLE);
2042NTSYSAPI NTSTATUS WINAPI NtCreateSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,LONG,LONG);
2043NTSYSAPI NTSTATUS WINAPI NtCreateSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PUNICODE_STRING);
2044NTSYSAPI NTSTATUS WINAPI NtCreateThread(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,HANDLE,PCLIENT_ID,PCONTEXT,PINITIAL_TEB,BOOLEAN);
2045NTSYSAPI NTSTATUS WINAPI NtCreateTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*, TIMER_TYPE);
2046NTSYSAPI 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);
2047NTSYSAPI NTSTATUS WINAPI NtDelayExecution(BOOLEAN,const LARGE_INTEGER*);
2048NTSYSAPI NTSTATUS WINAPI NtDeleteAtom(RTL_ATOM);
2049NTSYSAPI NTSTATUS WINAPI NtDeleteFile(POBJECT_ATTRIBUTES);
2050NTSYSAPI NTSTATUS WINAPI NtDeleteKey(HANDLE);
2051NTSYSAPI NTSTATUS WINAPI NtDeleteValueKey(HANDLE,const UNICODE_STRING *);
2052NTSYSAPI NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
2053NTSYSAPI NTSTATUS WINAPI NtDisplayString(PUNICODE_STRING);
2054NTSYSAPI NTSTATUS WINAPI NtDuplicateObject(HANDLE,HANDLE,HANDLE,PHANDLE,ACCESS_MASK,ULONG,ULONG);
2055NTSYSAPI NTSTATUS WINAPI NtDuplicateToken(HANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,PHANDLE);
2056NTSYSAPI NTSTATUS WINAPI NtEnumerateKey(HANDLE,ULONG,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
2057NTSYSAPI NTSTATUS WINAPI NtEnumerateValueKey(HANDLE,ULONG,KEY_VALUE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2058NTSYSAPI NTSTATUS WINAPI NtExtendSection(HANDLE,PLARGE_INTEGER);
2059NTSYSAPI NTSTATUS WINAPI NtFindAtom(const WCHAR*,ULONG,RTL_ATOM*);
2060NTSYSAPI NTSTATUS WINAPI NtFlushBuffersFile(HANDLE,IO_STATUS_BLOCK*);
2061NTSYSAPI NTSTATUS WINAPI NtFlushInstructionCache(HANDLE,LPCVOID,SIZE_T);
2062NTSYSAPI NTSTATUS WINAPI NtFlushKey(HANDLE);
2063NTSYSAPI NTSTATUS WINAPI NtFlushVirtualMemory(HANDLE,LPCVOID*,SIZE_T*,ULONG);
2064NTSYSAPI NTSTATUS WINAPI NtFlushWriteBuffer(VOID);
2065NTSYSAPI NTSTATUS WINAPI NtFreeVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
2066NTSYSAPI NTSTATUS WINAPI NtFsControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
2067NTSYSAPI NTSTATUS WINAPI NtGetContextThread(HANDLE,CONTEXT*);
2068NTSYSAPI NTSTATUS WINAPI NtGetPlugPlayEvent(ULONG,ULONG,PVOID,ULONG);
2069NTSYSAPI ULONG WINAPI NtGetTickCount(VOID);
2070NTSYSAPI NTSTATUS WINAPI NtGetWriteWatch(HANDLE,ULONG,PVOID,SIZE_T,PVOID*,ULONG_PTR*,ULONG*);
2071NTSYSAPI NTSTATUS WINAPI NtImpersonateAnonymousToken(HANDLE);
2072NTSYSAPI NTSTATUS WINAPI NtImpersonateClientOfPort(HANDLE,PPORT_MESSAGE);
2073NTSYSAPI NTSTATUS WINAPI NtImpersonateThread(HANDLE,HANDLE,PSECURITY_QUALITY_OF_SERVICE);
2074NTSYSAPI NTSTATUS WINAPI NtInitializeRegistry(BOOLEAN);
2075NTSYSAPI NTSTATUS WINAPI NtInitiatePowerAction(POWER_ACTION,SYSTEM_POWER_STATE,ULONG,BOOLEAN);
2076NTSYSAPI NTSTATUS WINAPI NtIsProcessInJob(HANDLE,HANDLE);
2077NTSYSAPI NTSTATUS WINAPI NtListenPort(HANDLE,PLPC_MESSAGE);
2078NTSYSAPI NTSTATUS WINAPI NtLoadDriver(const UNICODE_STRING *);
2079NTSYSAPI NTSTATUS WINAPI NtLoadKey(const OBJECT_ATTRIBUTES *,OBJECT_ATTRIBUTES *);
2080NTSYSAPI NTSTATUS WINAPI NtLockFile(HANDLE,HANDLE,PIO_APC_ROUTINE,void*,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,ULONG*,BOOLEAN,BOOLEAN);
2081NTSYSAPI NTSTATUS WINAPI NtLockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
2082NTSYSAPI NTSTATUS WINAPI NtMakeTemporaryObject(HANDLE);
2083NTSYSAPI NTSTATUS WINAPI NtMapViewOfSection(HANDLE,HANDLE,PVOID*,ULONG,SIZE_T,const LARGE_INTEGER*,SIZE_T*,SECTION_INHERIT,ULONG,ULONG);
2084NTSYSAPI NTSTATUS WINAPI NtNotifyChangeDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,ULONG,BOOLEAN);
2085NTSYSAPI NTSTATUS WINAPI NtNotifyChangeKey(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN);
2086NTSYSAPI NTSTATUS WINAPI NtOpenDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
2087NTSYSAPI NTSTATUS WINAPI NtOpenEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
2088NTSYSAPI NTSTATUS WINAPI NtOpenEventPair(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
2089NTSYSAPI NTSTATUS WINAPI NtOpenFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG);
2090NTSYSAPI NTSTATUS WINAPI NtOpenIoCompletion(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
2091NTSYSAPI NTSTATUS WINAPI NtOpenJobObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2092NTSYSAPI NTSTATUS WINAPI NtOpenKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
2093NTSYSAPI NTSTATUS WINAPI NtOpenMutant(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2094NTSYSAPI NTSTATUS WINAPI NtOpenObjectAuditAlarm(PUNICODE_STRING,PHANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,ACCESS_MASK,PPRIVILEGE_SET,BOOLEAN,BOOLEAN,PBOOLEAN);
2095NTSYSAPI NTSTATUS WINAPI NtOpenProcess(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
2096NTSYSAPI NTSTATUS WINAPI NtOpenProcessToken(HANDLE,DWORD,HANDLE *);
2097NTSYSAPI NTSTATUS WINAPI NtOpenProcessTokenEx(HANDLE,DWORD,DWORD,HANDLE *);
2098NTSYSAPI NTSTATUS WINAPI NtOpenSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2099NTSYSAPI NTSTATUS WINAPI NtOpenSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
2100NTSYSAPI NTSTATUS WINAPI NtOpenSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
2101NTSYSAPI NTSTATUS WINAPI NtOpenThread(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
2102NTSYSAPI NTSTATUS WINAPI NtOpenThreadToken(HANDLE,DWORD,BOOLEAN,HANDLE *);
2103NTSYSAPI NTSTATUS WINAPI NtOpenThreadTokenEx(HANDLE,DWORD,BOOLEAN,DWORD,HANDLE *);
2104NTSYSAPI NTSTATUS WINAPI NtOpenTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*);
2105NTSYSAPI NTSTATUS WINAPI NtPowerInformation(POWER_INFORMATION_LEVEL,PVOID,ULONG,PVOID,ULONG);
2106NTSYSAPI NTSTATUS WINAPI NtPrivilegeCheck(HANDLE,PPRIVILEGE_SET,PBOOLEAN);
2107NTSYSAPI NTSTATUS WINAPI NtPrivilegeObjectAuditAlarm(PUNICODE_STRING,HANDLE,HANDLE,ULONG,PPRIVILEGE_SET,BOOLEAN);
2108NTSYSAPI NTSTATUS WINAPI NtPrivilegedServiceAuditAlarm(PUNICODE_STRING,PUNICODE_STRING,HANDLE,PPRIVILEGE_SET,BOOLEAN);
2109NTSYSAPI NTSTATUS WINAPI NtProtectVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG,ULONG*);
2110NTSYSAPI NTSTATUS WINAPI NtPulseEvent(HANDLE,PULONG);
2111NTSYSAPI NTSTATUS WINAPI NtQueueApcThread(HANDLE,PNTAPCFUNC,ULONG_PTR,ULONG_PTR,ULONG_PTR);
2112NTSYSAPI NTSTATUS WINAPI NtQueryAttributesFile(const OBJECT_ATTRIBUTES*,FILE_BASIC_INFORMATION*);
2113NTSYSAPI NTSTATUS WINAPI NtQueryDefaultLocale(BOOLEAN,LCID*);
2114NTSYSAPI NTSTATUS WINAPI NtQueryDefaultUILanguage(LANGID*);
2115NTSYSAPI NTSTATUS WINAPI NtQueryDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS,BOOLEAN,PUNICODE_STRING,BOOLEAN);
2116NTSYSAPI NTSTATUS WINAPI NtQueryDirectoryObject(HANDLE,PDIRECTORY_BASIC_INFORMATION,ULONG,BOOLEAN,BOOLEAN,PULONG,PULONG);
2117NTSYSAPI NTSTATUS WINAPI NtQueryEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,BOOLEAN,PVOID,ULONG,PULONG,BOOLEAN);
2118NTSYSAPI NTSTATUS WINAPI NtQueryEvent(HANDLE,EVENT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2119NTSYSAPI NTSTATUS WINAPI NtQueryFullAttributesFile(const OBJECT_ATTRIBUTES*,FILE_NETWORK_OPEN_INFORMATION*);
2120NTSYSAPI NTSTATUS WINAPI NtQueryInformationAtom(RTL_ATOM,ATOM_INFORMATION_CLASS,PVOID,ULONG,ULONG*);
2121NTSYSAPI NTSTATUS WINAPI NtQueryInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,LONG,FILE_INFORMATION_CLASS);
2122NTSYSAPI NTSTATUS WINAPI NtQueryInformationJobObject(HANDLE,JOBOBJECTINFOCLASS,PVOID,ULONG,PULONG);
2123NTSYSAPI NTSTATUS WINAPI NtQueryInformationPort(HANDLE,PORT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2124NTSYSAPI NTSTATUS WINAPI NtQueryInformationProcess(HANDLE,PROCESSINFOCLASS,PVOID,ULONG,PULONG);
2125NTSYSAPI NTSTATUS WINAPI NtQueryInformationThread(HANDLE,THREADINFOCLASS,PVOID,ULONG,PULONG);
2126NTSYSAPI NTSTATUS WINAPI NtQueryInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2127NTSYSAPI NTSTATUS WINAPI NtQueryInstallUILanguage(LANGID*);
2128NTSYSAPI NTSTATUS WINAPI NtQueryIntervalProfile(KPROFILE_SOURCE,PULONG);
2129NTSYSAPI NTSTATUS WINAPI NtQueryIoCompletion(HANDLE,IO_COMPLETION_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2130NTSYSAPI NTSTATUS WINAPI NtQueryKey(HANDLE,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
2131NTSYSAPI NTSTATUS WINAPI NtQueryMultipleValueKey(HANDLE,PKEY_MULTIPLE_VALUE_INFORMATION,ULONG,PVOID,ULONG,PULONG);
2132NTSYSAPI NTSTATUS WINAPI NtQueryMutant(HANDLE,MUTANT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2133NTSYSAPI NTSTATUS WINAPI NtQueryObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG, PULONG);
2134NTSYSAPI NTSTATUS WINAPI NtQueryOpenSubKeys(POBJECT_ATTRIBUTES,PULONG);
2135NTSYSAPI NTSTATUS WINAPI NtQueryPerformanceCounter(PLARGE_INTEGER, PLARGE_INTEGER);
2136NTSYSAPI NTSTATUS WINAPI NtQuerySecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,ULONG,PULONG);
2137NTSYSAPI NTSTATUS WINAPI NtQuerySection(HANDLE,SECTION_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2138NTSYSAPI NTSTATUS WINAPI NtQuerySemaphore(HANDLE,SEMAPHORE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2139NTSYSAPI NTSTATUS WINAPI NtQuerySymbolicLinkObject(HANDLE,PUNICODE_STRING,PULONG);
2140NTSYSAPI NTSTATUS WINAPI NtQuerySystemEnvironmentValue(PUNICODE_STRING,PWCHAR,ULONG,PULONG);
2141NTSYSAPI NTSTATUS WINAPI NtQuerySystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2142NTSYSAPI NTSTATUS WINAPI NtQuerySystemTime(PLARGE_INTEGER);
2143NTSYSAPI NTSTATUS WINAPI NtQueryTimer(HANDLE,TIMER_INFORMATION_CLASS,PVOID,ULONG,PULONG);
2144NTSYSAPI NTSTATUS WINAPI NtQueryTimerResolution(PULONG,PULONG,PULONG);
2145NTSYSAPI NTSTATUS WINAPI NtQueryValueKey(HANDLE,const UNICODE_STRING *,KEY_VALUE_INFORMATION_CLASS,void *,DWORD,DWORD *);
2146NTSYSAPI NTSTATUS WINAPI NtQueryVirtualMemory(HANDLE,LPCVOID,MEMORY_INFORMATION_CLASS,PVOID,SIZE_T,SIZE_T*);
2147NTSYSAPI NTSTATUS WINAPI NtQueryVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
2148NTSYSAPI NTSTATUS WINAPI NtRaiseException(PEXCEPTION_RECORD,PCONTEXT,BOOL);
2149NTSYSAPI NTSTATUS WINAPI NtRaiseHardError(NTSTATUS,ULONG,PUNICODE_STRING,PVOID*,HARDERROR_RESPONSE_OPTION,PHARDERROR_RESPONSE);
2150NTSYSAPI NTSTATUS WINAPI NtReadFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,PLARGE_INTEGER,PULONG);
2151NTSYSAPI NTSTATUS WINAPI NtReadFileScatter(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,FILE_SEGMENT_ELEMENT*,ULONG,PLARGE_INTEGER,PULONG);
2152NTSYSAPI NTSTATUS WINAPI NtReadRequestData(HANDLE,PLPC_MESSAGE,ULONG,PVOID,ULONG,PULONG);
2153NTSYSAPI NTSTATUS WINAPI NtReadVirtualMemory(HANDLE,const void*,void*,SIZE_T,SIZE_T*);
2154NTSYSAPI NTSTATUS WINAPI NtRegisterThreadTerminatePort(HANDLE);
2155NTSYSAPI NTSTATUS WINAPI NtReleaseMutant(HANDLE,PLONG);
2156NTSYSAPI NTSTATUS WINAPI NtReleaseSemaphore(HANDLE,ULONG,PULONG);
2157NTSYSAPI NTSTATUS WINAPI NtRemoveIoCompletion(HANDLE,PULONG_PTR,PULONG_PTR,PIO_STATUS_BLOCK,PLARGE_INTEGER);
2158NTSYSAPI NTSTATUS WINAPI NtReplaceKey(POBJECT_ATTRIBUTES,HANDLE,POBJECT_ATTRIBUTES);
2159NTSYSAPI NTSTATUS WINAPI NtReplyPort(HANDLE,PLPC_MESSAGE);
2160NTSYSAPI NTSTATUS WINAPI NtReplyWaitReceivePort(HANDLE,PULONG,PLPC_MESSAGE,PLPC_MESSAGE);
2161NTSYSAPI NTSTATUS WINAPI NtReplyWaitReceivePortEx(HANDLE,PVOID*,PPORT_MESSAGE,PPORT_MESSAGE,PLARGE_INTEGER);
2162NTSYSAPI NTSTATUS WINAPI NtReplyWaitReplyPort(HANDLE,PLPC_MESSAGE);
2163NTSYSAPI NTSTATUS WINAPI NtRequestPort(HANDLE,PLPC_MESSAGE);
2164NTSYSAPI NTSTATUS WINAPI NtRequestWaitReplyPort(HANDLE,PLPC_MESSAGE,PLPC_MESSAGE);
2165NTSYSAPI NTSTATUS WINAPI NtResetEvent(HANDLE,PULONG);
2166NTSYSAPI NTSTATUS WINAPI NtResetWriteWatch(HANDLE,PVOID,SIZE_T);
2167NTSYSAPI NTSTATUS WINAPI NtRestoreKey(HANDLE,HANDLE,ULONG);
2168NTSYSAPI NTSTATUS WINAPI NtResumeThread(HANDLE,PULONG);
2169NTSYSAPI NTSTATUS WINAPI NtSaveKey(HANDLE,HANDLE);
2170NTSYSAPI NTSTATUS WINAPI NtSecureConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PSID,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
2171NTSYSAPI NTSTATUS WINAPI NtSetContextThread(HANDLE,const CONTEXT*);
2172NTSYSAPI NTSTATUS WINAPI NtSetDefaultHardErrorPort(HANDLE);
2173NTSYSAPI NTSTATUS WINAPI NtSetDefaultLocale(BOOLEAN,LCID);
2174NTSYSAPI NTSTATUS WINAPI NtSetDefaultUILanguage(LANGID);
2175NTSYSAPI NTSTATUS WINAPI NtSetEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG);
2176NTSYSAPI NTSTATUS WINAPI NtSetEvent(HANDLE,PULONG);
2177NTSYSAPI NTSTATUS WINAPI NtSetHighEventPair(HANDLE);
2178NTSYSAPI NTSTATUS WINAPI NtSetHighWaitLowEventPair(HANDLE);
2179NTSYSAPI NTSTATUS WINAPI NtSetHighWaitLowThread(VOID);
2180NTSYSAPI NTSTATUS WINAPI NtSetInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS);
2181NTSYSAPI NTSTATUS WINAPI NtSetInformationJobObject(HANDLE,JOBOBJECTINFOCLASS,PVOID,ULONG);
2182NTSYSAPI NTSTATUS WINAPI NtSetInformationKey(HANDLE,const int,PVOID,ULONG);
2183NTSYSAPI NTSTATUS WINAPI NtSetInformationObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG);
2184NTSYSAPI NTSTATUS WINAPI NtSetInformationProcess(HANDLE,PROCESS_INFORMATION_CLASS,PVOID,ULONG);
2185NTSYSAPI NTSTATUS WINAPI NtSetInformationThread(HANDLE,THREADINFOCLASS,LPCVOID,ULONG);
2186NTSYSAPI NTSTATUS WINAPI NtSetInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG);
2187NTSYSAPI NTSTATUS WINAPI NtSetIntervalProfile(ULONG,KPROFILE_SOURCE);
2188NTSYSAPI NTSTATUS WINAPI NtSetIoCompletion(HANDLE,ULONG_PTR,ULONG_PTR,NTSTATUS,ULONG);
2189NTSYSAPI NTSTATUS WINAPI NtSetLdtEntries(ULONG,LDT_ENTRY,ULONG,LDT_ENTRY);
2190NTSYSAPI NTSTATUS WINAPI NtSetLowEventPair(HANDLE);
2191NTSYSAPI NTSTATUS WINAPI NtSetLowWaitHighEventPair(HANDLE);
2192NTSYSAPI NTSTATUS WINAPI NtSetLowWaitHighThread(VOID);
2193NTSYSAPI NTSTATUS WINAPI NtSetSecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
2194NTSYSAPI NTSTATUS WINAPI NtSetSystemEnvironmentValue(PUNICODE_STRING,PUNICODE_STRING);
2195NTSYSAPI NTSTATUS WINAPI NtSetSystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG);
2196NTSYSAPI NTSTATUS WINAPI NtSetSystemPowerState(POWER_ACTION,SYSTEM_POWER_STATE,ULONG);
2197NTSYSAPI NTSTATUS WINAPI NtSetSystemTime(const LARGE_INTEGER*,LARGE_INTEGER*);
2198NTSYSAPI NTSTATUS WINAPI NtSetTimer(HANDLE, const LARGE_INTEGER*, PTIMER_APC_ROUTINE, PVOID, BOOLEAN, ULONG, BOOLEAN*);
2199NTSYSAPI NTSTATUS WINAPI NtSetTimerResolution(ULONG,BOOLEAN,PULONG);
2200NTSYSAPI NTSTATUS WINAPI NtSetValueKey(HANDLE,const UNICODE_STRING *,ULONG,ULONG,const void *,ULONG);
2201NTSYSAPI NTSTATUS WINAPI NtSetVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
2202NTSYSAPI NTSTATUS WINAPI NtSignalAndWaitForSingleObject(HANDLE,HANDLE,BOOLEAN,const LARGE_INTEGER*);
2203NTSYSAPI NTSTATUS WINAPI NtShutdownSystem(SHUTDOWN_ACTION);
2204NTSYSAPI NTSTATUS WINAPI NtStartProfile(HANDLE);
2205NTSYSAPI NTSTATUS WINAPI NtStopProfile(HANDLE);
2206NTSYSAPI NTSTATUS WINAPI NtSuspendThread(HANDLE,PULONG);
2207NTSYSAPI NTSTATUS WINAPI NtSystemDebugControl(SYSDBG_COMMAND,PVOID,ULONG,PVOID,ULONG,PULONG);
2208NTSYSAPI NTSTATUS WINAPI NtTerminateJobObject(HANDLE,NTSTATUS);
2209NTSYSAPI NTSTATUS WINAPI NtTerminateProcess(HANDLE,LONG);
2210NTSYSAPI NTSTATUS WINAPI NtTerminateThread(HANDLE,LONG);
2211NTSYSAPI NTSTATUS WINAPI NtTestAlert(VOID);
2212NTSYSAPI NTSTATUS WINAPI NtUnloadDriver(const UNICODE_STRING *);
2213NTSYSAPI NTSTATUS WINAPI NtUnloadKey(POBJECT_ATTRIBUTES);
2214NTSYSAPI NTSTATUS WINAPI NtUnloadKeyEx(POBJECT_ATTRIBUTES,HANDLE);
2215NTSYSAPI NTSTATUS WINAPI NtUnlockFile(HANDLE,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,PULONG);
2216NTSYSAPI NTSTATUS WINAPI NtUnlockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG);
2217NTSYSAPI NTSTATUS WINAPI NtUnmapViewOfSection(HANDLE,PVOID);
2218NTSYSAPI NTSTATUS WINAPI NtVdmControl(ULONG,PVOID);
2219NTSYSAPI NTSTATUS WINAPI NtWaitForSingleObject(HANDLE,BOOLEAN,const LARGE_INTEGER*);
2220NTSYSAPI NTSTATUS WINAPI NtWaitForMultipleObjects(ULONG,const HANDLE*,BOOLEAN,BOOLEAN,const LARGE_INTEGER*);
2221NTSYSAPI NTSTATUS WINAPI NtWaitHighEventPair(HANDLE);
2222NTSYSAPI NTSTATUS WINAPI NtWaitLowEventPair(HANDLE);
2223NTSYSAPI NTSTATUS WINAPI NtWriteFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,const void*,ULONG,PLARGE_INTEGER,PULONG);
2224NTSYSAPI NTSTATUS WINAPI NtWriteFileGather(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,FILE_SEGMENT_ELEMENT*,ULONG,PLARGE_INTEGER,PULONG);
2225NTSYSAPI NTSTATUS WINAPI NtWriteRequestData(HANDLE,PLPC_MESSAGE,ULONG,PVOID,ULONG,PULONG);
2226NTSYSAPI NTSTATUS WINAPI NtWriteVirtualMemory(HANDLE,void*,const void*,SIZE_T,SIZE_T*);
2227NTSYSAPI NTSTATUS WINAPI NtYieldExecution(void);
2228
2229NTSYSAPI void WINAPI RtlAcquirePebLock(void);
2230NTSYSAPI BYTE WINAPI RtlAcquireResourceExclusive(LPRTL_RWLOCK,BYTE);
2231NTSYSAPI BYTE WINAPI RtlAcquireResourceShared(LPRTL_RWLOCK,BYTE);
2232NTSYSAPI NTSTATUS WINAPI RtlActivateActivationContext(DWORD,HANDLE,ULONG_PTR*);
2233NTSYSAPI NTSTATUS WINAPI RtlAddAce(PACL,DWORD,DWORD,PACE_HEADER,DWORD);
2234NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAce(PACL,DWORD,DWORD,PSID);
2235NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
2236NTSYSAPI NTSTATUS WINAPI RtlAddAccessDeniedAce(PACL,DWORD,DWORD,PSID);
2237NTSYSAPI NTSTATUS WINAPI RtlAddAccessDeniedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
2238NTSYSAPI NTSTATUS WINAPI RtlAddAtomToAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*);
2239NTSYSAPI NTSTATUS WINAPI RtlAddAuditAccessAce(PACL,DWORD,DWORD,PSID,BOOL,BOOL);
2240NTSYSAPI NTSTATUS WINAPI RtlAddAuditAccessAceEx(PACL,DWORD,DWORD,DWORD,PSID,BOOL,BOOL);
2241NTSYSAPI void WINAPI RtlAddRefActivationContext(HANDLE);
2242NTSYSAPI PVOID WINAPI RtlAddVectoredExceptionHandler(ULONG,PVECTORED_EXCEPTION_HANDLER);
2243NTSYSAPI NTSTATUS WINAPI RtlAdjustPrivilege(ULONG,BOOLEAN,BOOLEAN,PBOOLEAN);
2244NTSYSAPI NTSTATUS WINAPI RtlAllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PSID *);
2245NTSYSAPI RTL_HANDLE * WINAPI RtlAllocateHandle(RTL_HANDLE_TABLE *,ULONG *);
2246NTSYSAPI PVOID WINAPI RtlAllocateHeap(HANDLE,ULONG,SIZE_T) __WINE_ALLOC_SIZE(3);
2247NTSYSAPI WCHAR WINAPI RtlAnsiCharToUnicodeChar(LPSTR *);
2248NTSYSAPI DWORD WINAPI RtlAnsiStringToUnicodeSize(const STRING *);
2249NTSYSAPI NTSTATUS WINAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING,PCANSI_STRING,BOOLEAN);
2250NTSYSAPI NTSTATUS WINAPI RtlAppendAsciizToString(STRING *,LPCSTR);
2251NTSYSAPI NTSTATUS WINAPI RtlAppendStringToString(STRING *,const STRING *);
2252NTSYSAPI NTSTATUS WINAPI RtlAppendUnicodeStringToString(UNICODE_STRING *,const UNICODE_STRING *);
2253NTSYSAPI NTSTATUS WINAPI RtlAppendUnicodeToString(UNICODE_STRING *,LPCWSTR);
2254NTSYSAPI BOOLEAN WINAPI RtlAreAllAccessesGranted(ACCESS_MASK,ACCESS_MASK);
2255NTSYSAPI BOOLEAN WINAPI RtlAreAnyAccessesGranted(ACCESS_MASK,ACCESS_MASK);
2256NTSYSAPI BOOLEAN WINAPI RtlAreBitsSet(PCRTL_BITMAP,ULONG,ULONG);
2257NTSYSAPI BOOLEAN WINAPI RtlAreBitsClear(PCRTL_BITMAP,ULONG,ULONG);
2258NTSYSAPI NTSTATUS WINAPI RtlCharToInteger(PCSZ,ULONG,PULONG);
2259NTSYSAPI NTSTATUS WINAPI RtlCheckRegistryKey(ULONG, PWSTR);
2260NTSYSAPI void WINAPI RtlClearAllBits(PRTL_BITMAP);
2261NTSYSAPI void WINAPI RtlClearBits(PRTL_BITMAP,ULONG,ULONG);
2262NTSYSAPI NTSTATUS WINAPI RtlCreateActivationContext(HANDLE*,const void*);
2263NTSYSAPI PDEBUG_BUFFER WINAPI RtlCreateQueryDebugBuffer(ULONG,BOOLEAN);
2264NTSYSAPI ULONG WINAPI RtlCompactHeap(HANDLE,ULONG);
2265NTSYSAPI LONG WINAPI RtlCompareString(const STRING*,const STRING*,BOOLEAN);
2266NTSYSAPI LONG WINAPI RtlCompareUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
2267NTSYSAPI NTSTATUS WINAPI RtlCompressBuffer(USHORT,PUCHAR,ULONG,PUCHAR,ULONG,ULONG,PULONG,PVOID);
2268NTSYSAPI DWORD WINAPI RtlComputeCrc32(DWORD,const BYTE*,INT);
2269NTSYSAPI NTSTATUS WINAPI RtlConvertSidToUnicodeString(PUNICODE_STRING,PSID,BOOLEAN);
2270NTSYSAPI LONGLONG WINAPI RtlConvertLongToLargeInteger(LONG);
2271NTSYSAPI ULONGLONG WINAPI RtlConvertUlongToLargeInteger(ULONG);
2272NTSYSAPI void WINAPI RtlCopyLuid(PLUID,const LUID*);
2273NTSYSAPI void WINAPI RtlCopyLuidAndAttributesArray(ULONG,const LUID_AND_ATTRIBUTES*,PLUID_AND_ATTRIBUTES);
2274NTSYSAPI BOOLEAN WINAPI RtlCopySid(DWORD,PSID,PSID);
2275NTSYSAPI NTSTATUS WINAPI RtlCopySecurityDescriptor(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR);
2276NTSYSAPI void WINAPI RtlCopyString(STRING*,const STRING*);
2277NTSYSAPI void WINAPI RtlCopyUnicodeString(UNICODE_STRING*,const UNICODE_STRING*);
2278NTSYSAPI NTSTATUS WINAPI RtlCreateAcl(PACL,DWORD,DWORD);
2279NTSYSAPI NTSTATUS WINAPI RtlCreateAtomTable(ULONG,RTL_ATOM_TABLE*);
2280NTSYSAPI NTSTATUS WINAPI RtlCreateEnvironment(BOOLEAN, PWSTR*);
2281NTSYSAPI HANDLE WINAPI RtlCreateHeap(ULONG,PVOID,SIZE_T,SIZE_T,PVOID,PRTL_HEAP_DEFINITION);
2282NTSYSAPI 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*);
2283NTSYSAPI NTSTATUS WINAPI RtlCreateSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD);
2284NTSYSAPI NTSTATUS WINAPI RtlCreateTimerQueue(PHANDLE);
2285NTSYSAPI NTSTATUS WINAPI RtlCreateTimer(PHANDLE, HANDLE, RTL_WAITORTIMERCALLBACKFUNC, PVOID, DWORD, DWORD, ULONG);
2286NTSYSAPI BOOLEAN WINAPI RtlCreateUnicodeString(PUNICODE_STRING,LPCWSTR);
2287NTSYSAPI BOOLEAN WINAPI RtlCreateUnicodeStringFromAsciiz(PUNICODE_STRING,LPCSTR);
2288NTSYSAPI NTSTATUS WINAPI RtlCreateUserThread(HANDLE,const SECURITY_DESCRIPTOR*,BOOLEAN,PVOID,SIZE_T,SIZE_T,PRTL_THREAD_START_ROUTINE,void*,HANDLE*,CLIENT_ID*);
2289NTSYSAPI void WINAPI RtlDeactivateActivationContext(DWORD,ULONG_PTR);
2290NTSYSAPI NTSTATUS WINAPI RtlDecompressBuffer(USHORT,PUCHAR,ULONG,PUCHAR,ULONG,PULONG);
2291NTSYSAPI NTSTATUS WINAPI RtlDeleteAce(PACL,DWORD);
2292NTSYSAPI NTSTATUS WINAPI RtlDeleteAtomFromAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
2293NTSYSAPI NTSTATUS WINAPI RtlDeleteCriticalSection(RTL_CRITICAL_SECTION *);
2294NTSYSAPI NTSTATUS WINAPI RtlDeleteRegistryValue(ULONG, PCWSTR, PCWSTR);
2295NTSYSAPI void WINAPI RtlDeleteResource(LPRTL_RWLOCK);
2296NTSYSAPI NTSTATUS WINAPI RtlDeleteSecurityObject(PSECURITY_DESCRIPTOR*);
2297NTSYSAPI NTSTATUS WINAPI RtlDeleteTimer(HANDLE, HANDLE, HANDLE);
2298NTSYSAPI NTSTATUS WINAPI RtlDeleteTimerQueueEx(HANDLE, HANDLE);
2299NTSYSAPI PRTL_USER_PROCESS_PARAMETERS WINAPI RtlDeNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
2300NTSYSAPI NTSTATUS WINAPI RtlDeregisterWait(HANDLE);
2301NTSYSAPI NTSTATUS WINAPI RtlDeregisterWaitEx(HANDLE,HANDLE);
2302NTSYSAPI NTSTATUS WINAPI RtlDestroyAtomTable(RTL_ATOM_TABLE);
2303NTSYSAPI NTSTATUS WINAPI RtlDestroyEnvironment(PWSTR);
2304NTSYSAPI NTSTATUS WINAPI RtlDestroyHandleTable(RTL_HANDLE_TABLE *);
2305NTSYSAPI HANDLE WINAPI RtlDestroyHeap(HANDLE);
2306NTSYSAPI void WINAPI RtlDestroyProcessParameters(RTL_USER_PROCESS_PARAMETERS*);
2307NTSYSAPI NTSTATUS WINAPI RtlDestroyQueryDebugBuffer(PDEBUG_BUFFER);
2308NTSYSAPI DOS_PATHNAME_TYPE WINAPI RtlDetermineDosPathNameType_U(PCWSTR);
2309NTSYSAPI BOOLEAN WINAPI RtlDllShutdownInProgress(void);
2310NTSYSAPI BOOLEAN WINAPI RtlDoesFileExists_U(LPCWSTR);
2311NTSYSAPI BOOLEAN WINAPI RtlDosPathNameToNtPathName_U(PCWSTR,PUNICODE_STRING,PWSTR*,CURDIR*);
2312NTSYSAPI ULONG WINAPI RtlDosSearchPath_U(LPCWSTR, LPCWSTR, LPCWSTR, ULONG, LPWSTR, LPWSTR*);
2313NTSYSAPI WCHAR WINAPI RtlDowncaseUnicodeChar(WCHAR);
2314NTSYSAPI NTSTATUS WINAPI RtlDowncaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
2315NTSYSAPI void WINAPI RtlDumpResource(LPRTL_RWLOCK);
2316NTSYSAPI NTSTATUS WINAPI RtlDuplicateUnicodeString(int,const UNICODE_STRING*,UNICODE_STRING*);
2317NTSYSAPI NTSTATUS WINAPI RtlEmptyAtomTable(RTL_ATOM_TABLE,BOOLEAN);
2318NTSYSAPI LONGLONG WINAPI RtlEnlargedIntegerMultiply(INT,INT);
2319NTSYSAPI ULONGLONG WINAPI RtlEnlargedUnsignedMultiply(UINT,UINT);
2320NTSYSAPI UINT WINAPI RtlEnlargedUnsignedDivide(ULONGLONG,UINT,UINT *);
2321NTSYSAPI NTSTATUS WINAPI RtlEnterCriticalSection(RTL_CRITICAL_SECTION *);
2322NTSYSAPI void WINAPI RtlEraseUnicodeString(UNICODE_STRING*);
2323NTSYSAPI NTSTATUS WINAPI RtlEqualComputerName(const UNICODE_STRING*,const UNICODE_STRING*);
2324NTSYSAPI NTSTATUS WINAPI RtlEqualDomainName(const UNICODE_STRING*,const UNICODE_STRING*);
2325NTSYSAPI BOOLEAN WINAPI RtlEqualLuid(const LUID*,const LUID*);
2326NTSYSAPI BOOL WINAPI RtlEqualPrefixSid(PSID,PSID);
2327NTSYSAPI BOOL WINAPI RtlEqualSid(PSID,PSID);
2328NTSYSAPI BOOLEAN WINAPI RtlEqualString(const STRING*,const STRING*,BOOLEAN);
2329NTSYSAPI BOOLEAN WINAPI RtlEqualUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
2330NTSYSAPI void DECLSPEC_NORETURN WINAPI RtlExitUserThread(ULONG);
2331NTSYSAPI NTSTATUS WINAPI RtlExpandEnvironmentStrings_U(PCWSTR, const UNICODE_STRING*, UNICODE_STRING*, ULONG*);
2332NTSYSAPI LONGLONG WINAPI RtlExtendedMagicDivide(LONGLONG,LONGLONG,INT);
2333NTSYSAPI LONGLONG WINAPI RtlExtendedIntegerMultiply(LONGLONG,INT);
2334NTSYSAPI LONGLONG WINAPI RtlExtendedLargeIntegerDivide(LONGLONG,INT,INT *);
2335NTSYSAPI NTSTATUS WINAPI RtlFindActivationContextSectionString(ULONG,const GUID*,ULONG,const UNICODE_STRING*,PVOID);
2336NTSYSAPI NTSTATUS WINAPI RtlFindCharInUnicodeString(int,const UNICODE_STRING*,const UNICODE_STRING*,USHORT*);
2337NTSYSAPI ULONG WINAPI RtlFindClearBits(PCRTL_BITMAP,ULONG,ULONG);
2338NTSYSAPI ULONG WINAPI RtlFindClearBitsAndSet(PRTL_BITMAP,ULONG,ULONG);
2339NTSYSAPI ULONG WINAPI RtlFindClearRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
2340NTSYSAPI ULONG WINAPI RtlFindLastBackwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
2341NTSYSAPI ULONG WINAPI RtlFindLastBackwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
2342NTSYSAPI CCHAR WINAPI RtlFindLeastSignificantBit(ULONGLONG);
2343NTSYSAPI ULONG WINAPI RtlFindLongestRunSet(PCRTL_BITMAP,PULONG);
2344NTSYSAPI ULONG WINAPI RtlFindLongestRunClear(PCRTL_BITMAP,PULONG);
2345NTSYSAPI NTSTATUS WINAPI RtlFindMessage(HMODULE,ULONG,ULONG,ULONG,const MESSAGE_RESOURCE_ENTRY**);
2346NTSYSAPI CCHAR WINAPI RtlFindMostSignificantBit(ULONGLONG);
2347NTSYSAPI ULONG WINAPI RtlFindNextForwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
2348NTSYSAPI ULONG WINAPI RtlFindNextForwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
2349NTSYSAPI ULONG WINAPI RtlFindSetBits(PCRTL_BITMAP,ULONG,ULONG);
2350NTSYSAPI ULONG WINAPI RtlFindSetBitsAndClear(PRTL_BITMAP,ULONG,ULONG);
2351NTSYSAPI ULONG WINAPI RtlFindSetRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
2352NTSYSAPI BOOLEAN WINAPI RtlFirstFreeAce(PACL,PACE_HEADER *);
2353NTSYSAPI NTSTATUS WINAPI RtlFormatCurrentUserKeyPath(PUNICODE_STRING);
2354NTSYSAPI NTSTATUS WINAPI RtlFormatMessage(LPWSTR,UCHAR,BOOLEAN,BOOLEAN,BOOLEAN,__ms_va_list *,LPWSTR,ULONG);
2355NTSYSAPI void WINAPI RtlFreeAnsiString(PANSI_STRING);
2356NTSYSAPI BOOLEAN WINAPI RtlFreeHandle(RTL_HANDLE_TABLE *,RTL_HANDLE *);
2357NTSYSAPI BOOLEAN WINAPI RtlFreeHeap(HANDLE,ULONG,PVOID);
2358NTSYSAPI void WINAPI RtlFreeOemString(POEM_STRING);
2359NTSYSAPI DWORD WINAPI RtlFreeSid(PSID);
2360NTSYSAPI void WINAPI RtlFreeThreadActivationContextStack(void);
2361NTSYSAPI void WINAPI RtlFreeUnicodeString(PUNICODE_STRING);
2362NTSYSAPI NTSTATUS WINAPI RtlGetAce(PACL,DWORD,LPVOID *);
2363NTSYSAPI NTSTATUS WINAPI RtlGetActiveActivationContext(HANDLE*);
2364NTSYSAPI NTSTATUS WINAPI RtlGetCompressionWorkSpaceSize(USHORT,PULONG,PULONG);
2365NTSYSAPI NTSTATUS WINAPI RtlGetControlSecurityDescriptor(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL,LPDWORD);
2366NTSYSAPI NTSTATUS WINAPI RtlGetCurrentDirectory_U(ULONG, LPWSTR);
2367NTSYSAPI PEB * WINAPI RtlGetCurrentPeb(void);
2368NTSYSAPI NTSTATUS WINAPI RtlGetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
2369NTSYSAPI ULONG WINAPI RtlGetFullPathName_U(PCWSTR,ULONG,PWSTR,PWSTR*);
2370NTSYSAPI NTSTATUS WINAPI RtlGetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
2371NTSYSAPI NTSTATUS WINAPI RtlGetLastNtStatus(void);
2372NTSYSAPI DWORD WINAPI RtlGetLastWin32Error(void);
2373NTSYSAPI DWORD WINAPI RtlGetLongestNtPathLength(void);
2374NTSYSAPI BOOLEAN WINAPI RtlGetNtProductType(LPDWORD);
2375NTSYSAPI NTSTATUS WINAPI RtlGetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
2376NTSYSAPI ULONG WINAPI RtlGetProcessHeaps(ULONG,HANDLE*);
2377NTSYSAPI NTSTATUS WINAPI RtlGetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
2378NTSYSAPI NTSTATUS WINAPI RtlGetVersion(RTL_OSVERSIONINFOEXW*);
2379NTSYSAPI NTSTATUS WINAPI RtlGUIDFromString(PUNICODE_STRING,GUID*);
2380NTSYSAPI PSID_IDENTIFIER_AUTHORITY WINAPI RtlIdentifierAuthoritySid(PSID);
2381NTSYSAPI PVOID WINAPI RtlImageDirectoryEntryToData(HMODULE,BOOL,WORD,ULONG *);
2382NTSYSAPI PIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE);
2383NTSYSAPI PIMAGE_SECTION_HEADER WINAPI RtlImageRvaToSection(const IMAGE_NT_HEADERS *,HMODULE,DWORD);
2384NTSYSAPI PVOID WINAPI RtlImageRvaToVa(const IMAGE_NT_HEADERS *,HMODULE,DWORD,IMAGE_SECTION_HEADER **);
2385NTSYSAPI NTSTATUS WINAPI RtlImpersonateSelf(SECURITY_IMPERSONATION_LEVEL);
2386NTSYSAPI void WINAPI RtlInitString(PSTRING,PCSZ);
2387NTSYSAPI void WINAPI RtlInitAnsiString(PANSI_STRING,PCSZ);
2388NTSYSAPI NTSTATUS WINAPI RtlInitAnsiStringEx(PANSI_STRING,PCSZ);
2389NTSYSAPI void WINAPI RtlInitUnicodeString(PUNICODE_STRING,PCWSTR);
2390NTSYSAPI NTSTATUS WINAPI RtlInitUnicodeStringEx(PUNICODE_STRING,PCWSTR);
2391NTSYSAPI NTSTATUS WINAPI RtlInitializeCriticalSection(RTL_CRITICAL_SECTION *);
2392NTSYSAPI NTSTATUS WINAPI RtlInitializeCriticalSectionAndSpinCount(RTL_CRITICAL_SECTION *,ULONG);
2393NTSYSAPI NTSTATUS WINAPI RtlInitializeCriticalSectionEx(RTL_CRITICAL_SECTION *,ULONG,ULONG);
2394NTSYSAPI void WINAPI RtlInitializeBitMap(PRTL_BITMAP,PULONG,ULONG);
2395NTSYSAPI void WINAPI RtlInitializeHandleTable(ULONG,ULONG,RTL_HANDLE_TABLE *);
2396NTSYSAPI void WINAPI RtlInitializeResource(LPRTL_RWLOCK);
2397NTSYSAPI BOOL WINAPI RtlInitializeSid(PSID,PSID_IDENTIFIER_AUTHORITY,BYTE);
2398NTSYSAPI NTSTATUS WINAPI RtlInt64ToUnicodeString(ULONGLONG,ULONG,UNICODE_STRING *);
2399NTSYSAPI NTSTATUS WINAPI RtlIntegerToChar(ULONG,ULONG,ULONG,PCHAR);
2400NTSYSAPI NTSTATUS WINAPI RtlIntegerToUnicodeString(ULONG,ULONG,UNICODE_STRING *);
2401NTSYSAPI BOOLEAN WINAPI RtlIsActivationContextActive(HANDLE);
2402NTSYSAPI ULONG WINAPI RtlIsDosDeviceName_U(PCWSTR);
2403NTSYSAPI BOOLEAN WINAPI RtlIsNameLegalDOS8Dot3(const UNICODE_STRING*,POEM_STRING,PBOOLEAN);
2404NTSYSAPI BOOLEAN WINAPI RtlIsTextUnicode(LPCVOID,INT,INT *);
2405NTSYSAPI BOOLEAN WINAPI RtlIsValidHandle(const RTL_HANDLE_TABLE *, const RTL_HANDLE *);
2406NTSYSAPI BOOLEAN WINAPI RtlIsValidIndexHandle(const RTL_HANDLE_TABLE *, ULONG Index, RTL_HANDLE **);
2407NTSYSAPI LONGLONG WINAPI RtlLargeIntegerAdd(LONGLONG,LONGLONG);
2408NTSYSAPI LONGLONG WINAPI RtlLargeIntegerArithmeticShift(LONGLONG,INT);
2409NTSYSAPI ULONGLONG WINAPI RtlLargeIntegerDivide( ULONGLONG,ULONGLONG,ULONGLONG *);
2410NTSYSAPI LONGLONG WINAPI RtlLargeIntegerNegate(LONGLONG);
2411NTSYSAPI LONGLONG WINAPI RtlLargeIntegerShiftLeft(LONGLONG,INT);
2412NTSYSAPI LONGLONG WINAPI RtlLargeIntegerShiftRight(LONGLONG,INT);
2413NTSYSAPI LONGLONG WINAPI RtlLargeIntegerSubtract(LONGLONG,LONGLONG);
2414NTSYSAPI NTSTATUS WINAPI RtlLargeIntegerToChar(const ULONGLONG *,ULONG,ULONG,PCHAR);
2415NTSYSAPI NTSTATUS WINAPI RtlLeaveCriticalSection(RTL_CRITICAL_SECTION *);
2416NTSYSAPI DWORD WINAPI RtlLengthRequiredSid(DWORD);
2417NTSYSAPI ULONG WINAPI RtlLengthSecurityDescriptor(PSECURITY_DESCRIPTOR);
2418NTSYSAPI DWORD WINAPI RtlLengthSid(PSID);
2419NTSYSAPI NTSTATUS WINAPI RtlLocalTimeToSystemTime(const LARGE_INTEGER*,PLARGE_INTEGER);
2420NTSYSAPI BOOLEAN WINAPI RtlLockHeap(HANDLE);
2421NTSYSAPI NTSTATUS WINAPI RtlLookupAtomInAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*);
2422NTSYSAPI NTSTATUS WINAPI RtlMakeSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,LPDWORD);
2423NTSYSAPI void WINAPI RtlMapGenericMask(PACCESS_MASK,const GENERIC_MAPPING*);
2424NTSYSAPI NTSTATUS WINAPI RtlMultiByteToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
2425NTSYSAPI NTSTATUS WINAPI RtlMultiByteToUnicodeSize(DWORD*,LPCSTR,UINT);
2426NTSYSAPI NTSTATUS WINAPI RtlNewSecurityObject(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,BOOLEAN,HANDLE,PGENERIC_MAPPING);
2427NTSYSAPI PRTL_USER_PROCESS_PARAMETERS WINAPI RtlNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
2428NTSYSAPI ULONG WINAPI RtlNtStatusToDosError(NTSTATUS);
2429NTSYSAPI ULONG WINAPI RtlNtStatusToDosErrorNoTeb(NTSTATUS);
2430NTSYSAPI ULONG WINAPI RtlNumberOfSetBits(PCRTL_BITMAP);
2431NTSYSAPI ULONG WINAPI RtlNumberOfClearBits(PCRTL_BITMAP);
2432NTSYSAPI UINT WINAPI RtlOemStringToUnicodeSize(const STRING*);
2433NTSYSAPI NTSTATUS WINAPI RtlOemStringToUnicodeString(UNICODE_STRING*,const STRING*,BOOLEAN);
2434NTSYSAPI NTSTATUS WINAPI RtlOemToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
2435NTSYSAPI NTSTATUS WINAPI RtlOpenCurrentUser(ACCESS_MASK,PHANDLE);
2436NTSYSAPI PVOID WINAPI RtlPcToFileHeader(PVOID,PVOID*);
2437NTSYSAPI NTSTATUS WINAPI RtlPinAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
2438NTSYSAPI BOOLEAN WINAPI RtlPrefixString(const STRING*,const STRING*,BOOLEAN);
2439NTSYSAPI BOOLEAN WINAPI RtlPrefixUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
2440NTSYSAPI NTSTATUS WINAPI RtlQueryAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM,ULONG*,ULONG*,WCHAR*,ULONG*);
2441NTSYSAPI NTSTATUS WINAPI RtlQueryEnvironmentVariable_U(PWSTR,PUNICODE_STRING,PUNICODE_STRING);
2442NTSYSAPI NTSTATUS WINAPI RtlQueryInformationAcl(PACL,LPVOID,DWORD,ACL_INFORMATION_CLASS);
2443NTSYSAPI NTSTATUS WINAPI RtlQueryInformationActivationContext(ULONG,HANDLE,PVOID,ULONG,PVOID,SIZE_T,SIZE_T*);
2444NTSYSAPI NTSTATUS WINAPI RtlQueryProcessDebugInformation(ULONG,ULONG,PDEBUG_BUFFER);
2445NTSYSAPI NTSTATUS WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID);
2446NTSYSAPI NTSTATUS WINAPI RtlQueryTimeZoneInformation(RTL_TIME_ZONE_INFORMATION*);
2447NTSYSAPI NTSTATUS WINAPI RtlQueueWorkItem(PRTL_WORK_ITEM_ROUTINE,PVOID,ULONG);
2448NTSYSAPI void WINAPI RtlRaiseException(PEXCEPTION_RECORD);
2449NTSYSAPI void WINAPI RtlRaiseStatus(NTSTATUS);
2450NTSYSAPI ULONG WINAPI RtlRandom(PULONG);
2451NTSYSAPI PVOID WINAPI RtlReAllocateHeap(HANDLE,ULONG,PVOID,SIZE_T);
2452NTSYSAPI NTSTATUS WINAPI RtlRegisterWait(PHANDLE,HANDLE,RTL_WAITORTIMERCALLBACKFUNC,PVOID,ULONG,ULONG);
2453NTSYSAPI void WINAPI RtlReleaseActivationContext(HANDLE);
2454NTSYSAPI void WINAPI RtlReleasePebLock(void);
2455NTSYSAPI void WINAPI RtlReleaseResource(LPRTL_RWLOCK);
2456NTSYSAPI ULONG WINAPI RtlRemoveVectoredExceptionHandler(PVOID);
2457NTSYSAPI void WINAPI RtlRestoreLastWin32Error(DWORD);
2458NTSYSAPI void WINAPI RtlSecondsSince1970ToTime(DWORD,LARGE_INTEGER *);
2459NTSYSAPI void WINAPI RtlSecondsSince1980ToTime(DWORD,LARGE_INTEGER *);
2460NTSYSAPI NTSTATUS WINAPI RtlSelfRelativeToAbsoluteSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PDWORD,PACL,PDWORD,PACL,PDWORD,PSID,PDWORD,PSID,PDWORD);
2461NTSYSAPI void WINAPI RtlSetAllBits(PRTL_BITMAP);
2462NTSYSAPI void WINAPI RtlSetBits(PRTL_BITMAP,ULONG,ULONG);
2463NTSYSAPI ULONG WINAPI RtlSetCriticalSectionSpinCount(RTL_CRITICAL_SECTION*,ULONG);
2464NTSYSAPI NTSTATUS WINAPI RtlSetControlSecurityDescriptor(PSECURITY_DESCRIPTOR,SECURITY_DESCRIPTOR_CONTROL,SECURITY_DESCRIPTOR_CONTROL);
2465NTSYSAPI NTSTATUS WINAPI RtlSetCurrentDirectory_U(const UNICODE_STRING*);
2466NTSYSAPI void WINAPI RtlSetCurrentEnvironment(PWSTR, PWSTR*);
2467NTSYSAPI NTSTATUS WINAPI RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
2468NTSYSAPI NTSTATUS WINAPI RtlSetEnvironmentVariable(PWSTR*,PUNICODE_STRING,PUNICODE_STRING);
2469NTSYSAPI NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
2470NTSYSAPI NTSTATUS WINAPI RtlSetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
2471NTSYSAPI NTSTATUS WINAPI RtlSetIoCompletionCallback(HANDLE,PRTL_OVERLAPPED_COMPLETION_ROUTINE,ULONG);
2472NTSYSAPI void WINAPI RtlSetLastWin32Error(DWORD);
2473NTSYSAPI void WINAPI RtlSetLastWin32ErrorAndNtStatusFromNtStatus(NTSTATUS);
2474NTSYSAPI NTSTATUS WINAPI RtlSetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
2475NTSYSAPI NTSTATUS WINAPI RtlSetTimeZoneInformation(const RTL_TIME_ZONE_INFORMATION*);
2476NTSYSAPI SIZE_T WINAPI RtlSizeHeap(HANDLE,ULONG,const void*);
2477NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID,PUNICODE_STRING);
2478NTSYSAPI LPDWORD WINAPI RtlSubAuthoritySid(PSID,DWORD);
2479NTSYSAPI LPBYTE WINAPI RtlSubAuthorityCountSid(PSID);
2480NTSYSAPI NTSTATUS WINAPI RtlSystemTimeToLocalTime(const LARGE_INTEGER*,PLARGE_INTEGER);
2481NTSYSAPI void WINAPI RtlTimeToTimeFields(const LARGE_INTEGER*,PTIME_FIELDS);
2482NTSYSAPI BOOLEAN WINAPI RtlTimeFieldsToTime(PTIME_FIELDS,PLARGE_INTEGER);
2483NTSYSAPI void WINAPI RtlTimeToElapsedTimeFields(const LARGE_INTEGER *,PTIME_FIELDS);
2484NTSYSAPI BOOLEAN WINAPI RtlTimeToSecondsSince1970(const LARGE_INTEGER *,LPDWORD);
2485NTSYSAPI BOOLEAN WINAPI RtlTimeToSecondsSince1980(const LARGE_INTEGER *,LPDWORD);
2486NTSYSAPI BOOL WINAPI RtlTryEnterCriticalSection(RTL_CRITICAL_SECTION *);
2487NTSYSAPI ULONGLONG __cdecl RtlUlonglongByteSwap(ULONGLONG);
2488NTSYSAPI DWORD WINAPI RtlUnicodeStringToAnsiSize(const UNICODE_STRING*);
2489NTSYSAPI NTSTATUS WINAPI RtlUnicodeStringToAnsiString(PANSI_STRING,PCUNICODE_STRING,BOOLEAN);
2490NTSYSAPI NTSTATUS WINAPI RtlUnicodeStringToInteger(const UNICODE_STRING *,ULONG,ULONG *);
2491NTSYSAPI DWORD WINAPI RtlUnicodeStringToOemSize(const UNICODE_STRING*);
2492NTSYSAPI NTSTATUS WINAPI RtlUnicodeStringToOemString(POEM_STRING,PCUNICODE_STRING,BOOLEAN);
2493NTSYSAPI NTSTATUS WINAPI RtlUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2494NTSYSAPI NTSTATUS WINAPI RtlUnicodeToMultiByteSize(PULONG,PCWSTR,ULONG);
2495NTSYSAPI NTSTATUS WINAPI RtlUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2496NTSYSAPI ULONG WINAPI RtlUniform(PULONG);
2497NTSYSAPI BOOLEAN WINAPI RtlUnlockHeap(HANDLE);
2498NTSYSAPI void WINAPI RtlUnwind(PVOID,PVOID,PEXCEPTION_RECORD,PVOID);
2499#ifdef __ia64__
2500NTSYSAPI void WINAPI RtlUnwind2(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT);
2501NTSYSAPI void WINAPI RtlUnwindEx(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT,PUNWIND_HISTORY_TABLE);
2502#endif
2503NTSYSAPI WCHAR WINAPI RtlUpcaseUnicodeChar(WCHAR);
2504NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING *,BOOLEAN);
2505NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToAnsiString(STRING*,const UNICODE_STRING*,BOOLEAN);
2506NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToCountedOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
2507NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
2508NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2509NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2510NTSYSAPI NTSTATUS WINAPI RtlUpdateTimer(HANDLE, HANDLE, DWORD, DWORD);
2511NTSYSAPI CHAR WINAPI RtlUpperChar(CHAR);
2512NTSYSAPI void WINAPI RtlUpperString(STRING *,const STRING *);
2513NTSYSAPI NTSTATUS WINAPI RtlValidSecurityDescriptor(PSECURITY_DESCRIPTOR);
2514NTSYSAPI BOOLEAN WINAPI RtlValidAcl(PACL);
2515NTSYSAPI BOOLEAN WINAPI RtlValidSid(PSID);
2516NTSYSAPI BOOLEAN WINAPI RtlValidateHeap(HANDLE,ULONG,LPCVOID);
2517NTSYSAPI NTSTATUS WINAPI RtlVerifyVersionInfo(const RTL_OSVERSIONINFOEXW*,DWORD,DWORDLONG);
2518NTSYSAPI NTSTATUS WINAPI RtlWalkHeap(HANDLE,PVOID);
2519NTSYSAPI NTSTATUS WINAPI RtlWriteRegistryValue(ULONG,PCWSTR,PCWSTR,ULONG,PVOID,ULONG);
2520NTSYSAPI NTSTATUS WINAPI RtlpNtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
2521NTSYSAPI NTSTATUS WINAPI RtlpNtEnumerateSubKey(HANDLE,UNICODE_STRING *, ULONG);
2522NTSYSAPI NTSTATUS WINAPI RtlpWaitForCriticalSection(RTL_CRITICAL_SECTION *);
2523NTSYSAPI NTSTATUS WINAPI RtlpUnWaitCriticalSection(RTL_CRITICAL_SECTION *);
2524NTSYSAPI NTSTATUS WINAPI vDbgPrintEx(ULONG,ULONG,LPCSTR,__ms_va_list);
2525NTSYSAPI NTSTATUS WINAPI vDbgPrintExWithPrefix(LPCSTR,ULONG,ULONG,LPCSTR,__ms_va_list);
2526
2527/* Wine internal functions */
2528
2529NTSYSAPI NTSTATUS CDECL wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRING *unix_name_ret,
2530 UINT disposition, BOOLEAN check_case );
2531NTSYSAPI NTSTATUS CDECL wine_unix_to_nt_file_name( const ANSI_STRING *name, UNICODE_STRING *nt );
2532
2533
2534/***********************************************************************
2535 * Inline functions
2536 */
2537
2538#define InitializeObjectAttributes(p,n,a,r,s) \
2539 do { \
2540 (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
2541 (p)->RootDirectory = r; \
2542 (p)->Attributes = a; \
2543 (p)->ObjectName = n; \
2544 (p)->SecurityDescriptor = s; \
2545 (p)->SecurityQualityOfService = NULL; \
2546 } while (0)
2547
2548#define NtCurrentProcess() ((HANDLE)-1)
2549
2550#define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length))
2551#define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length))
2552#define RtlStoreUlong(p,v) do { ULONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
2553#define RtlStoreUlonglong(p,v) do { ULONGLONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
2554#define RtlRetrieveUlong(p,s) memcpy((p), (s), sizeof(ULONG))
2555#define RtlRetrieveUlonglong(p,s) memcpy((p), (s), sizeof(ULONGLONG))
2556#define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))
2557
2558static inline BOOLEAN RtlCheckBit(PCRTL_BITMAP lpBits, ULONG ulBit)
2559{
2560 if (lpBits && ulBit < lpBits->SizeOfBitMap &&
2561 lpBits->Buffer[ulBit >> 5] & (1 << (ulBit & 31)))
2562 return TRUE;
2563 return FALSE;
2564}
2565
2566/* These are implemented as __fastcall, so we can't let Winelib apps link with them */
2567static inline USHORT RtlUshortByteSwap(USHORT s)
2568{
2569 return (s >> 8) | (s << 8);
2570}
2571static inline ULONG RtlUlongByteSwap(ULONG i)
2572{
2573#if defined(__i386__) && defined(__GNUC__)
2574 ULONG ret;
2575 __asm__("bswap %0" : "=r" (ret) : "0" (i) );
2576 return ret;
2577#else
2578 return ((ULONG)RtlUshortByteSwap((USHORT)i) << 16) | RtlUshortByteSwap((USHORT)(i >> 16));
2579#endif
2580}
2581
2582/* list manipulation macros */
2583#define InitializeListHead(le) (void)((le)->Flink = (le)->Blink = (le))
2584#define InsertHeadList(le,e) do { PLIST_ENTRY f = (le)->Flink; (e)->Flink = f; (e)->Blink = (le); f->Blink = (e); (le)->Flink = (e); } while (0)
2585#define InsertTailList(le,e) do { PLIST_ENTRY b = (le)->Blink; (e)->Flink = (le); (e)->Blink = b; b->Flink = (e); (le)->Blink = (e); } while (0)
2586#define IsListEmpty(le) ((le)->Flink == (le))
2587#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)
2588static inline PLIST_ENTRY RemoveHeadList(PLIST_ENTRY le)
2589{
2590 PLIST_ENTRY f, b, e;
2591
2592 e = le->Flink;
2593 f = le->Flink->Flink;
2594 b = le->Flink->Blink;
2595 f->Blink = b;
2596 b->Flink = f;
2597
2598 if (e != le) e->Flink = e->Blink = NULL;
2599 return e;
2600}
2601static inline PLIST_ENTRY RemoveTailList(PLIST_ENTRY le)
2602{
2603 PLIST_ENTRY f, b, e;
2604
2605 e = le->Blink;
2606 f = le->Blink->Flink;
2607 b = le->Blink->Blink;
2608 f->Blink = b;
2609 b->Flink = f;
2610
2611 if (e != le) e->Flink = e->Blink = NULL;
2612 return e;
2613}
2614
2615
2616#ifdef __WINESRC__
2617
2618/* FIXME: private structure for vm86 mode, stored in teb->GdiTebBatch */
2619typedef struct
2620{
2621 DWORD dpmi_vif;
2622 DWORD vm86_pending;
2623} WINE_VM86_TEB_INFO;
2624
2625static inline WINE_VM86_TEB_INFO *get_vm86_teb_info(void)
2626{
2627 return (WINE_VM86_TEB_INFO *)&NtCurrentTeb()->GdiTebBatch;
2628}
2629
2630/* The thread information for 16-bit threads */
2631/* NtCurrentTeb()->SubSystemTib points to this */
2632typedef struct
2633{
2634 void *unknown; /* 00 unknown */
2635 UNICODE_STRING *exe_name; /* 04 exe module name */
2636
2637 /* the following fields do not exist under Windows */
2638 UNICODE_STRING exe_str; /* exe name string pointed to by exe_name */
2639 CURDIR curdir; /* current directory */
2640 WCHAR curdir_buffer[MAX_PATH];
2641} WIN16_SUBSYSTEM_TIB;
2642
2643#endif /* __WINESRC__ */
2644
2645#ifdef __cplusplus
2646} /* extern "C" */
2647#endif /* defined(__cplusplus) */
2648
2649#endif /* __WINE_WINTERNL_H */
Note: See TracBrowser for help on using the repository browser.

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