2 * Internal NT APIs and data structures
4 * Copyright (C) the Wine project
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 #ifndef __WINE_WINTERNL_H
22 #define __WINE_WINTERNL_H
28 #endif /* defined(__cplusplus) */
31 /**********************************************************************
32 * Fundamental types and data structures
35 typedef LONG NTSTATUS;
37 typedef CONST char *PCSZ;
40 typedef CSHORT *PCSHORT;
42 typedef struct _STRING {
48 typedef STRING ANSI_STRING;
49 typedef PSTRING PANSI_STRING;
50 typedef const STRING *PCANSI_STRING;
52 typedef STRING OEM_STRING;
53 typedef PSTRING POEM_STRING;
54 typedef const STRING *PCOEM_STRING;
56 typedef struct _UNICODE_STRING {
57 USHORT Length; /* bytes */
58 USHORT MaximumLength; /* bytes */
60 } UNICODE_STRING, *PUNICODE_STRING;
62 typedef const UNICODE_STRING *PCUNICODE_STRING;
66 /* 64 bit number of 100 nanoseconds intervals since January 1, 1601 */
67 typedef struct _FILETIME
69 #ifdef WORDS_BIGENDIAN
76 } FILETIME, *PFILETIME, *LPFILETIME;
77 #endif /* _FILETIME_ */
79 typedef struct _CLIENT_ID
83 } CLIENT_ID, *PCLIENT_ID;
85 typedef struct _CURDIR
87 UNICODE_STRING DosPath;
91 typedef struct RTL_DRIVE_LETTER_CURDIR
96 UNICODE_STRING DosPath;
97 } RTL_DRIVE_LETTER_CURDIR, *PRTL_DRIVE_LETTER_CURDIR;
99 typedef struct tagRTL_BITMAP {
100 ULONG SizeOfBitMap; /* Number of bits in the bitmap */
101 PULONG Buffer; /* Bitmap data, assumed sized to a DWORD boundary */
102 } RTL_BITMAP, *PRTL_BITMAP;
104 typedef const RTL_BITMAP *PCRTL_BITMAP;
106 typedef struct tagRTL_BITMAP_RUN {
107 ULONG StartingIndex; /* Bit position at which run starts */
108 ULONG NumberOfBits; /* Size of the run in bits */
109 } RTL_BITMAP_RUN, *PRTL_BITMAP_RUN;
111 typedef const RTL_BITMAP_RUN *PCRTL_BITMAP_RUN;
113 typedef struct _RTL_USER_PROCESS_PARAMETERS
115 ULONG AllocationSize;
119 HANDLE ConsoleHandle;
124 CURDIR CurrentDirectory;
125 UNICODE_STRING DllPath;
126 UNICODE_STRING ImagePathName;
127 UNICODE_STRING CommandLine;
135 ULONG dwFillAttribute;
138 UNICODE_STRING WindowTitle;
139 UNICODE_STRING Desktop;
140 UNICODE_STRING ShellInfo;
141 UNICODE_STRING RuntimeInfo;
142 RTL_DRIVE_LETTER_CURDIR DLCurrentDirectory[0x20];
143 } RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;
145 /* value for Flags field (FIXME: not the correct name) */
146 #define PROCESS_PARAMS_FLAG_NORMALIZED 1
148 typedef struct _PEB_LDR_DATA
153 LIST_ENTRY InLoadOrderModuleList;
154 LIST_ENTRY InMemoryOrderModuleList;
155 LIST_ENTRY InInitializationOrderModuleList;
156 } PEB_LDR_DATA, *PPEB_LDR_DATA;
158 typedef struct _GDI_TEB_BATCH
165 /***********************************************************************
170 BOOLEAN InheritedAddressSpace; /* 00 */
171 BOOLEAN ReadImageFileExecOptions; /* 01 */
172 BOOLEAN BeingDebugged; /* 02 */
173 BOOLEAN SpareBool; /* 03 */
174 HANDLE Mutant; /* 04 */
175 HMODULE ImageBaseAddress; /* 08 */
176 PPEB_LDR_DATA LdrData; /* 0c */
177 RTL_USER_PROCESS_PARAMETERS *ProcessParameters; /* 10 */
178 PVOID SubSystemData; /* 14 */
179 HANDLE ProcessHeap; /* 18 */
180 PRTL_CRITICAL_SECTION FastPebLock; /* 1c */
181 PVOID /*PPEBLOCKROUTINE*/ FastPebLockRoutine; /* 20 */
182 PVOID /*PPEBLOCKROUTINE*/ FastPebUnlockRoutine; /* 24 */
183 ULONG EnvironmentUpdateCount; /* 28 */
184 PVOID KernelCallbackTable; /* 2c */
185 PVOID EventLogSection; /* 30 */
186 PVOID EventLog; /* 34 */
187 PVOID /*PPEB_FREE_BLOCK*/ FreeList; /* 38 */
188 ULONG TlsExpansionCounter; /* 3c */
189 PRTL_BITMAP TlsBitmap; /* 40 */
190 ULONG TlsBitmapBits[2]; /* 44 */
191 PVOID ReadOnlySharedMemoryBase; /* 4c */
192 PVOID ReadOnlySharedMemoryHeap; /* 50 */
193 PVOID *ReadOnlyStaticServerData; /* 54 */
194 PVOID AnsiCodePageData; /* 58 */
195 PVOID OemCodePageData; /* 5c */
196 PVOID UnicodeCaseTableData; /* 60 */
197 ULONG NumberOfProcessors; /* 64 */
198 ULONG NtGlobalFlag; /* 68 */
199 BYTE Spare2[4]; /* 6c */
200 LARGE_INTEGER CriticalSectionTimeout; /* 70 */
201 ULONG HeapSegmentReserve; /* 78 */
202 ULONG HeapSegmentCommit; /* 7c */
203 ULONG HeapDeCommitTotalFreeThreshold; /* 80 */
204 ULONG HeapDeCommitFreeBlockThreshold; /* 84 */
205 ULONG NumberOfHeaps; /* 88 */
206 ULONG MaximumNumberOfHeaps; /* 8c */
207 PVOID *ProcessHeaps; /* 90 */
208 PVOID GdiSharedHandleTable; /* 94 */
209 PVOID ProcessStarterHelper; /* 98 */
210 PVOID GdiDCAttributeList; /* 9c */
211 PVOID LoaderLock; /* a0 */
212 ULONG OSMajorVersion; /* a4 */
213 ULONG OSMinorVersion; /* a8 */
214 ULONG OSBuildNumber; /* ac */
215 ULONG OSPlatformId; /* b0 */
216 ULONG ImageSubSystem; /* b4 */
217 ULONG ImageSubSystemMajorVersion; /* b8 */
218 ULONG ImageSubSystemMinorVersion; /* bc */
219 ULONG ImageProcessAffinityMask; /* c0 */
220 ULONG GdiHandleBuffer[34]; /* c4 */
221 ULONG PostProcessInitRoutine; /* 14c */
222 PRTL_BITMAP TlsExpansionBitmap; /* 150 */
223 ULONG TlsExpansionBitmapBits[32]; /* 154 */
224 ULONG SessionId; /* 1d4 */
228 /***********************************************************************
231 #ifndef WINE_NO_TEB /* don't define TEB if included from thread.h */
232 # ifndef WINE_TEB_DEFINED
233 # define WINE_TEB_DEFINED
236 NT_TIB Tib; /* 000 */
237 PVOID EnvironmentPointer; /* 01c */
238 CLIENT_ID ClientId; /* 020 */
239 PVOID ActiveRpcHandle; /* 028 */
240 PVOID ThreadLocalStoragePointer; /* 02c */
242 ULONG LastErrorValue; /* 034 */
243 ULONG CountOfOwnedCriticalSections;/* 038 */
244 PVOID CsrClientThread; /* 03c */
245 PVOID Win32ThreadInfo; /* 040 */
246 ULONG Win32ClientInfo[31]; /* 044 used for user32 private data in Wine */
247 PVOID WOW32Reserved; /* 0c0 */
248 ULONG CurrentLocale; /* 0c4 */
249 ULONG FpSoftwareStatusRegister; /* 0c8 */
250 PVOID SystemReserved1[54]; /* 0cc used for kernel32 private data in Wine */
251 PVOID Spare1; /* 1a4 */
252 LONG ExceptionCode; /* 1a8 */
253 BYTE SpareBytes1[40]; /* 1ac */
254 PVOID SystemReserved2[10]; /* 1d4 used for ntdll private data in Wine */
255 GDI_TEB_BATCH GdiTebBatch; /* 1fc */
256 ULONG gdiRgn; /* 6dc */
257 ULONG gdiPen; /* 6e0 */
258 ULONG gdiBrush; /* 6e4 */
259 CLIENT_ID RealClientId; /* 6e8 */
260 HANDLE GdiCachedProcessHandle; /* 6f0 */
261 ULONG GdiClientPID; /* 6f4 */
262 ULONG GdiClientTID; /* 6f8 */
263 PVOID GdiThreadLocaleInfo; /* 6fc */
264 PVOID UserReserved[5]; /* 700 */
265 PVOID glDispachTable[280]; /* 714 */
266 ULONG glReserved1[26]; /* b74 */
267 PVOID glReserved2; /* bdc */
268 PVOID glSectionInfo; /* be0 */
269 PVOID glSection; /* be4 */
270 PVOID glTable; /* be8 */
271 PVOID glCurrentRC; /* bec */
272 PVOID glContext; /* bf0 */
273 ULONG LastStatusValue; /* bf4 */
274 UNICODE_STRING StaticUnicodeString; /* bf8 used by advapi32 */
275 WCHAR StaticUnicodeBuffer[261]; /* c00 used by advapi32 */
276 PVOID DeallocationStack; /* e0c */
277 PVOID TlsSlots[64]; /* e10 */
278 LIST_ENTRY TlsLinks; /* f10 */
280 PVOID ReservedForNtRpc; /* f1c */
281 PVOID DbgSsReserved[2]; /* f20 */
282 ULONG HardErrorDisabled; /* f28 */
283 PVOID Instrumentation[16]; /* f2c */
284 PVOID WinSockData; /* f6c */
285 ULONG GdiBatchCount; /* f70 */
286 ULONG Spare2; /* f74 */
287 ULONG Spare3; /* f78 */
288 ULONG Spare4; /* f7c */
289 PVOID ReservedForOle; /* f80 */
290 ULONG WaitingOnLoaderLock; /* f84 */
291 PVOID Reserved5[3]; /* f88 */
292 PVOID *TlsExpansionSlots; /* f94 */
294 # endif /* WINE_TEB_DEFINED */
295 #endif /* WINE_NO_TEB */
297 /***********************************************************************
301 typedef enum _FILE_INFORMATION_CLASS {
302 FileDirectoryInformation = 1,
303 FileFullDirectoryInformation,
304 FileBothDirectoryInformation,
305 FileBasicInformation,
306 FileStandardInformation,
307 FileInternalInformation,
309 FileAccessInformation,
311 FileRenameInformation,
313 FileNamesInformation,
314 FileDispositionInformation,
315 FilePositionInformation,
316 FileFullEaInformation,
318 FileAlignmentInformation,
320 FileAllocationInformation,
321 FileEndOfFileInformation,
322 FileAlternateNameInformation,
323 FileStreamInformation,
325 FilePipeLocalInformation,
326 FilePipeRemoteInformation,
327 FileMailslotQueryInformation,
328 FileMailslotSetInformation,
329 FileCompressionInformation,
330 FileObjectIdInformation,
331 FileCompletionInformation,
332 FileMoveClusterInformation,
333 FileQuotaInformation,
334 FileReparsePointInformation,
335 FileNetworkOpenInformation,
336 FileAttributeTagInformation,
337 FileTrackingInformation,
338 FileMaximumInformation
339 } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
341 typedef struct _FILE_DIRECTORY_INFORMATION {
342 ULONG NextEntryOffset;
344 LARGE_INTEGER CreationTime;
345 LARGE_INTEGER LastAccessTime;
346 LARGE_INTEGER LastWriteTime;
347 LARGE_INTEGER ChangeTime;
348 LARGE_INTEGER EndOfFile;
349 LARGE_INTEGER AllocationSize;
350 ULONG FileAttributes;
351 ULONG FileNameLength;
352 WCHAR FileName[ANYSIZE_ARRAY];
353 } FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION;
355 typedef struct _FILE_FULL_DIRECTORY_INFORMATION {
356 ULONG NextEntryOffset;
358 LARGE_INTEGER CreationTime;
359 LARGE_INTEGER LastAccessTime;
360 LARGE_INTEGER LastWriteTime;
361 LARGE_INTEGER ChangeTime;
362 LARGE_INTEGER EndOfFile;
363 LARGE_INTEGER AllocationSize;
364 ULONG FileAttributes;
365 ULONG FileNameLength;
367 WCHAR FileName[ANYSIZE_ARRAY];
368 } FILE_FULL_DIRECTORY_INFORMATION, *PFILE_FULL_DIRECTORY_INFORMATION,
369 FILE_FULL_DIR_INFORMATION, *PFILE_FULL_DIR_INFORMATION;
371 typedef struct _FILE_BOTH_DIRECTORY_INFORMATION {
372 ULONG NextEntryOffset;
374 LARGE_INTEGER CreationTime;
375 LARGE_INTEGER LastAccessTime;
376 LARGE_INTEGER LastWriteTime;
377 LARGE_INTEGER ChangeTime;
378 LARGE_INTEGER EndOfFile;
379 LARGE_INTEGER AllocationSize;
380 ULONG FileAttributes;
381 ULONG FileNameLength;
383 CHAR ShortNameLength;
385 WCHAR FileName[ANYSIZE_ARRAY];
386 } FILE_BOTH_DIRECTORY_INFORMATION, *PFILE_BOTH_DIRECTORY_INFORMATION,
387 FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;
389 typedef struct _FILE_BASIC_INFORMATION {
390 LARGE_INTEGER CreationTime;
391 LARGE_INTEGER LastAccessTime;
392 LARGE_INTEGER LastWriteTime;
393 LARGE_INTEGER ChangeTime;
394 ULONG FileAttributes;
395 } FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
397 typedef struct _FILE_STANDARD_INFORMATION {
398 LARGE_INTEGER AllocationSize;
399 LARGE_INTEGER EndOfFile;
401 BOOLEAN DeletePending;
403 } FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;
405 typedef struct _FILE_INTERNAL_INFORMATION {
406 LARGE_INTEGER IndexNumber;
407 } FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;
409 typedef struct _FILE_EA_INFORMATION {
411 } FILE_EA_INFORMATION, *PFILE_EA_INFORMATION;
413 typedef struct _FILE_ACCESS_INFORMATION {
414 ACCESS_MASK AccessFlags;
415 } FILE_ACCESS_INFORMATION, *PFILE_ACCESS_INFORMATION;
417 typedef struct _FILE_NAME_INFORMATION {
418 ULONG FileNameLength;
420 } FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
422 typedef struct _FILE_RENAME_INFORMATION {
425 ULONG FileNameLength;
427 } FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;
429 typedef struct _FILE_NAMES_INFORMATION {
430 ULONG NextEntryOffset;
432 ULONG FileNameLength;
434 } FILE_NAMES_INFORMATION, *PFILE_NAMES_INFORMATION;
436 typedef struct _FILE_DISPOSITION_INFORMATION {
437 BOOLEAN DoDeleteFile;
438 } FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION;
440 typedef struct _FILE_POSITION_INFORMATION {
441 LARGE_INTEGER CurrentByteOffset;
442 } FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;
444 typedef struct _FILE_ALIGNMENT_INFORMATION {
445 ULONG AlignmentRequirement;
446 } FILE_ALIGNMENT_INFORMATION, *PFILE_ALIGNMENT_INFORMATION;
448 typedef struct _FILE_ALLOCATION_INFORMATION {
449 LARGE_INTEGER AllocationSize;
450 } FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION;
452 typedef struct _FILE_END_OF_FILE_INFORMATION {
453 LARGE_INTEGER EndOfFile;
454 } FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;
456 typedef struct _FILE_NETWORK_OPEN_INFORMATION {
457 LARGE_INTEGER CreationTime;
458 LARGE_INTEGER LastAccessTime;
459 LARGE_INTEGER LastWriteTime;
460 LARGE_INTEGER ChangeTime;
461 LARGE_INTEGER AllocationSize;
462 LARGE_INTEGER EndOfFile;
463 ULONG FileAttributes;
464 } FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;
466 typedef struct _FILE_FULL_EA_INFORMATION {
467 ULONG NextEntryOffset;
470 USHORT EaValueLength;
472 } FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
474 typedef struct _FILE_MODE_INFORMATION {
476 } FILE_MODE_INFORMATION, *PFILE_MODE_INFORMATION;
478 typedef struct _FILE_STREAM_INFORMATION
480 ULONG NextEntryOffset;
481 ULONG StreamNameLength;
482 LARGE_INTEGER StreamSize;
483 LARGE_INTEGER StreamAllocationSize;
485 } FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
487 typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION
489 ULONG FileAttributes;
491 } FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION;
493 typedef struct _FILE_MAILSLOT_QUERY_INFORMATION {
494 ULONG MaximumMessageSize;
496 ULONG NextMessageSize;
497 ULONG MessagesAvailable;
498 LARGE_INTEGER ReadTimeout;
499 } FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION;
501 typedef struct _FILE_MAILSLOT_SET_INFORMATION {
502 LARGE_INTEGER ReadTimeout;
503 } FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION;
505 typedef struct _FILE_ALL_INFORMATION
507 FILE_BASIC_INFORMATION BasicInformation;
508 FILE_STANDARD_INFORMATION StandardInformation;
509 FILE_INTERNAL_INFORMATION InternalInformation;
510 FILE_EA_INFORMATION EaInformation;
511 FILE_ACCESS_INFORMATION AccessInformation;
512 FILE_POSITION_INFORMATION PositionInformation;
513 FILE_MODE_INFORMATION ModeInformation;
514 FILE_ALIGNMENT_INFORMATION AlignmentInformation;
515 FILE_NAME_INFORMATION NameInformation;
516 } FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION;
518 typedef enum _FSINFOCLASS {
519 FileFsVolumeInformation = 1,
520 FileFsLabelInformation,
521 FileFsSizeInformation,
522 FileFsDeviceInformation,
523 FileFsAttributeInformation,
524 FileFsControlInformation,
525 FileFsFullSizeInformation,
526 FileFsObjectIdInformation,
527 FileFsMaximumInformation
528 } FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
530 typedef enum _KEY_INFORMATION_CLASS {
534 } KEY_INFORMATION_CLASS;
536 typedef enum _KEY_VALUE_INFORMATION_CLASS {
537 KeyValueBasicInformation,
538 KeyValueFullInformation,
539 KeyValuePartialInformation,
540 KeyValueFullInformationAlign64,
541 KeyValuePartialInformationAlign64
542 } KEY_VALUE_INFORMATION_CLASS;
544 typedef enum _OBJECT_INFORMATION_CLASS {
545 ObjectBasicInformation,
546 ObjectNameInformation,
547 ObjectTypeInformation,
548 ObjectAllInformation,
549 ObjectDataInformation
550 } OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS;
552 typedef enum _PROCESSINFOCLASS {
553 ProcessBasicInformation = 0,
554 ProcessQuotaLimits = 1,
555 ProcessIoCounters = 2,
556 ProcessVmCounters = 3,
558 ProcessBasePriority = 5,
559 ProcessRaisePriority = 6,
560 ProcessDebugPort = 7,
561 ProcessExceptionPort = 8,
562 ProcessAccessToken = 9,
563 ProcessLdtInformation = 10,
565 ProcessDefaultHardErrorMode = 12,
566 ProcessIoPortHandlers = 13,
567 ProcessPooledUsageAndLimits = 14,
568 ProcessWorkingSetWatch = 15,
569 ProcessUserModeIOPL = 16,
570 ProcessEnableAlignmentFaultFixup = 17,
571 ProcessPriorityClass = 18,
572 ProcessWx86Information = 19,
573 ProcessHandleCount = 20,
574 ProcessAffinityMask = 21,
575 ProcessPriorityBoost = 22,
576 ProcessDeviceMap = 23,
577 ProcessSessionInformation = 24,
578 ProcessForegroundInformation = 25,
579 ProcessWow64Information = 26,
581 } PROCESSINFOCLASS, PROCESS_INFORMATION_CLASS;
583 typedef enum _SECTION_INHERIT {
588 typedef enum _SYSTEM_INFORMATION_CLASS {
589 SystemBasicInformation = 0,
590 SystemCpuInformation = 1,
591 SystemPerformanceInformation = 2,
592 SystemTimeOfDayInformation = 3, /* was SystemTimeInformation */
594 SystemProcessInformation = 5,
597 SystemProcessorPerformanceInformation = 8,
600 SystemModuleInformation = 11,
605 SystemHandleInformation = 16,
607 SystemPageFileInformation = 18,
610 SystemCacheInformation = 21,
612 SystemInterruptInformation = 23,
613 SystemDpcBehaviourInformation = 24,
614 SystemFullMemoryInformation = 25,
615 SystemNotImplemented6 = 25,
616 SystemLoadImage = 26,
617 SystemUnloadImage = 27,
618 SystemTimeAdjustmentInformation = 28,
619 SystemTimeAdjustment = 28,
620 SystemSummaryMemoryInformation = 29,
621 SystemNotImplemented7 = 29,
622 SystemNextEventIdInformation = 30,
623 SystemNotImplemented8 = 30,
624 SystemEventIdsInformation = 31,
625 SystemCrashDumpInformation = 32,
626 SystemExceptionInformation = 33,
627 SystemCrashDumpStateInformation = 34,
628 SystemKernelDebuggerInformation = 35,
629 SystemContextSwitchInformation = 36,
630 SystemRegistryQuotaInformation = 37,
631 SystemCurrentTimeZoneInformation = 44,
632 SystemTimeZoneInformation = 44,
633 SystemLookasideInformation = 45,
634 SystemSetTimeSlipEvent = 46,
635 SystemCreateSession = 47,
636 SystemDeleteSession = 48,
637 SystemInvalidInfoClass4 = 49,
638 SystemRangeStartInformation = 50,
639 SystemVerifierInformation = 51,
640 SystemAddVerifier = 52,
641 SystemSessionProcessesInformation = 53,
642 SystemInformationClassMax
643 } SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS;
645 typedef enum _TIMER_TYPE {
650 typedef enum _THREADINFOCLASS {
651 ThreadBasicInformation,
656 ThreadImpersonationToken,
657 ThreadDescriptorTableEntry,
658 ThreadEnableAlignmentFaultFixup,
659 ThreadEventPair_Reusable,
660 ThreadQuerySetWin32StartAddress,
662 ThreadPerformanceCount,
664 ThreadIdealProcessor,
666 ThreadSetTlsArrayAddress,
671 typedef struct _THREAD_BASIC_INFORMATION
674 PVOID TebBaseAddress;
679 } THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION;
682 typedef enum _WINSTATIONINFOCLASS {
683 WinStationInformation = 8
684 } WINSTATIONINFOCLASS;
686 typedef enum _MEMORY_INFORMATION_CLASS {
687 MemoryBasicInformation,
688 MemoryWorkingSetList,
690 MemoryBasicVlmInformation
691 } MEMORY_INFORMATION_CLASS;
693 typedef enum _MUTANT_INFORMATION_CLASS
695 MutantBasicInformation
696 } MUTANT_INFORMATION_CLASS, *PMUTANT_INFORMATION_CLASS;
698 typedef struct _MUTANT_BASIC_INFORMATION {
700 BOOLEAN OwnedByCaller;
701 BOOLEAN AbandonedState;
702 } MUTANT_BASIC_INFORMATION, *PMUTANT_BASIC_INFORMATION;
704 typedef enum _TIMER_INFORMATION_CLASS
706 TimerBasicInformation = 0
707 } TIMER_INFORMATION_CLASS;
709 typedef struct _TIMER_BASIC_INFORMATION
711 LARGE_INTEGER RemainingTime;
713 } TIMER_BASIC_INFORMATION, *PTIMER_BASIC_INFORMATION;
716 /* return type of RtlDetermineDosPathNameType_U (FIXME: not the correct names) */
720 UNC_PATH, /* "//foo" */
721 ABSOLUTE_DRIVE_PATH, /* "c:/foo" */
722 RELATIVE_DRIVE_PATH, /* "c:foo" */
723 ABSOLUTE_PATH, /* "/foo" */
724 RELATIVE_PATH, /* "foo" */
725 DEVICE_PATH, /* "//./foo" */
726 UNC_DOT_PATH /* "//." */
729 /***********************************************************************
730 * IA64 specific types and data structures
735 typedef struct _FRAME_POINTERS {
736 ULONGLONG MemoryStackFp;
737 ULONGLONG BackingStoreFp;
738 } FRAME_POINTERS, *PFRAME_POINTERS;
740 #define UNWIND_HISTORY_TABLE_SIZE 12
742 typedef struct _RUNTIME_FUNCTION {
745 ULONG UnwindInfoAddress;
746 } RUNTIME_FUNCTION, *PRUNTIME_FUNCTION;
748 typedef struct _UNWIND_HISTORY_TABLE_ENTRY {
751 PRUNTIME_FUNCTION FunctionEntry;
752 } UNWIND_HISTORY_TABLE_ENTRY, *PUNWIND_HISTORY_TABLE_ENTRY;
754 typedef struct _UNWIND_HISTORY_TABLE {
759 UNWIND_HISTORY_TABLE_ENTRY Entry[UNWIND_HISTORY_TABLE_SIZE];
760 } UNWIND_HISTORY_TABLE, *PUNWIND_HISTORY_TABLE;
762 #endif /* defined(__ia64__) */
764 /***********************************************************************
765 * Types and data structures
768 /* This is used by NtQuerySystemInformation */
769 typedef struct _SYSTEM_THREAD_INFORMATION{
770 FILETIME ftKernelTime;
772 FILETIME ftCreateTime;
774 DWORD dwStartAddress;
777 DWORD dwCurrentPriority;
778 DWORD dwBasePriority;
779 DWORD dwContextSwitches;
783 } SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION;
785 typedef struct _IO_STATUS_BLOCK {
791 ULONG_PTR Information;
792 } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
794 typedef void (WINAPI * PIO_APC_ROUTINE)(PVOID,PIO_STATUS_BLOCK,ULONG);
796 typedef struct _KEY_BASIC_INFORMATION {
797 LARGE_INTEGER LastWriteTime;
801 } KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
803 typedef struct _KEY_NODE_INFORMATION
805 LARGE_INTEGER LastWriteTime;
812 } KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
814 typedef struct _KEY_FULL_INFORMATION
816 LARGE_INTEGER LastWriteTime;
824 ULONG MaxValueNameLen;
825 ULONG MaxValueDataLen;
827 } KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
829 typedef struct _KEY_VALUE_ENTRY
831 PUNICODE_STRING ValueName;
835 } KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
837 typedef struct _KEY_VALUE_BASIC_INFORMATION {
842 } KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
844 typedef struct _KEY_VALUE_FULL_INFORMATION {
851 } KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
853 typedef struct _KEY_VALUE_PARTIAL_INFORMATION {
858 } KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
860 typedef struct _OBJECT_ATTRIBUTES {
862 HANDLE RootDirectory;
863 PUNICODE_STRING ObjectName;
865 PVOID SecurityDescriptor; /* type SECURITY_DESCRIPTOR */
866 PVOID SecurityQualityOfService; /* type SECURITY_QUALITY_OF_SERVICE */
867 } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
869 typedef struct _OBJECT_DATA_INFORMATION {
870 BOOLEAN InheritHandle;
871 BOOLEAN ProtectFromClose;
872 } OBJECT_DATA_INFORMATION, *POBJECT_DATA_INFORMATION;
874 typedef struct _PROCESS_BASIC_INFORMATION {
877 DWORD PebBaseAddress;
880 ULONG UniqueProcessId;
881 ULONG InheritedFromUniqueProcessId;
886 ULONG_PTR UniqueProcessId;
889 } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
891 typedef struct _RTL_HEAP_DEFINITION {
892 ULONG Length; /* = sizeof(RTL_HEAP_DEFINITION) */
895 } RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION;
897 typedef struct _RTL_RWLOCK {
898 RTL_CRITICAL_SECTION rtlCS;
900 HANDLE hSharedReleaseSemaphore;
903 HANDLE hExclusiveReleaseSemaphore;
904 UINT uExclusiveWaiters;
907 HANDLE hOwningThreadId;
908 DWORD dwTimeoutBoost;
910 } RTL_RWLOCK, *LPRTL_RWLOCK;
912 /* System Information Class 0x00 */
914 typedef struct _SYSTEM_BASIC_INFORMATION {
917 ULONG uKeMaximumIncrement;
919 ULONG uMmNumberOfPhysicalPages;
920 ULONG uMmLowestPhysicalPage;
921 ULONG uMmHighestPhysicalPage;
922 ULONG uAllocationGranularity;
923 PVOID pLowestUserAddress;
924 PVOID pMmHighestUserAddress;
925 ULONG uKeActiveProcessors;
926 BYTE bKeNumberProcessors;
932 CCHAR NumberOfProcessors;
934 } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
936 /* System Information Class 0x01 */
938 typedef struct _SYSTEM_CPU_INFORMATION {
941 WORD Revision; /* combination of CPU model and stepping */
942 WORD Reserved; /* always zero */
943 DWORD FeatureSet; /* see bit flags below */
944 } SYSTEM_CPU_INFORMATION, *PSYSTEM_CPU_INFORMATION;
946 /* definitions of bits in the Feature set for the x86 processors */
947 #define CPU_FEATURE_VME 0x00000005 /* Virtual 86 Mode Extensions */
948 #define CPU_FEATURE_TSC 0x00000002 /* Time Stamp Counter available */
949 #define CPU_FEATURE_CMOV 0x00000008 /* Conditional Move instruction*/
950 #define CPU_FEATURE_PGE 0x00000014 /* Page table Entry Global bit */
951 #define CPU_FEATURE_PSE 0x00000024 /* Page Size Extension */
952 #define CPU_FEATURE_MTRR 0x00000040 /* Memory Type Range Registers */
953 #define CPU_FEATURE_CX8 0x00000080 /* Compare and eXchange 8 byte instr. */
954 #define CPU_FEATURE_MMX 0x00000100 /* Multi Media eXtensions */
955 #define CPU_FEATURE_X86 0x00000200 /* seems to be alway ON, on the '86 */
956 #define CPU_FEATURE_PAT 0x00000400 /* Page Attribute Table */
957 #define CPU_FEATURE_FXSR 0x00000800 /* FXSAVE and FXSTORE instructions */
958 #define CPU_FEATURE_SEP 0x00001000 /* SYSENTER and SYSEXIT instructions */
959 #define CPU_FEATURE_SSE 0x00002000 /* SSE extenstions (ext. MMX) */
960 #define CPU_FEATURE_3DNOW 0x00008000 /* 3DNOW instructions available
961 (FIXME: needs to be confirmed) */
962 #define CPU_FEATURE_SSE2 0x00010000 /* SSE2 extensions (XMMI64) */
963 #define CPU_FEATURE_DS 0x00020000 /* Debug Store */
964 #define CPU_FEATURE_HTT 0x00040000 /* Hyper Threading Technology */
966 /* System Information Class 0x02 */
968 typedef struct _SYSTEM_PERFORMANCE_INFORMATION {
970 } SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
972 /* System Information Class 0x03 */
974 typedef struct _SYSTEM_TIMEOFDAY_INFORMATION {
976 LARGE_INTEGER liKeBootTime;
977 LARGE_INTEGER liKeSystemTime;
978 LARGE_INTEGER liExpTimeZoneBias;
979 ULONG uCurrentTimeZoneId;
984 } SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION; /* was SYSTEM_TIME_INFORMATION */
986 /* System Information Class 0x08 */
988 typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION {
990 LARGE_INTEGER liIdleTime;
993 LARGE_INTEGER IdleTime;
994 LARGE_INTEGER KernelTime;
995 LARGE_INTEGER UserTime;
996 LARGE_INTEGER Reserved1[2];
999 } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
1001 /* System Information Class 0x0b */
1003 typedef struct _SYSTEM_DRIVER_INFORMATION {
1009 char szName[MAX_PATH + 1];
1010 } SYSTEM_DRIVER_INFORMATION, *PSYSTEM_DRIVER_INFORMATION;
1012 /* System Information Class 0x10 */
1014 typedef struct _SYSTEM_HANDLE_ENTRY {
1019 PVOID ObjectPointer;
1021 } SYSTEM_HANDLE_ENTRY, *PSYSTEM_HANDLE_ENTRY;
1023 typedef struct _SYSTEM_HANDLE_INFORMATION {
1025 SYSTEM_HANDLE_ENTRY Handle[1];
1026 } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
1028 /* System Information Class 0x15 */
1030 typedef struct _SYSTEM_CACHE_INFORMATION {
1033 ULONG PageFaultCount;
1034 ULONG MinimumWorkingSet;
1035 ULONG MaximumWorkingSet;
1037 } SYSTEM_CACHE_INFORMATION, *PSYSTEM_CACHE_INFORMATION;
1039 /* System Information Class 0x17 */
1041 typedef struct _SYSTEM_INTERRUPT_INFORMATION {
1043 } SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION;
1045 typedef struct _SYSTEM_CONFIGURATION_INFO {
1049 WORD ProcessorArchitecture;
1054 PVOID MinimumApplicationAddress;
1055 PVOID MaximumApplicationAddress;
1056 ULONG ActiveProcessorMask;
1057 ULONG NumberOfProcessors;
1058 ULONG ProcessorType;
1059 ULONG AllocationGranularity;
1060 WORD ProcessorLevel;
1061 WORD ProcessorRevision;
1062 } SYSTEM_CONFIGURATION_INFO, *PSYSTEM_CONFIGURATION_INFO;
1064 typedef struct _SYSTEM_EXCEPTION_INFORMATION {
1066 } SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION;
1068 typedef struct _SYSTEM_LOOKASIDE_INFORMATION {
1070 } SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION;
1072 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION {
1073 BOOLEAN DebuggerEnabled;
1074 BOOLEAN DebuggerNotPresent;
1075 } SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION;
1077 /* System Information Class 0x05 */
1079 typedef struct _VM_COUNTERS_ {
1080 SIZE_T PeakVirtualSize;
1082 ULONG PageFaultCount;
1083 SIZE_T PeakWorkingSetSize;
1084 SIZE_T WorkingSetSize;
1085 SIZE_T QuotaPeakPagedPoolUsage;
1086 SIZE_T QuotaPagedPoolUsage;
1087 SIZE_T QuotaPeakNonPagedPoolUsage;
1088 SIZE_T QuotaNonPagedPoolUsage;
1089 SIZE_T PagefileUsage;
1090 SIZE_T PeakPagefileUsage;
1091 } VM_COUNTERS, *PVM_COUNTERS;
1093 typedef struct _SYSTEM_PROCESS_INFORMATION {
1096 DWORD dwThreadCount;
1097 DWORD dwUnknown1[6];
1098 FILETIME ftCreationTime;
1099 FILETIME ftUserTime;
1100 FILETIME ftKernelTime;
1101 UNICODE_STRING ProcessName;
1102 DWORD dwBasePriority;
1104 DWORD dwParentProcessID;
1105 DWORD dwHandleCount;
1108 VM_COUNTERS vmCounters;
1109 IO_COUNTERS ioCounters;
1110 SYSTEM_THREAD_INFORMATION ti[1];
1112 ULONG NextEntryOffset;
1115 HANDLE UniqueProcessId;
1119 PVOID Reserved5[11];
1120 SIZE_T PeakPagefileUsage;
1121 SIZE_T PrivatePageCount;
1122 LARGE_INTEGER Reserved6[6];
1124 } SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
1126 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION {
1127 ULONG RegistryQuotaAllowed;
1128 ULONG RegistryQuotaUsed;
1130 } SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION;
1132 typedef struct _SYSTEM_TIME_ADJUSTMENT {
1133 ULONG TimeAdjustment;
1134 BOOLEAN TimeAdjustmentDisabled;
1135 } SYSTEM_TIME_ADJUSTMENT, *PSYSTEM_TIME_ADJUSTMENT;
1137 typedef struct _TIME_FIELDS
1144 CSHORT Milliseconds;
1146 } TIME_FIELDS, *PTIME_FIELDS;
1148 typedef struct _WINSTATIONINFORMATIONW {
1151 BYTE Reserved3[1140];
1152 } WINSTATIONINFORMATIONW, *PWINSTATIONINFORMATIONW;
1154 typedef BOOLEAN (WINAPI * PWINSTATIONQUERYINFORMATIONW)(HANDLE,ULONG,WINSTATIONINFOCLASS,PVOID,ULONG,PULONG);
1156 typedef struct _LDR_RESOURCE_INFO
1161 } LDR_RESOURCE_INFO, *PLDR_RESOURCE_INFO;
1164 /* debug buffer definitions */
1166 typedef struct _DEBUG_BUFFER {
1167 HANDLE SectionHandle;
1169 PVOID RemoteSectionBase;
1170 ULONG SectionBaseDelta;
1171 HANDLE EventPairHandle;
1173 HANDLE RemoteThreadHandle;
1174 ULONG InfoClassMask;
1176 ULONG AllocatedSize;
1178 PVOID ModuleInformation;
1179 PVOID BackTraceInformation;
1180 PVOID HeapInformation;
1181 PVOID LockInformation;
1183 } DEBUG_BUFFER, *PDEBUG_BUFFER;
1185 #define PDI_MODULES 0x01
1186 #define PDI_BACKTRACE 0x02
1187 #define PDI_HEAPS 0x04
1188 #define PDI_HEAP_TAGS 0x08
1189 #define PDI_HEAP_BLOCKS 0x10
1190 #define PDI_LOCKS 0x20
1192 typedef struct _DEBUG_MODULE_INFORMATION {
1200 USHORT ModuleNameOffset;
1201 CHAR ImageName[256];
1202 } DEBUG_MODULE_INFORMATION, *PDEBUG_MODULE_INFORMATION;
1204 typedef struct _DEBUG_HEAP_INFORMATION {
1216 } DEBUG_HEAP_INFORMATION, *PDEBUG_HEAP_INFORMATION;
1218 typedef struct _DEBUG_LOCK_INFORMATION {
1221 USHORT CreatorBackTraceIndex;
1222 ULONG OwnerThreadId;
1224 ULONG ContentionCount;
1226 ULONG RecursionCount;
1227 ULONG NumberOfSharedWaiters;
1228 ULONG NumberOfExclusiveWaiters;
1229 } DEBUG_LOCK_INFORMATION, *PDEBUG_LOCK_INFORMATION;
1231 typedef struct _PORT_MESSAGE_HEADER {
1235 USHORT VirtualRangesOffset;
1239 } PORT_MESSAGE_HEADER, *PPORT_MESSAGE_HEADER, PORT_MESSAGE, *PPORT_MESSAGE;
1241 typedef unsigned short RTL_ATOM, *PRTL_ATOM;
1243 /* Wine doesn't implement atom table as NT does:
1244 * - in NT, atom tables are user space tables, which ntdll directly accesses
1245 * - on Wine, (even local) atom tables are wineserver object, hence a HANDLE
1247 typedef struct atom_table *RTL_ATOM_TABLE, **PRTL_ATOM_TABLE;
1249 typedef enum _ATOM_INFORMATION_CLASS {
1250 AtomBasicInformation = 0,
1251 AtomTableInformation = 1,
1252 } ATOM_INFORMATION_CLASS;
1254 typedef struct _ATOM_BASIC_INFORMATION {
1255 USHORT ReferenceCount;
1259 } ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION;
1261 /* FIXME: names probably not correct */
1262 typedef struct _RTL_HANDLE
1264 struct _RTL_HANDLE * Next;
1267 /* FIXME: names probably not correct */
1268 typedef struct _RTL_HANDLE_TABLE
1270 ULONG MaxHandleCount; /* 0x00 */
1271 ULONG HandleSize; /* 0x04 */
1272 ULONG Unused[2]; /* 0x08-0x0c */
1273 PVOID NextFree; /* 0x10 */
1274 PVOID FirstHandle; /* 0x14 */
1275 PVOID ReservedMemory; /* 0x18 */
1276 PVOID MaxHandle; /* 0x1c */
1279 /***********************************************************************
1283 /* flags for NtCreateFile and NtOpenFile */
1284 #define FILE_DIRECTORY_FILE 0x00000001
1285 #define FILE_WRITE_THROUGH 0x00000002
1286 #define FILE_SEQUENTIAL_ONLY 0x00000004
1287 #define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
1288 #define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
1289 #define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
1290 #define FILE_NON_DIRECTORY_FILE 0x00000040
1291 #define FILE_CREATE_TREE_CONNECTION 0x00000080
1292 #define FILE_COMPLETE_IF_OPLOCKED 0x00000100
1293 #define FILE_NO_EA_KNOWLEDGE 0x00000200
1294 #define FILE_OPEN_FOR_RECOVERY 0x00000400
1295 #define FILE_RANDOM_ACCESS 0x00000800
1296 #define FILE_DELETE_ON_CLOSE 0x00001000
1297 #define FILE_OPEN_BY_FILE_ID 0x00002000
1298 #define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
1299 #define FILE_NO_COMPRESSION 0x00008000
1300 #define FILE_RESERVE_OPFILTER 0x00100000
1301 #define FILE_TRANSACTED_MODE 0x00200000
1302 #define FILE_OPEN_OFFLINE_FILE 0x00400000
1303 #define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000
1305 #define FILE_ATTRIBUTE_VALID_FLAGS 0x00007fb7
1306 #define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7
1308 /* status for NtCreateFile or NtOpenFile */
1309 #define FILE_SUPERSEDED 0
1310 #define FILE_OPENED 1
1311 #define FILE_CREATED 2
1312 #define FILE_OVERWRITTEN 3
1313 #define FILE_EXISTS 4
1314 #define FILE_DOES_NOT_EXIST 5
1316 /* disposition for NtCreateFile */
1317 #define FILE_SUPERSEDE 0
1319 #define FILE_CREATE 2
1320 #define FILE_OPEN_IF 3
1321 #define FILE_OVERWRITE 4
1322 #define FILE_OVERWRITE_IF 5
1323 #define FILE_MAXIMUM_DISPOSITION 5
1325 /* Characteristics of a File System */
1326 #define FILE_REMOVABLE_MEDIA 0x00000001
1327 #define FILE_READ_ONLY_DEVICE 0x00000002
1328 #define FILE_FLOPPY_DISKETTE 0x00000004
1329 #define FILE_WRITE_ONE_MEDIA 0x00000008
1330 #define FILE_REMOTE_DEVICE 0x00000010
1331 #define FILE_DEVICE_IS_MOUNTED 0x00000020
1332 #define FILE_VIRTUAL_VOLUME 0x00000040
1333 #define FILE_AUTOGENERATED_DEVICE_NAME 0x00000080
1334 #define FILE_DEVICE_SECURE_OPEN 0x00000100
1336 /* options for NtCreateNamedPipeFile */
1337 #define FILE_PIPE_INBOUND 0x00000000
1338 #define FILE_PIPE_OUTBOUND 0x00000001
1339 #define FILE_PIPE_FULL_DUPLEX 0x00000002
1341 #if (_WIN32_WINNT >= 0x0501)
1342 #define INTERNAL_TS_ACTIVE_CONSOLE_ID ( *((volatile ULONG*)(0x7ffe02d8)) )
1343 #endif /* (_WIN32_WINNT >= 0x0501) */
1345 #define LOGONID_CURRENT ((ULONG)-1)
1347 #define OBJ_INHERIT 0x00000002L
1348 #define OBJ_PERMANENT 0x00000010L
1349 #define OBJ_EXCLUSIVE 0x00000020L
1350 #define OBJ_CASE_INSENSITIVE 0x00000040L
1351 #define OBJ_OPENIF 0x00000080L
1352 #define OBJ_OPENLINK 0x00000100L
1353 #define OBJ_KERNEL_HANDLE 0x00000200L
1354 #define OBJ_VALID_ATTRIBUTES 0x000003F2L
1356 #define SERVERNAME_CURRENT ((HANDLE)NULL)
1358 typedef void (CALLBACK *PNTAPCFUNC)(ULONG_PTR,ULONG_PTR,ULONG_PTR); /* FIXME: not the right name */
1359 typedef void (CALLBACK *PRTL_THREAD_START_ROUTINE)(LPVOID); /* FIXME: not the right name */
1362 /* DbgPrintEx default levels */
1363 #define DPFLTR_ERROR_LEVEL 0
1364 #define DPFLTR_WARNING_LEVEL 1
1365 #define DPFLTR_TRACE_LEVEL 2
1366 #define DPFLTR_INFO_LEVEL 3
1367 #define DPFLTR_MASK 0x8000000
1369 /* Well-known LUID values */
1370 #define SE_MIN_WELL_KNOWN_PRIVILEGE 2L
1371 #define SE_CREATE_TOKEN_PRIVILEGE 2L
1372 #define SE_ASSIGNPRIMARYTOKEN_PRIVILEGE 3L
1373 #define SE_LOCK_MEMORY_PRIVILEGE 4L
1374 #define SE_INCREASE_QUOTA_PRIVILEGE 5L
1375 #define SE_UNSOLICITED_INPUT_PRIVILEGE 6L /* obsolete */
1376 #define SE_MACHINE_ACCOUNT_PRIVILEGE 6L
1377 #define SE_TCB_PRIVILEGE 7L
1378 #define SE_SECURITY_PRIVILEGE 8L
1379 #define SE_TAKE_OWNERSHIP_PRIVILEGE 9L
1380 #define SE_LOAD_DRIVER_PRIVILEGE 10L
1381 #define SE_SYSTEM_PROFILE_PRIVILEGE 11L
1382 #define SE_SYSTEMTIME_PRIVILEGE 12L
1383 #define SE_PROF_SINGLE_PROCESS_PRIVILEGE 13L
1384 #define SE_INC_BASE_PRIORITY_PRIVILEGE 14L
1385 #define SE_CREATE_PAGEFILE_PRIVILEGE 15L
1386 #define SE_CREATE_PERMANENT_PRIVILEGE 16L
1387 #define SE_BACKUP_PRIVILEGE 17L
1388 #define SE_RESTORE_PRIVILEGE 18L
1389 #define SE_SHUTDOWN_PRIVILEGE 19L
1390 #define SE_DEBUG_PRIVILEGE 20L
1391 #define SE_AUDIT_PRIVILEGE 21L
1392 #define SE_SYSTEM_ENVIRONMENT_PRIVILEGE 22L
1393 #define SE_CHANGE_NOTIFY_PRIVILLEGE 23L
1394 #define SE_REMOTE_SHUTDOWN_PRIVILEGE 24L
1395 #define SE_UNDOCK_PRIVILEGE 25L
1396 #define SE_SYNC_AGENT_PRIVILEGE 26L
1397 #define SE_ENABLE_DELEGATION_PRIVILEGE 27L
1398 #define SE_MANAGE_VOLUME_PRIVILEGE 28L
1399 #define SE_IMPERSONATE_PRIVILEGE 29L
1400 #define SE_CREATE_GLOBAL_PRIVILEGE 30L
1401 #define SE_MAX_WELL_KNOWN_PRIVILEGE SE_CREATE_GLOBAL_PRIVILEGE
1404 /* Rtl*Registry* functions structs and defines */
1405 #define RTL_REGISTRY_ABSOLUTE 0
1406 #define RTL_REGISTRY_SERVICES 1
1407 #define RTL_REGISTRY_CONTROL 2
1408 #define RTL_REGISTRY_WINDOWS_NT 3
1409 #define RTL_REGISTRY_DEVICEMAP 4
1410 #define RTL_REGISTRY_USER 5
1412 #define RTL_REGISTRY_HANDLE 0x40000000
1413 #define RTL_REGISTRY_OPTIONAL 0x80000000
1415 #define RTL_QUERY_REGISTRY_SUBKEY 0x00000001
1416 #define RTL_QUERY_REGISTRY_TOPKEY 0x00000002
1417 #define RTL_QUERY_REGISTRY_REQUIRED 0x00000004
1418 #define RTL_QUERY_REGISTRY_NOVALUE 0x00000008
1419 #define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010
1420 #define RTL_QUERY_REGISTRY_DIRECT 0x00000020
1421 #define RTL_QUERY_REGISTRY_DELETE 0x00000040
1423 typedef NTSTATUS (WINAPI *PRTL_QUERY_REGISTRY_ROUTINE)( PCWSTR ValueName,
1428 PVOID EntryContext);
1430 typedef struct _RTL_QUERY_REGISTRY_TABLE
1432 PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;
1438 ULONG DefaultLength;
1439 } RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
1441 typedef struct _KEY_MULTIPLE_VALUE_INFORMATION
1443 PUNICODE_STRING ValueName;
1447 } KEY_MULTIPLE_VALUE_INFORMATION, *PKEY_MULTIPLE_VALUE_INFORMATION;
1449 typedef VOID (*PTIMER_APC_ROUTINE) ( PVOID, ULONG, LONG );
1451 typedef enum _EVENT_TYPE {
1453 SynchronizationEvent
1454 } EVENT_TYPE, *PEVENT_TYPE;
1456 typedef enum _EVENT_INFORMATION_CLASS {
1457 EventBasicInformation
1458 } EVENT_INFORMATION_CLASS, *PEVENT_INFORMATION_CLASS;
1460 typedef struct _EVENT_BASIC_INFORMATION {
1461 EVENT_TYPE EventType;
1463 } EVENT_BASIC_INFORMATION, *PEVENT_BASIC_INFORMATION;
1465 typedef enum _SEMAPHORE_INFORMATION_CLASS {
1466 SemaphoreBasicInformation
1467 } SEMAPHORE_INFORMATION_CLASS, *PSEMAPHORE_INFORMATION_CLASS;
1469 typedef struct _SEMAPHORE_BASIC_INFORMATION {
1472 } SEMAPHORE_BASIC_INFORMATION, *PSEMAPHORE_BASIC_INFORMATION;
1474 typedef enum _SECTION_INFORMATION_CLASS
1476 SectionBasicInformation,
1477 SectionImageInformation,
1478 } SECTION_INFORMATION_CLASS;
1480 typedef struct _SECTION_BASIC_INFORMATION {
1484 } SECTION_BASIC_INFORMATION, *PSECTION_BASIC_INFORMATION;
1486 typedef struct _SECTION_IMAGE_INFORMATION {
1488 ULONG StackZeroBits;
1489 ULONG StackReserved;
1491 ULONG ImageSubsystem;
1492 WORD SubsystemVersionLow;
1493 WORD SubsystemVersionHigh;
1495 ULONG ImageCharacteristics;
1496 ULONG ImageMachineType;
1498 } SECTION_IMAGE_INFORMATION, *PSECTION_IMAGE_INFORMATION;
1500 typedef struct _LPC_SECTION_WRITE {
1502 HANDLE SectionHandle;
1503 ULONG SectionOffset;
1506 PVOID TargetViewBase;
1507 } LPC_SECTION_WRITE, *PLPC_SECTION_WRITE;
1509 typedef struct _LPC_SECTION_READ {
1513 } LPC_SECTION_READ, *PLPC_SECTION_READ;
1515 typedef struct _LPC_MESSAGE {
1519 USHORT VirtualRangesOffset;
1523 UCHAR Data[ANYSIZE_ARRAY];
1524 } LPC_MESSAGE, *PLPC_MESSAGE;
1526 typedef enum _SHUTDOWN_ACTION {
1530 } SHUTDOWN_ACTION, *PSHUTDOWN_ACTION;
1532 typedef enum _KPROFILE_SOURCE {
1534 ProfileAlignmentFixup,
1537 ProfileLoadInstructions,
1538 ProfilePipelineFrozen,
1539 ProfileBranchInstructions,
1540 ProfileTotalNonissues,
1541 ProfileDcacheMisses,
1542 ProfileIcacheMisses,
1544 ProfileBranchMispredictions,
1545 ProfileStoreInstructions,
1546 ProfileFpInstructions,
1547 ProfileIntegerInstructions,
1551 ProfileSpecialInstructions,
1553 ProfileIcacheIssues,
1554 ProfileDcacheAccesses,
1555 ProfileMemoryBarrierCycles,
1556 ProfileLoadLinkedIssues,
1558 } KPROFILE_SOURCE, *PKPROFILE_SOURCE;
1560 typedef struct _OBJDIR_INFORMATION {
1561 UNICODE_STRING ObjectName;
1562 UNICODE_STRING ObjectTypeName;
1564 } OBJDIR_INFORMATION, *POBJDIR_INFORMATION;
1566 /***********************************************************************
1567 * Function declarations
1570 extern LPSTR _strlwr(LPSTR str); /* FIXME: Doesn't belong here */
1571 extern LPSTR _strupr(LPSTR str); /* FIXME: Doesn't belong here */
1573 #if defined(__i386__) && defined(__GNUC__)
1574 static inline void WINAPI DbgBreakPoint(void) { __asm__ __volatile__("int3"); }
1575 static inline void WINAPI DbgUserBreakPoint(void) { __asm__ __volatile__("int3"); }
1576 #else /* __i386__ && __GNUC__ */
1577 void WINAPI DbgBreakPoint(void);
1578 void WINAPI DbgUserBreakPoint(void);
1579 #endif /* __i386__ && __GNUC__ */
1580 NTSTATUS WINAPIV DbgPrint(LPCSTR fmt, ...);
1581 NTSTATUS WINAPIV DbgPrintEx(ULONG iComponentId, ULONG Level, LPCSTR fmt, ...);
1583 NTSTATUS WINAPI LdrAccessResource(HMODULE,const IMAGE_RESOURCE_DATA_ENTRY*,void**,PULONG);
1584 NTSTATUS WINAPI LdrFindResourceDirectory_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DIRECTORY**);
1585 NTSTATUS WINAPI LdrFindResource_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DATA_ENTRY**);
1586 NTSTATUS WINAPI LdrGetDllHandle(ULONG, ULONG, const UNICODE_STRING*, HMODULE*);
1587 NTSTATUS WINAPI LdrGetProcedureAddress(HMODULE, const ANSI_STRING*, ULONG, void**);
1588 void WINAPI LdrInitializeThunk(HANDLE,ULONG,ULONG,ULONG);
1589 NTSTATUS WINAPI LdrLoadDll(LPCWSTR, DWORD, const UNICODE_STRING*, HMODULE*);
1590 void WINAPI LdrShutdownProcess(void);
1591 void WINAPI LdrShutdownThread(void);
1592 NTSTATUS WINAPI NtAcceptConnectPort(PHANDLE,ULONG,PLPC_MESSAGE,BOOLEAN,PLPC_SECTION_WRITE,PLPC_SECTION_READ);
1593 NTSTATUS WINAPI NtAccessCheck(PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,PGENERIC_MAPPING,PPRIVILEGE_SET,PULONG,PULONG,NTSTATUS*);
1594 NTSTATUS WINAPI NtAddAtom(const WCHAR*,ULONG,RTL_ATOM*);
1595 NTSTATUS WINAPI NtAdjustGroupsToken(HANDLE,BOOLEAN,PTOKEN_GROUPS,ULONG,PTOKEN_GROUPS,PULONG);
1596 NTSTATUS WINAPI NtAdjustPrivilegesToken(HANDLE,BOOLEAN,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD);
1597 NTSTATUS WINAPI NtAlertThread(HANDLE ThreadHandle);
1598 NTSTATUS WINAPI NtAllocateLocallyUniqueId(PLUID lpLuid);
1599 NTSTATUS WINAPI NtAllocateUuids(PULARGE_INTEGER,PULONG,PULONG);
1600 NTSTATUS WINAPI NtAllocateVirtualMemory(HANDLE,PVOID*,ULONG,ULONG*,ULONG,ULONG);
1601 NTSTATUS WINAPI NtCancelIoFile(HANDLE,PIO_STATUS_BLOCK);
1602 NTSTATUS WINAPI NtCancelTimer(HANDLE, BOOLEAN*);
1603 NTSTATUS WINAPI NtClearEvent(HANDLE);
1604 NTSTATUS WINAPI NtClose(HANDLE);
1605 NTSTATUS WINAPI NtCompleteConnectPort(HANDLE);
1606 NTSTATUS WINAPI NtConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
1607 NTSTATUS WINAPI NtCreateDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
1608 NTSTATUS WINAPI NtCreateEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *,BOOLEAN,BOOLEAN);
1609 NTSTATUS WINAPI NtCreateFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,PLARGE_INTEGER,ULONG,ULONG,ULONG,ULONG,PVOID,ULONG);
1610 NTSTATUS WINAPI NtCreateIoCompletion(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,ULONG);
1611 NTSTATUS WINAPI NtCreateKey(PHKEY,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
1612 NTSTATUS WINAPI NtCreateMailslotFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,PLARGE_INTEGER);
1613 NTSTATUS WINAPI NtCreateMutant(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,BOOLEAN);
1614 NTSTATUS WINAPI NtCreateNamedPipeFile(PHANDLE,ULONG,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,PLARGE_INTEGER);
1615 NTSTATUS WINAPI NtCreatePagingFile(PUNICODE_STRING,PLARGE_INTEGER,PLARGE_INTEGER,PLARGE_INTEGER);
1616 NTSTATUS WINAPI NtCreatePort(PHANDLE,POBJECT_ATTRIBUTES,ULONG,ULONG,PULONG);
1617 NTSTATUS WINAPI NtCreateSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const LARGE_INTEGER*,ULONG,ULONG,HANDLE);
1618 NTSTATUS WINAPI NtCreateSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,LONG,LONG);
1619 NTSTATUS WINAPI NtCreateSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PUNICODE_STRING);
1620 NTSTATUS WINAPI NtCreateTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*, TIMER_TYPE);
1621 NTSTATUS WINAPI NtDelayExecution(BOOLEAN,const LARGE_INTEGER*);
1622 NTSTATUS WINAPI NtDeleteAtom(RTL_ATOM);
1623 NTSTATUS WINAPI NtDeleteFile(POBJECT_ATTRIBUTES);
1624 NTSTATUS WINAPI NtDeleteKey(HKEY);
1625 NTSTATUS WINAPI NtDeleteValueKey(HKEY,const UNICODE_STRING *);
1626 NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
1627 NTSTATUS WINAPI NtDisplayString(PUNICODE_STRING);
1628 NTSTATUS WINAPI NtDuplicateObject(HANDLE,HANDLE,HANDLE,PHANDLE,ACCESS_MASK,ULONG,ULONG);
1629 NTSTATUS WINAPI NtDuplicateToken(HANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,PHANDLE);
1630 NTSTATUS WINAPI NtEnumerateKey(HKEY,ULONG,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
1631 NTSTATUS WINAPI NtEnumerateValueKey(HKEY,ULONG,KEY_VALUE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
1632 NTSTATUS WINAPI NtFindAtom(const WCHAR*,ULONG,RTL_ATOM*);
1633 NTSTATUS WINAPI NtFlushBuffersFile(HANDLE,IO_STATUS_BLOCK*);
1634 NTSTATUS WINAPI NtFlushInstructionCache(HANDLE,LPCVOID,ULONG);
1635 NTSTATUS WINAPI NtFlushKey(HKEY);
1636 NTSTATUS WINAPI NtFlushVirtualMemory(HANDLE,LPCVOID*,ULONG*,ULONG);
1637 NTSTATUS WINAPI NtFreeVirtualMemory(HANDLE,PVOID*,ULONG*,ULONG);
1638 NTSTATUS WINAPI NtFsControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
1639 NTSTATUS WINAPI NtGetContextThread(HANDLE,CONTEXT*);
1640 NTSTATUS WINAPI NtImpersonateAnonymousToken(HANDLE);
1641 NTSTATUS WINAPI NtImpersonateClientOfPort(HANDLE,PPORT_MESSAGE);
1642 NTSTATUS WINAPI NtImpersonateThread(HANDLE,HANDLE,PSECURITY_QUALITY_OF_SERVICE);
1643 NTSTATUS WINAPI NtInitiatePowerAction(POWER_ACTION,SYSTEM_POWER_STATE,ULONG,BOOLEAN);
1644 NTSTATUS WINAPI NtListenPort(HANDLE,PLPC_MESSAGE);
1645 NTSTATUS WINAPI NtLoadDriver(const UNICODE_STRING *);
1646 NTSTATUS WINAPI NtLoadKey(const OBJECT_ATTRIBUTES *,OBJECT_ATTRIBUTES *);
1647 NTSTATUS WINAPI NtLockFile(HANDLE,HANDLE,PIO_APC_ROUTINE,void*,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,ULONG*,BOOLEAN,BOOLEAN);
1648 NTSTATUS WINAPI NtLockVirtualMemory(HANDLE,PVOID*,ULONG*,ULONG);
1649 NTSTATUS WINAPI NtMapViewOfSection(HANDLE,HANDLE,PVOID*,ULONG,ULONG,const LARGE_INTEGER*,ULONG*,SECTION_INHERIT,ULONG,ULONG);
1650 NTSTATUS WINAPI NtNotifyChangeKey(HKEY,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN);
1651 NTSTATUS WINAPI NtOpenDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
1652 NTSTATUS WINAPI NtOpenEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
1653 NTSTATUS WINAPI NtOpenFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG);
1654 NTSTATUS WINAPI NtOpenIoCompletion(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
1655 NTSTATUS WINAPI NtOpenKey(PHKEY,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
1656 NTSTATUS WINAPI NtOpenMutant(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
1657 NTSTATUS WINAPI NtOpenProcessToken(HANDLE,DWORD,HANDLE *);
1658 NTSTATUS WINAPI NtOpenSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
1659 NTSTATUS WINAPI NtOpenSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
1660 NTSTATUS WINAPI NtOpenSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
1661 NTSTATUS WINAPI NtOpenThread(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
1662 NTSTATUS WINAPI NtOpenThreadToken(HANDLE,DWORD,BOOLEAN,HANDLE *);
1663 NTSTATUS WINAPI NtOpenTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*);
1664 NTSTATUS WINAPI NtPowerInformation(POWER_INFORMATION_LEVEL,PVOID,ULONG,PVOID,ULONG);
1665 NTSTATUS WINAPI NtPrivilegeCheck(HANDLE,PPRIVILEGE_SET,PBOOLEAN);
1666 NTSTATUS WINAPI NtProtectVirtualMemory(HANDLE,PVOID*,ULONG*,ULONG,ULONG*);
1667 NTSTATUS WINAPI NtPulseEvent(HANDLE,PULONG);
1668 NTSTATUS WINAPI NtQueueApcThread(HANDLE,PNTAPCFUNC,ULONG_PTR,ULONG_PTR,ULONG_PTR);
1669 NTSTATUS WINAPI NtQueryAttributesFile(const OBJECT_ATTRIBUTES*,FILE_BASIC_INFORMATION*);
1670 NTSTATUS WINAPI NtQueryDefaultLocale(BOOLEAN,LCID*);
1671 NTSTATUS WINAPI NtQueryDefaultUILanguage(LANGID*);
1672 NTSTATUS WINAPI NtQueryDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS,BOOLEAN,PUNICODE_STRING,BOOLEAN);
1673 NTSTATUS WINAPI NtQueryDirectoryObject(HANDLE,POBJDIR_INFORMATION,ULONG,BOOLEAN,BOOLEAN,PULONG,PULONG);
1674 NTSTATUS WINAPI NtQueryEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,BOOLEAN,PVOID,ULONG,PVOID,BOOLEAN);
1675 NTSTATUS WINAPI NtQueryEvent(HANDLE,EVENT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
1676 NTSTATUS WINAPI NtQueryFullAttributesFile(const OBJECT_ATTRIBUTES*,FILE_NETWORK_OPEN_INFORMATION*);
1677 NTSTATUS WINAPI NtQueryInformationAtom(RTL_ATOM,ATOM_INFORMATION_CLASS,RTL_ATOM_TABLE,ULONG,ULONG*);
1678 NTSTATUS WINAPI NtQueryInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,LONG,FILE_INFORMATION_CLASS);
1679 NTSTATUS WINAPI NtQueryInformationProcess(HANDLE,PROCESSINFOCLASS,PVOID,ULONG,PULONG);
1680 NTSTATUS WINAPI NtQueryInformationThread(HANDLE,THREADINFOCLASS,PVOID,ULONG,PULONG);
1681 NTSTATUS WINAPI NtQueryInformationToken(HANDLE,DWORD,LPVOID,DWORD,LPDWORD);
1682 NTSTATUS WINAPI NtQueryInstallUILanguage(LANGID*);
1683 NTSTATUS WINAPI NtQueryKey(HKEY,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
1684 NTSTATUS WINAPI NtQueryMultipleValueKey(HKEY,PKEY_MULTIPLE_VALUE_INFORMATION,ULONG,PVOID,ULONG,PULONG);
1685 NTSTATUS WINAPI NtQueryMutant(HANDLE,MUTANT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
1686 NTSTATUS WINAPI NtQueryObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG, PULONG);
1687 NTSTATUS WINAPI NtQueryPerformanceCounter(PLARGE_INTEGER, PLARGE_INTEGER);
1688 NTSTATUS WINAPI NtQuerySecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,ULONG,PULONG);
1689 NTSTATUS WINAPI NtQuerySection(HANDLE,SECTION_INFORMATION_CLASS,PVOID,ULONG,PULONG);
1690 NTSTATUS WINAPI NtQuerySemaphore(HANDLE,SEMAPHORE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
1691 NTSTATUS WINAPI NtQuerySymbolicLinkObject(HANDLE,PUNICODE_STRING,PULONG);
1692 NTSTATUS WINAPI NtQuerySystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG,PULONG);
1693 NTSTATUS WINAPI NtQuerySystemTime(PLARGE_INTEGER);
1694 NTSTATUS WINAPI NtQueryTimer(HANDLE,TIMER_INFORMATION_CLASS,PVOID,ULONG,PULONG);
1695 NTSTATUS WINAPI NtQueryTimerResolution(PULONG,PULONG,PULONG);
1696 NTSTATUS WINAPI NtQueryValueKey(HKEY,const UNICODE_STRING *,KEY_VALUE_INFORMATION_CLASS,void *,DWORD,DWORD *);
1697 NTSTATUS WINAPI NtQueryVirtualMemory(HANDLE,LPCVOID,MEMORY_INFORMATION_CLASS,PVOID,ULONG,ULONG*);
1698 NTSTATUS WINAPI NtQueryVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
1699 void WINAPI NtRaiseException(PEXCEPTION_RECORD,PCONTEXT,BOOL);
1700 NTSTATUS WINAPI NtReadFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,PLARGE_INTEGER,PULONG);
1701 NTSTATUS WINAPI NtReadVirtualMemory(HANDLE,const void*,void*,SIZE_T,SIZE_T*);
1702 NTSTATUS WINAPI NtRegisterThreadTerminatePort(HANDLE);
1703 NTSTATUS WINAPI NtReleaseMutant(HANDLE,PLONG);
1704 NTSTATUS WINAPI NtReleaseSemaphore(HANDLE,ULONG,PULONG);
1705 NTSTATUS WINAPI NtRemoveIoCompletion(HANDLE,PULONG,PULONG,PIO_STATUS_BLOCK,PLARGE_INTEGER);
1706 NTSTATUS WINAPI NtReplaceKey(POBJECT_ATTRIBUTES,HKEY,POBJECT_ATTRIBUTES);
1707 NTSTATUS WINAPI NtReplyWaitReceivePort(HANDLE,PULONG,PLPC_MESSAGE,PLPC_MESSAGE);
1708 NTSTATUS WINAPI NtReplyWaitReplyPort(HANDLE,PLPC_MESSAGE);
1709 NTSTATUS WINAPI NtRequestWaitReplyPort(HANDLE,PLPC_MESSAGE,PLPC_MESSAGE);
1710 NTSTATUS WINAPI NtResetEvent(HANDLE,PULONG);
1711 NTSTATUS WINAPI NtRestoreKey(HKEY,HANDLE,ULONG);
1712 NTSTATUS WINAPI NtResumeThread(HANDLE,PULONG);
1713 NTSTATUS WINAPI NtSaveKey(HKEY,HANDLE);
1714 NTSTATUS WINAPI NtSetContextThread(HANDLE,const CONTEXT*);
1715 NTSTATUS WINAPI NtSetDefaultLocale(BOOLEAN,LCID);
1716 NTSTATUS WINAPI NtSetDefaultUILanguage(LANGID);
1717 NTSTATUS WINAPI NtSetEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG);
1718 NTSTATUS WINAPI NtSetEvent(HANDLE,PULONG);
1719 NTSTATUS WINAPI NtSetInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS);
1720 NTSTATUS WINAPI NtSetInformationKey(HKEY,const int,PVOID,ULONG);
1721 NTSTATUS WINAPI NtSetInformationObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG);
1722 NTSTATUS WINAPI NtSetInformationProcess(HANDLE,PROCESS_INFORMATION_CLASS,PVOID,ULONG);
1723 NTSTATUS WINAPI NtSetInformationThread(HANDLE,THREADINFOCLASS,LPCVOID,ULONG);
1724 NTSTATUS WINAPI NtSetInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG);
1725 NTSTATUS WINAPI NtSetIntervalProfile(ULONG,KPROFILE_SOURCE);
1726 NTSTATUS WINAPI NtSetIoCompletion(HANDLE,ULONG,ULONG,NTSTATUS,ULONG);
1727 NTSTATUS WINAPI NtSetSecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
1728 NTSTATUS WINAPI NtSetSystemTime(const LARGE_INTEGER*,LARGE_INTEGER*);
1729 NTSTATUS WINAPI NtSetTimer(HANDLE, const LARGE_INTEGER*, PTIMER_APC_ROUTINE, PVOID, BOOLEAN, ULONG, BOOLEAN*);
1730 NTSTATUS WINAPI NtSetTimerResolution(ULONG,BOOLEAN,PULONG);
1731 NTSTATUS WINAPI NtSetValueKey(HKEY,const UNICODE_STRING *,ULONG,ULONG,const void *,ULONG);
1732 NTSTATUS WINAPI NtSetVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
1733 NTSTATUS WINAPI NtSignalAndWaitForSingleObject(HANDLE,HANDLE,BOOLEAN,const LARGE_INTEGER*);
1734 NTSTATUS WINAPI NtShutdownSystem(SHUTDOWN_ACTION);
1735 NTSTATUS WINAPI NtSuspendThread(HANDLE,PULONG);
1736 NTSTATUS WINAPI NtTerminateProcess(HANDLE,LONG);
1737 NTSTATUS WINAPI NtTerminateThread(HANDLE,LONG);
1738 NTSTATUS WINAPI NtUnloadDriver(const UNICODE_STRING *);
1739 NTSTATUS WINAPI NtUnloadKey(HKEY);
1740 NTSTATUS WINAPI NtUnlockFile(HANDLE,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,PULONG);
1741 NTSTATUS WINAPI NtUnlockVirtualMemory(HANDLE,PVOID*,ULONG*,ULONG);
1742 NTSTATUS WINAPI NtUnmapViewOfSection(HANDLE,PVOID);
1743 NTSTATUS WINAPI NtWaitForSingleObject(HANDLE,BOOLEAN,const LARGE_INTEGER*);
1744 NTSTATUS WINAPI NtWaitForMultipleObjects(ULONG,const HANDLE*,BOOLEAN,BOOLEAN,const LARGE_INTEGER*);
1745 NTSTATUS WINAPI NtWriteFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,const void*,ULONG,PLARGE_INTEGER,PULONG);
1746 NTSTATUS WINAPI NtWriteVirtualMemory(HANDLE,void*,const void*,SIZE_T,SIZE_T*);
1747 NTSTATUS WINAPI NtYieldExecution(void);
1749 void WINAPI RtlAcquirePebLock(void);
1750 BYTE WINAPI RtlAcquireResourceExclusive(LPRTL_RWLOCK,BYTE);
1751 BYTE WINAPI RtlAcquireResourceShared(LPRTL_RWLOCK,BYTE);
1752 NTSTATUS WINAPI RtlAddAce(PACL,DWORD,DWORD,PACE_HEADER,DWORD);
1753 NTSTATUS WINAPI RtlAddAccessAllowedAce(PACL,DWORD,DWORD,PSID);
1754 NTSTATUS WINAPI RtlAddAccessAllowedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
1755 NTSTATUS WINAPI RtlAddAccessDeniedAce(PACL,DWORD,DWORD,PSID);
1756 NTSTATUS WINAPI RtlAddAccessDeniedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
1757 NTSTATUS WINAPI RtlAddAtomToAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*);
1758 PVOID WINAPI RtlAddVectoredExceptionHandler(ULONG,PVECTORED_EXCEPTION_HANDLER);
1759 NTSTATUS WINAPI RtlAdjustPrivilege(ULONG,BOOLEAN,BOOLEAN,PBOOLEAN);
1760 NTSTATUS WINAPI RtlAllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PSID *);
1761 RTL_HANDLE * WINAPI RtlAllocateHandle(RTL_HANDLE_TABLE *,ULONG *);
1762 PVOID WINAPI RtlAllocateHeap(HANDLE,ULONG,ULONG);
1763 WCHAR WINAPI RtlAnsiCharToUnicodeChar(LPSTR *);
1764 DWORD WINAPI RtlAnsiStringToUnicodeSize(const STRING *);
1765 NTSTATUS WINAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING,PCANSI_STRING,BOOLEAN);
1766 NTSTATUS WINAPI RtlAppendAsciizToString(STRING *,LPCSTR);
1767 NTSTATUS WINAPI RtlAppendStringToString(STRING *,const STRING *);
1768 NTSTATUS WINAPI RtlAppendUnicodeStringToString(UNICODE_STRING *,const UNICODE_STRING *);
1769 NTSTATUS WINAPI RtlAppendUnicodeToString(UNICODE_STRING *,LPCWSTR);
1770 BOOLEAN WINAPI RtlAreAllAccessesGranted(ACCESS_MASK,ACCESS_MASK);
1771 BOOLEAN WINAPI RtlAreAnyAccessesGranted(ACCESS_MASK,ACCESS_MASK);
1772 BOOLEAN WINAPI RtlAreBitsSet(PCRTL_BITMAP,ULONG,ULONG);
1773 BOOLEAN WINAPI RtlAreBitsClear(PCRTL_BITMAP,ULONG,ULONG);
1775 NTSTATUS WINAPI RtlCharToInteger(PCSZ,ULONG,PULONG);
1776 NTSTATUS WINAPI RtlCheckRegistryKey(ULONG, PWSTR);
1777 void WINAPI RtlClearAllBits(PRTL_BITMAP);
1778 void WINAPI RtlClearBits(PRTL_BITMAP,ULONG,ULONG);
1779 PDEBUG_BUFFER WINAPI RtlCreateQueryDebugBuffer(ULONG,BOOLEAN);
1780 ULONG WINAPI RtlCompactHeap(HANDLE,ULONG);
1781 LONG WINAPI RtlCompareString(const STRING*,const STRING*,BOOLEAN);
1782 LONG WINAPI RtlCompareUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
1783 DWORD WINAPI RtlComputeCrc32(DWORD,PBYTE,INT);
1784 NTSTATUS WINAPI RtlConvertSidToUnicodeString(PUNICODE_STRING,PSID,BOOLEAN);
1785 LONGLONG WINAPI RtlConvertLongToLargeInteger(LONG);
1786 ULONGLONG WINAPI RtlConvertUlongToLargeInteger(ULONG);
1787 void WINAPI RtlCopyLuid(PLUID,const LUID*);
1788 void WINAPI RtlCopyLuidAndAttributesArray(ULONG,const LUID_AND_ATTRIBUTES*,PLUID_AND_ATTRIBUTES);
1789 BOOLEAN WINAPI RtlCopySid(DWORD,PSID,PSID);
1790 void WINAPI RtlCopyString(STRING*,const STRING*);
1791 void WINAPI RtlCopyUnicodeString(UNICODE_STRING*,const UNICODE_STRING*);
1792 NTSTATUS WINAPI RtlCreateAcl(PACL,DWORD,DWORD);
1793 NTSTATUS WINAPI RtlCreateAtomTable(ULONG,RTL_ATOM_TABLE*);
1794 NTSTATUS WINAPI RtlCreateEnvironment(BOOLEAN, PWSTR*);
1795 HANDLE WINAPI RtlCreateHeap(ULONG,PVOID,ULONG,ULONG,PVOID,PRTL_HEAP_DEFINITION);
1796 NTSTATUS WINAPI RtlCreateProcessParameters(RTL_USER_PROCESS_PARAMETERS**,const UNICODE_STRING*,
1797 const UNICODE_STRING*,const UNICODE_STRING*,
1798 const UNICODE_STRING*,PWSTR,const UNICODE_STRING*,
1799 const UNICODE_STRING*,const UNICODE_STRING*,
1800 const UNICODE_STRING*);
1801 NTSTATUS WINAPI RtlCreateSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD);
1802 BOOLEAN WINAPI RtlCreateUnicodeString(PUNICODE_STRING,LPCWSTR);
1803 BOOLEAN WINAPI RtlCreateUnicodeStringFromAsciiz(PUNICODE_STRING,LPCSTR);
1804 NTSTATUS WINAPI RtlCreateUserThread(HANDLE,const SECURITY_DESCRIPTOR*,BOOLEAN,PVOID,SIZE_T,SIZE_T,PRTL_THREAD_START_ROUTINE,void*,HANDLE*,CLIENT_ID*);
1806 NTSTATUS WINAPI RtlDeleteAce(PACL,DWORD);
1807 NTSTATUS WINAPI RtlDeleteAtomFromAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
1808 NTSTATUS WINAPI RtlDeleteCriticalSection(RTL_CRITICAL_SECTION *);
1809 NTSTATUS WINAPI RtlDeleteRegistryValue(ULONG, PCWSTR, PCWSTR);
1810 void WINAPI RtlDeleteResource(LPRTL_RWLOCK);
1811 DWORD WINAPI RtlDeleteSecurityObject(DWORD);
1812 PRTL_USER_PROCESS_PARAMETERS WINAPI RtlDeNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
1813 NTSTATUS WINAPI RtlDestroyAtomTable(RTL_ATOM_TABLE);
1814 NTSTATUS WINAPI RtlDestroyEnvironment(PWSTR);
1815 NTSTATUS WINAPI RtlDestroyHandleTable(RTL_HANDLE_TABLE *);
1816 HANDLE WINAPI RtlDestroyHeap(HANDLE);
1817 void WINAPI RtlDestroyProcessParameters(RTL_USER_PROCESS_PARAMETERS*);
1818 NTSTATUS WINAPI RtlDestroyQueryDebugBuffer(PDEBUG_BUFFER);
1819 DOS_PATHNAME_TYPE WINAPI RtlDetermineDosPathNameType_U(PCWSTR);
1820 BOOLEAN WINAPI RtlDoesFileExists_U(LPCWSTR);
1821 BOOLEAN WINAPI RtlDosPathNameToNtPathName_U(PCWSTR,PUNICODE_STRING,PWSTR*,CURDIR*);
1822 ULONG WINAPI RtlDosSearchPath_U(LPCWSTR, LPCWSTR, LPCWSTR, ULONG, LPWSTR, LPWSTR*);
1823 WCHAR WINAPI RtlDowncaseUnicodeChar(WCHAR);
1824 NTSTATUS WINAPI RtlDowncaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
1825 void WINAPI RtlDumpResource(LPRTL_RWLOCK);
1826 NTSTATUS WINAPI RtlDuplicateUnicodeString(int,const UNICODE_STRING*,UNICODE_STRING*);
1828 NTSTATUS WINAPI RtlEmptyAtomTable(RTL_ATOM_TABLE,BOOLEAN);
1829 LONGLONG WINAPI RtlEnlargedIntegerMultiply(INT,INT);
1830 ULONGLONG WINAPI RtlEnlargedUnsignedMultiply(UINT,UINT);
1831 UINT WINAPI RtlEnlargedUnsignedDivide(ULONGLONG,UINT,UINT *);
1832 NTSTATUS WINAPI RtlEnterCriticalSection(RTL_CRITICAL_SECTION *);
1833 void WINAPI RtlEraseUnicodeString(UNICODE_STRING*);
1834 NTSTATUS WINAPI RtlEqualComputerName(const UNICODE_STRING*,const UNICODE_STRING*);
1835 NTSTATUS WINAPI RtlEqualDomainName(const UNICODE_STRING*,const UNICODE_STRING*);
1836 BOOLEAN WINAPI RtlEqualLuid(const LUID*,const LUID*);
1837 BOOL WINAPI RtlEqualPrefixSid(PSID,PSID);
1838 BOOL WINAPI RtlEqualSid(PSID,PSID);
1839 BOOLEAN WINAPI RtlEqualString(const STRING*,const STRING*,BOOLEAN);
1840 BOOLEAN WINAPI RtlEqualUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
1841 NTSTATUS WINAPI RtlExpandEnvironmentStrings_U(PWSTR, const UNICODE_STRING*, UNICODE_STRING*, ULONG*);
1842 LONGLONG WINAPI RtlExtendedMagicDivide(LONGLONG,LONGLONG,INT);
1843 LONGLONG WINAPI RtlExtendedIntegerMultiply(LONGLONG,INT);
1844 LONGLONG WINAPI RtlExtendedLargeIntegerDivide(LONGLONG,INT,INT *);
1846 NTSTATUS WINAPI RtlFindCharInUnicodeString(int,const UNICODE_STRING*,const UNICODE_STRING*,USHORT*);
1847 ULONG WINAPI RtlFindClearBits(PCRTL_BITMAP,ULONG,ULONG);
1848 ULONG WINAPI RtlFindClearBitsAndSet(PRTL_BITMAP,ULONG,ULONG);
1849 ULONG WINAPI RtlFindClearRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
1850 ULONG WINAPI RtlFindLastBackwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
1851 ULONG WINAPI RtlFindLastBackwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
1852 CCHAR WINAPI RtlFindLeastSignificantBit(ULONGLONG);
1853 ULONG WINAPI RtlFindLongestRunSet(PCRTL_BITMAP,PULONG);
1854 ULONG WINAPI RtlFindLongestRunClear(PCRTL_BITMAP,PULONG);
1855 NTSTATUS WINAPI RtlFindMessage(HMODULE,ULONG,ULONG,ULONG,const MESSAGE_RESOURCE_ENTRY**);
1856 CCHAR WINAPI RtlFindMostSignificantBit(ULONGLONG);
1857 ULONG WINAPI RtlFindNextForwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
1858 ULONG WINAPI RtlFindNextForwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
1859 ULONG WINAPI RtlFindSetBits(PCRTL_BITMAP,ULONG,ULONG);
1860 ULONG WINAPI RtlFindSetBitsAndClear(PRTL_BITMAP,ULONG,ULONG);
1861 ULONG WINAPI RtlFindSetRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
1862 BOOLEAN WINAPI RtlFirstFreeAce(PACL,PACE_HEADER *);
1863 NTSTATUS WINAPI RtlFormatCurrentUserKeyPath(PUNICODE_STRING);
1864 NTSTATUS WINAPI RtlFormatMessage(LPWSTR,UCHAR,BOOLEAN,BOOLEAN,BOOLEAN,va_list *,LPWSTR,ULONG);
1865 void WINAPI RtlFreeAnsiString(PANSI_STRING);
1866 BOOLEAN WINAPI RtlFreeHandle(RTL_HANDLE_TABLE *,RTL_HANDLE *);
1867 BOOLEAN WINAPI RtlFreeHeap(HANDLE,ULONG,PVOID);
1868 void WINAPI RtlFreeOemString(POEM_STRING);
1869 DWORD WINAPI RtlFreeSid(PSID);
1870 void WINAPI RtlFreeUnicodeString(PUNICODE_STRING);
1872 NTSTATUS WINAPI RtlGetAce(PACL,DWORD,LPVOID *);
1873 NTSTATUS WINAPI RtlGetControlSecurityDescriptor(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL,LPDWORD);
1874 NTSTATUS WINAPI RtlGetCurrentDirectory_U(ULONG, LPWSTR);
1875 NTSTATUS WINAPI RtlGetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
1876 ULONG WINAPI RtlGetFullPathName_U(PCWSTR,ULONG,PWSTR,PWSTR*);
1877 NTSTATUS WINAPI RtlGetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
1878 NTSTATUS WINAPI RtlGetLastNtStatus(void);
1879 DWORD WINAPI RtlGetLastWin32Error(void);
1880 DWORD WINAPI RtlGetLongestNtPathLength(void);
1881 BOOLEAN WINAPI RtlGetNtProductType(LPDWORD);
1882 NTSTATUS WINAPI RtlGetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
1883 ULONG WINAPI RtlGetProcessHeaps(ULONG,HANDLE*);
1884 NTSTATUS WINAPI RtlGetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
1885 NTSTATUS WINAPI RtlGetVersion(RTL_OSVERSIONINFOEXW*);
1887 PSID_IDENTIFIER_AUTHORITY WINAPI RtlIdentifierAuthoritySid(PSID);
1888 PVOID WINAPI RtlImageDirectoryEntryToData(HMODULE,BOOL,WORD,ULONG *);
1889 PIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE);
1890 PIMAGE_SECTION_HEADER WINAPI RtlImageRvaToSection(const IMAGE_NT_HEADERS *,HMODULE,DWORD);
1891 PVOID WINAPI RtlImageRvaToVa(const IMAGE_NT_HEADERS *,HMODULE,DWORD,IMAGE_SECTION_HEADER **);
1892 BOOL WINAPI RtlImpersonateSelf(SECURITY_IMPERSONATION_LEVEL);
1893 void WINAPI RtlInitString(PSTRING,PCSZ);
1894 void WINAPI RtlInitAnsiString(PANSI_STRING,PCSZ);
1895 void WINAPI RtlInitUnicodeString(PUNICODE_STRING,PCWSTR);
1896 NTSTATUS WINAPI RtlInitUnicodeStringEx(PUNICODE_STRING,PCWSTR);
1897 NTSTATUS WINAPI RtlInitializeCriticalSection(RTL_CRITICAL_SECTION *);
1898 NTSTATUS WINAPI RtlInitializeCriticalSectionAndSpinCount(RTL_CRITICAL_SECTION *,DWORD);
1899 void WINAPI RtlInitializeBitMap(PRTL_BITMAP,PULONG,ULONG);
1900 void WINAPI RtlInitializeHandleTable(ULONG,ULONG,RTL_HANDLE_TABLE *);
1901 void WINAPI RtlInitializeResource(LPRTL_RWLOCK);
1902 BOOL WINAPI RtlInitializeSid(PSID,PSID_IDENTIFIER_AUTHORITY,BYTE);
1904 NTSTATUS WINAPI RtlInt64ToUnicodeString(ULONGLONG,ULONG,UNICODE_STRING *);
1905 NTSTATUS WINAPI RtlIntegerToChar(ULONG,ULONG,ULONG,PCHAR);
1906 NTSTATUS WINAPI RtlIntegerToUnicodeString(ULONG,ULONG,UNICODE_STRING *);
1907 ULONG WINAPI RtlIsDosDeviceName_U(PCWSTR);
1908 BOOLEAN WINAPI RtlIsNameLegalDOS8Dot3(const UNICODE_STRING*,POEM_STRING,PBOOLEAN);
1909 BOOLEAN WINAPI RtlIsTextUnicode(LPCVOID,INT,INT *);
1910 BOOLEAN WINAPI RtlIsValidHandle(const RTL_HANDLE_TABLE *, const RTL_HANDLE *);
1911 BOOLEAN WINAPI RtlIsValidIndexHandle(const RTL_HANDLE_TABLE *, ULONG Index, RTL_HANDLE **);
1913 LONGLONG WINAPI RtlLargeIntegerAdd(LONGLONG,LONGLONG);
1914 LONGLONG WINAPI RtlLargeIntegerArithmeticShift(LONGLONG,INT);
1915 ULONGLONG WINAPI RtlLargeIntegerDivide( ULONGLONG,ULONGLONG,ULONGLONG *);
1916 LONGLONG WINAPI RtlLargeIntegerNegate(LONGLONG);
1917 LONGLONG WINAPI RtlLargeIntegerShiftLeft(LONGLONG,INT);
1918 LONGLONG WINAPI RtlLargeIntegerShiftRight(LONGLONG,INT);
1919 LONGLONG WINAPI RtlLargeIntegerSubtract(LONGLONG,LONGLONG);
1920 NTSTATUS WINAPI RtlLargeIntegerToChar(const ULONGLONG *,ULONG,ULONG,PCHAR);
1921 NTSTATUS WINAPI RtlLeaveCriticalSection(RTL_CRITICAL_SECTION *);
1922 DWORD WINAPI RtlLengthRequiredSid(DWORD);
1923 ULONG WINAPI RtlLengthSecurityDescriptor(PSECURITY_DESCRIPTOR);
1924 DWORD WINAPI RtlLengthSid(PSID);
1925 NTSTATUS WINAPI RtlLocalTimeToSystemTime(const LARGE_INTEGER*,PLARGE_INTEGER);
1926 BOOLEAN WINAPI RtlLockHeap(HANDLE);
1927 NTSTATUS WINAPI RtlLookupAtomInAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*);
1929 NTSTATUS WINAPI RtlMakeSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,LPDWORD);
1930 void WINAPI RtlMapGenericMask(PACCESS_MASK,const GENERIC_MAPPING*);
1931 NTSTATUS WINAPI RtlMultiByteToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
1932 NTSTATUS WINAPI RtlMultiByteToUnicodeSize(DWORD*,LPCSTR,UINT);
1934 DWORD WINAPI RtlNewSecurityObject(DWORD,DWORD,DWORD,DWORD,DWORD,DWORD);
1935 PRTL_USER_PROCESS_PARAMETERS WINAPI RtlNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
1936 ULONG WINAPI RtlNtStatusToDosError(NTSTATUS);
1937 ULONG WINAPI RtlNtStatusToDosErrorNoTeb(NTSTATUS);
1938 ULONG WINAPI RtlNumberOfSetBits(PCRTL_BITMAP);
1939 ULONG WINAPI RtlNumberOfClearBits(PCRTL_BITMAP);
1941 UINT WINAPI RtlOemStringToUnicodeSize(const STRING*);
1942 NTSTATUS WINAPI RtlOemStringToUnicodeString(UNICODE_STRING*,const STRING*,BOOLEAN);
1943 NTSTATUS WINAPI RtlOemToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
1944 DWORD WINAPI RtlOpenCurrentUser(ACCESS_MASK,PHKEY);
1946 NTSTATUS WINAPI RtlPinAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
1947 BOOLEAN WINAPI RtlPrefixString(const STRING*,const STRING*,BOOLEAN);
1948 BOOLEAN WINAPI RtlPrefixUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
1950 NTSTATUS WINAPI RtlQueryAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM,ULONG*,ULONG*,WCHAR*,ULONG*);
1951 NTSTATUS WINAPI RtlQueryEnvironmentVariable_U(PWSTR,PUNICODE_STRING,PUNICODE_STRING);
1952 NTSTATUS WINAPI RtlQueryInformationAcl(PACL,LPVOID,DWORD,ACL_INFORMATION_CLASS);
1953 NTSTATUS WINAPI RtlQueryProcessDebugInformation(ULONG,ULONG,PDEBUG_BUFFER);
1954 NTSTATUS WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID);
1955 NTSTATUS WINAPI RtlQueryTimeZoneInformation(LPTIME_ZONE_INFORMATION);
1956 void WINAPI RtlRaiseException(PEXCEPTION_RECORD);
1957 void WINAPI RtlRaiseStatus(NTSTATUS);
1958 ULONG WINAPI RtlRandom(PULONG);
1959 PVOID WINAPI RtlReAllocateHeap(HANDLE,ULONG,PVOID,ULONG);
1960 void WINAPI RtlReleasePebLock(void);
1961 void WINAPI RtlReleaseResource(LPRTL_RWLOCK);
1962 ULONG WINAPI RtlRemoveVectoredExceptionHandler(PVOID);
1963 void WINAPI RtlRestoreLastWin32Error(DWORD);
1965 void WINAPI RtlSecondsSince1970ToTime(DWORD,LARGE_INTEGER *);
1966 void WINAPI RtlSecondsSince1980ToTime(DWORD,LARGE_INTEGER *);
1967 NTSTATUS WINAPI RtlSelfRelativeToAbsoluteSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,
1968 PDWORD,PACL,PDWORD,PACL,PDWORD,PSID,PDWORD,PSID,PDWORD);
1969 void WINAPI RtlSetAllBits(PRTL_BITMAP);
1970 void WINAPI RtlSetBits(PRTL_BITMAP,ULONG,ULONG);
1971 ULONG WINAPI RtlSetCriticalSectionSpinCount(RTL_CRITICAL_SECTION*,ULONG);
1972 NTSTATUS WINAPI RtlSetCurrentDirectory_U(const UNICODE_STRING*);
1973 void WINAPI RtlSetCurrentEnvironment(PWSTR, PWSTR*);
1974 NTSTATUS WINAPI RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
1975 NTSTATUS WINAPI RtlSetEnvironmentVariable(PWSTR*,PUNICODE_STRING,PUNICODE_STRING);
1976 NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
1977 NTSTATUS WINAPI RtlSetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
1978 void WINAPI RtlSetLastWin32Error(DWORD);
1979 void WINAPI RtlSetLastWin32ErrorAndNtStatusFromNtStatus(NTSTATUS);
1980 NTSTATUS WINAPI RtlSetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
1981 NTSTATUS WINAPI RtlSetTimeZoneInformation(const TIME_ZONE_INFORMATION*);
1982 ULONG WINAPI RtlSizeHeap(HANDLE,ULONG,PVOID);
1983 LPDWORD WINAPI RtlSubAuthoritySid(PSID,DWORD);
1984 LPBYTE WINAPI RtlSubAuthorityCountSid(PSID);
1985 NTSTATUS WINAPI RtlSystemTimeToLocalTime(const LARGE_INTEGER*,PLARGE_INTEGER);
1987 void WINAPI RtlTimeToTimeFields(const LARGE_INTEGER*,PTIME_FIELDS);
1988 BOOLEAN WINAPI RtlTimeFieldsToTime(PTIME_FIELDS,PLARGE_INTEGER);
1989 void WINAPI RtlTimeToElapsedTimeFields(const LARGE_INTEGER *,PTIME_FIELDS);
1990 BOOLEAN WINAPI RtlTimeToSecondsSince1970(const LARGE_INTEGER *,LPDWORD);
1991 BOOLEAN WINAPI RtlTimeToSecondsSince1980(const LARGE_INTEGER *,LPDWORD);
1992 BOOL WINAPI RtlTryEnterCriticalSection(RTL_CRITICAL_SECTION *);
1994 ULONGLONG __cdecl RtlUlonglongByteSwap(ULONGLONG);
1995 DWORD WINAPI RtlUnicodeStringToAnsiSize(const UNICODE_STRING*);
1996 NTSTATUS WINAPI RtlUnicodeStringToAnsiString(PANSI_STRING,PCUNICODE_STRING,BOOLEAN);
1997 NTSTATUS WINAPI RtlUnicodeStringToInteger(const UNICODE_STRING *,ULONG,ULONG *);
1998 DWORD WINAPI RtlUnicodeStringToOemSize(const UNICODE_STRING*);
1999 NTSTATUS WINAPI RtlUnicodeStringToOemString(POEM_STRING,PCUNICODE_STRING,BOOLEAN);
2000 NTSTATUS WINAPI RtlUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2001 NTSTATUS WINAPI RtlUnicodeToMultiByteSize(PULONG,PCWSTR,ULONG);
2002 NTSTATUS WINAPI RtlUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2003 ULONG WINAPI RtlUniform(PULONG);
2004 BOOLEAN WINAPI RtlUnlockHeap(HANDLE);
2005 void WINAPI RtlUnwind(PVOID,PVOID,PEXCEPTION_RECORD,PVOID);
2007 void WINAPI RtlUnwind2(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT);
2008 void WINAPI RtlUnwindEx(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT,PUNWIND_HISTORY_TABLE);
2010 WCHAR WINAPI RtlUpcaseUnicodeChar(WCHAR);
2011 NTSTATUS WINAPI RtlUpcaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING *,BOOLEAN);
2012 NTSTATUS WINAPI RtlUpcaseUnicodeStringToAnsiString(STRING*,const UNICODE_STRING*,BOOLEAN);
2013 NTSTATUS WINAPI RtlUpcaseUnicodeStringToCountedOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
2014 NTSTATUS WINAPI RtlUpcaseUnicodeStringToOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
2015 NTSTATUS WINAPI RtlUpcaseUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2016 NTSTATUS WINAPI RtlUpcaseUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2017 CHAR WINAPI RtlUpperChar(CHAR);
2018 void WINAPI RtlUpperString(STRING *,const STRING *);
2020 NTSTATUS WINAPI RtlValidSecurityDescriptor(PSECURITY_DESCRIPTOR);
2021 BOOLEAN WINAPI RtlValidAcl(PACL);
2022 BOOLEAN WINAPI RtlValidSid(PSID);
2023 BOOLEAN WINAPI RtlValidateHeap(HANDLE,ULONG,LPCVOID);
2024 NTSTATUS WINAPI RtlVerifyVersionInfo(const RTL_OSVERSIONINFOEXW*,DWORD,DWORDLONG);
2026 NTSTATUS WINAPI RtlWalkHeap(HANDLE,PVOID);
2028 NTSTATUS WINAPI RtlpWaitForCriticalSection(RTL_CRITICAL_SECTION *);
2029 NTSTATUS WINAPI RtlpUnWaitCriticalSection(RTL_CRITICAL_SECTION *);
2031 /* Wine internal functions */
2033 extern NTSTATUS wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRING *unix_name_ret,
2034 UINT disposition, BOOLEAN check_case );
2036 /***********************************************************************
2040 #define InitializeObjectAttributes(p,n,a,r,s) \
2042 (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
2043 (p)->RootDirectory = r; \
2044 (p)->Attributes = a; \
2045 (p)->ObjectName = n; \
2046 (p)->SecurityDescriptor = s; \
2047 (p)->SecurityQualityOfService = NULL; \
2050 #define NtCurrentProcess() ((HANDLE)-1)
2052 #define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length))
2053 #define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length))
2054 #define RtlStoreUlong(p,v) do { ULONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
2055 #define RtlStoreUlonglong(p,v) do { ULONGLONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
2056 #define RtlRetrieveUlong(p,s) memcpy((p), (s), sizeof(ULONG))
2057 #define RtlRetrieveUlonglong(p,s) memcpy((p), (s), sizeof(ULONGLONG))
2058 #define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))
2060 inline static BOOLEAN RtlCheckBit(PCRTL_BITMAP lpBits, ULONG ulBit)
2062 if (lpBits && ulBit < lpBits->SizeOfBitMap &&
2063 lpBits->Buffer[ulBit >> 5] & (1 << (ulBit & 31)))
2068 /* These are implemented as __fastcall, so we can't let Winelib apps link with them */
2069 inline static USHORT RtlUshortByteSwap(USHORT s)
2071 return (s >> 8) | (s << 8);
2073 inline static ULONG RtlUlongByteSwap(ULONG i)
2075 #if defined(__i386__) && defined(__GNUC__)
2077 __asm__("bswap %0" : "=r" (ret) : "0" (i) );
2080 return ((ULONG)RtlUshortByteSwap((USHORT)i) << 16) | RtlUshortByteSwap((USHORT)(i >> 16));
2084 /*************************************************************************
2085 * Loader functions and structures.
2087 * Those are not part of standard Winternl.h
2089 typedef struct _LDR_MODULE
2091 LIST_ENTRY InLoadOrderModuleList;
2092 LIST_ENTRY InMemoryOrderModuleList;
2093 LIST_ENTRY InInitializationOrderModuleList;
2097 UNICODE_STRING FullDllName;
2098 UNICODE_STRING BaseDllName;
2102 HANDLE SectionHandle;
2104 ULONG TimeDateStamp;
2105 } LDR_MODULE, *PLDR_MODULE;
2107 /* those defines are (some of the) regular LDR_MODULE.Flags values */
2108 #define LDR_IMAGE_IS_DLL 0x00000004
2109 #define LDR_LOAD_IN_PROGRESS 0x00001000
2110 #define LDR_UNLOAD_IN_PROGRESS 0x00002000
2111 #define LDR_NO_DLL_CALLS 0x00040000
2112 #define LDR_PROCESS_ATTACHED 0x00080000
2113 #define LDR_MODULE_REBASED 0x00200000
2115 /* these ones is Wine specific */
2116 #define LDR_DONT_RESOLVE_REFS 0x40000000
2117 #define LDR_WINE_INTERNAL 0x80000000
2119 /* FIXME: to be checked */
2120 #define MAXIMUM_FILENAME_LENGTH 256
2122 typedef struct _SYSTEM_MODULE
2126 PVOID ImageBaseAddress;
2133 BYTE Name[MAXIMUM_FILENAME_LENGTH];
2134 } SYSTEM_MODULE, *PSYSTEM_MODULE;
2136 typedef struct _SYSTEM_MODULE_INFORMATION
2139 SYSTEM_MODULE Modules[1]; /* FIXME: should be Modules[0] */
2140 } SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;
2142 NTSTATUS WINAPI LdrDisableThreadCalloutsForDll(HMODULE);
2143 NTSTATUS WINAPI LdrFindEntryForAddress(const void*, PLDR_MODULE*);
2144 NTSTATUS WINAPI LdrLockLoaderLock(ULONG,ULONG*,ULONG*);
2145 NTSTATUS WINAPI LdrQueryProcessModuleInformation(SYSTEM_MODULE_INFORMATION*, ULONG, ULONG*);
2146 NTSTATUS WINAPI LdrUnloadDll(HMODULE);
2147 NTSTATUS WINAPI LdrUnlockLoaderLock(ULONG,ULONG);
2149 /* list manipulation macros */
2150 #define InitializeListHead(le) (void)((le)->Flink = (le)->Blink = (le))
2151 #define InsertHeadList(le,e) do { PLIST_ENTRY f = (le)->Flink; (e)->Flink = f; (e)->Blink = (le); f->Blink = (e); (le)->Flink = (e); } while (0)
2152 #define InsertTailList(le,e) do { PLIST_ENTRY b = (le)->Blink; (e)->Flink = (le); (e)->Blink = b; b->Flink = (e); (le)->Blink = (e); } while (0)
2153 #define IsListEmpty(le) ((le)->Flink == (le))
2154 #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)
2155 static inline PLIST_ENTRY RemoveHeadList(PLIST_ENTRY le)
2157 PLIST_ENTRY f, b, e;
2160 f = le->Flink->Flink;
2161 b = le->Flink->Blink;
2165 if (e != le) e->Flink = e->Blink = NULL;
2168 static inline PLIST_ENTRY RemoveTailList(PLIST_ENTRY le)
2170 PLIST_ENTRY f, b, e;
2173 f = le->Blink->Flink;
2174 b = le->Blink->Blink;
2178 if (e != le) e->Flink = e->Blink = NULL;
2184 #endif /* defined(__cplusplus) */
2186 #endif /* __WINE_WINTERNL_H */