- avoid winternl.h depending on winbase.h
[wine/multimedia.git] / include / winternl.h
blobe64dbf0dcacbc8da77ec43fb065d79f33ba0ef36
1 /*
2 * Internal NT APIs and data structures
4 * Copyright (C) the Wine project
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 #ifndef __WINE_WINTERNL_H
22 #define __WINE_WINTERNL_H
24 #include <windef.h>
26 #ifdef __cplusplus
27 extern "C" {
28 #endif /* defined(__cplusplus) */
31 /**********************************************************************
32 * Fundamental types and data structures
35 typedef LONG NTSTATUS;
37 typedef CONST char *PCSZ;
39 typedef short CSHORT;
40 typedef CSHORT *PCSHORT;
42 typedef struct _STRING {
43 USHORT Length;
44 USHORT MaximumLength;
45 PCHAR Buffer;
46 } STRING, *PSTRING;
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 */
59 PWSTR Buffer;
60 } UNICODE_STRING, *PUNICODE_STRING;
62 typedef const UNICODE_STRING *PCUNICODE_STRING;
64 #ifndef _FILETIME_
65 #define _FILETIME_
66 /* 64 bit number of 100 nanoseconds intervals since January 1, 1601 */
67 typedef struct _FILETIME
69 #ifdef WORDS_BIGENDIAN
70 DWORD dwHighDateTime;
71 DWORD dwLowDateTime;
72 #else
73 DWORD dwLowDateTime;
74 DWORD dwHighDateTime;
75 #endif
76 } FILETIME, *PFILETIME, *LPFILETIME;
77 #endif /* _FILETIME_ */
80 * RTL_SYSTEM_TIME and RTL_TIME_ZONE_INFORMATION are the same as
81 * the SYSTEMTIME and TIME_ZONE_INFORMATION structures defined
82 * in winbase.h, however we need to define them seperately so
83 * winternl.h doesn't depend on winbase.h. They are used by
84 * RtlQueryTimeZoneInformation and RtlSetTimeZoneInformation.
85 * The names are guessed; if anybody knows the real names, let me know.
87 typedef struct _RTL_SYSTEM_TIME {
88 WORD wYear;
89 WORD wMonth;
90 WORD wDayOfWeek;
91 WORD wDay;
92 WORD wHour;
93 WORD wMinute;
94 WORD wSecond;
95 WORD wMilliseconds;
96 } RTL_SYSTEM_TIME, *PRTL_SYSTEM_TIME;
98 typedef struct _RTL_TIME_ZONE_INFORMATION {
99 LONG Bias;
100 WCHAR StandardName[32];
101 RTL_SYSTEM_TIME StandardDate;
102 LONG StandardBias;
103 WCHAR DaylightName[32];
104 RTL_SYSTEM_TIME DaylightDate;
105 LONG DaylightBias;
106 } RTL_TIME_ZONE_INFORMATION, *PRTL_TIME_ZONE_INFORMATION;
108 typedef struct _CLIENT_ID
110 HANDLE UniqueProcess;
111 HANDLE UniqueThread;
112 } CLIENT_ID, *PCLIENT_ID;
114 typedef struct _CURDIR
116 UNICODE_STRING DosPath;
117 PVOID Handle;
118 } CURDIR, *PCURDIR;
120 typedef struct RTL_DRIVE_LETTER_CURDIR
122 USHORT Flags;
123 USHORT Length;
124 ULONG TimeStamp;
125 UNICODE_STRING DosPath;
126 } RTL_DRIVE_LETTER_CURDIR, *PRTL_DRIVE_LETTER_CURDIR;
128 typedef struct tagRTL_BITMAP {
129 ULONG SizeOfBitMap; /* Number of bits in the bitmap */
130 PULONG Buffer; /* Bitmap data, assumed sized to a DWORD boundary */
131 } RTL_BITMAP, *PRTL_BITMAP;
133 typedef const RTL_BITMAP *PCRTL_BITMAP;
135 typedef struct tagRTL_BITMAP_RUN {
136 ULONG StartingIndex; /* Bit position at which run starts */
137 ULONG NumberOfBits; /* Size of the run in bits */
138 } RTL_BITMAP_RUN, *PRTL_BITMAP_RUN;
140 typedef const RTL_BITMAP_RUN *PCRTL_BITMAP_RUN;
142 typedef struct _RTL_USER_PROCESS_PARAMETERS
144 ULONG AllocationSize;
145 ULONG Size;
146 ULONG Flags;
147 ULONG DebugFlags;
148 HANDLE ConsoleHandle;
149 ULONG ConsoleFlags;
150 HANDLE hStdInput;
151 HANDLE hStdOutput;
152 HANDLE hStdError;
153 CURDIR CurrentDirectory;
154 UNICODE_STRING DllPath;
155 UNICODE_STRING ImagePathName;
156 UNICODE_STRING CommandLine;
157 PWSTR Environment;
158 ULONG dwX;
159 ULONG dwY;
160 ULONG dwXSize;
161 ULONG dwYSize;
162 ULONG dwXCountChars;
163 ULONG dwYCountChars;
164 ULONG dwFillAttribute;
165 ULONG dwFlags;
166 ULONG wShowWindow;
167 UNICODE_STRING WindowTitle;
168 UNICODE_STRING Desktop;
169 UNICODE_STRING ShellInfo;
170 UNICODE_STRING RuntimeInfo;
171 RTL_DRIVE_LETTER_CURDIR DLCurrentDirectory[0x20];
172 } RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;
174 /* value for Flags field (FIXME: not the correct name) */
175 #define PROCESS_PARAMS_FLAG_NORMALIZED 1
177 typedef struct _PEB_LDR_DATA
179 ULONG Length;
180 BOOLEAN Initialized;
181 PVOID SsHandle;
182 LIST_ENTRY InLoadOrderModuleList;
183 LIST_ENTRY InMemoryOrderModuleList;
184 LIST_ENTRY InInitializationOrderModuleList;
185 } PEB_LDR_DATA, *PPEB_LDR_DATA;
187 typedef struct _GDI_TEB_BATCH
189 ULONG Offset;
190 HANDLE HDC;
191 ULONG Buffer[0x136];
192 } GDI_TEB_BATCH;
194 /***********************************************************************
195 * PEB data structure
197 typedef struct _PEB
199 BOOLEAN InheritedAddressSpace; /* 00 */
200 BOOLEAN ReadImageFileExecOptions; /* 01 */
201 BOOLEAN BeingDebugged; /* 02 */
202 BOOLEAN SpareBool; /* 03 */
203 HANDLE Mutant; /* 04 */
204 HMODULE ImageBaseAddress; /* 08 */
205 PPEB_LDR_DATA LdrData; /* 0c */
206 RTL_USER_PROCESS_PARAMETERS *ProcessParameters; /* 10 */
207 PVOID SubSystemData; /* 14 */
208 HANDLE ProcessHeap; /* 18 */
209 PRTL_CRITICAL_SECTION FastPebLock; /* 1c */
210 PVOID /*PPEBLOCKROUTINE*/ FastPebLockRoutine; /* 20 */
211 PVOID /*PPEBLOCKROUTINE*/ FastPebUnlockRoutine; /* 24 */
212 ULONG EnvironmentUpdateCount; /* 28 */
213 PVOID KernelCallbackTable; /* 2c */
214 PVOID EventLogSection; /* 30 */
215 PVOID EventLog; /* 34 */
216 PVOID /*PPEB_FREE_BLOCK*/ FreeList; /* 38 */
217 ULONG TlsExpansionCounter; /* 3c */
218 PRTL_BITMAP TlsBitmap; /* 40 */
219 ULONG TlsBitmapBits[2]; /* 44 */
220 PVOID ReadOnlySharedMemoryBase; /* 4c */
221 PVOID ReadOnlySharedMemoryHeap; /* 50 */
222 PVOID *ReadOnlyStaticServerData; /* 54 */
223 PVOID AnsiCodePageData; /* 58 */
224 PVOID OemCodePageData; /* 5c */
225 PVOID UnicodeCaseTableData; /* 60 */
226 ULONG NumberOfProcessors; /* 64 */
227 ULONG NtGlobalFlag; /* 68 */
228 BYTE Spare2[4]; /* 6c */
229 LARGE_INTEGER CriticalSectionTimeout; /* 70 */
230 ULONG HeapSegmentReserve; /* 78 */
231 ULONG HeapSegmentCommit; /* 7c */
232 ULONG HeapDeCommitTotalFreeThreshold; /* 80 */
233 ULONG HeapDeCommitFreeBlockThreshold; /* 84 */
234 ULONG NumberOfHeaps; /* 88 */
235 ULONG MaximumNumberOfHeaps; /* 8c */
236 PVOID *ProcessHeaps; /* 90 */
237 PVOID GdiSharedHandleTable; /* 94 */
238 PVOID ProcessStarterHelper; /* 98 */
239 PVOID GdiDCAttributeList; /* 9c */
240 PVOID LoaderLock; /* a0 */
241 ULONG OSMajorVersion; /* a4 */
242 ULONG OSMinorVersion; /* a8 */
243 ULONG OSBuildNumber; /* ac */
244 ULONG OSPlatformId; /* b0 */
245 ULONG ImageSubSystem; /* b4 */
246 ULONG ImageSubSystemMajorVersion; /* b8 */
247 ULONG ImageSubSystemMinorVersion; /* bc */
248 ULONG ImageProcessAffinityMask; /* c0 */
249 ULONG GdiHandleBuffer[34]; /* c4 */
250 ULONG PostProcessInitRoutine; /* 14c */
251 PRTL_BITMAP TlsExpansionBitmap; /* 150 */
252 ULONG TlsExpansionBitmapBits[32]; /* 154 */
253 ULONG SessionId; /* 1d4 */
254 } PEB, *PPEB;
257 /***********************************************************************
258 * TEB data structure
260 #ifndef WINE_NO_TEB /* don't define TEB if included from thread.h */
261 # ifndef WINE_TEB_DEFINED
262 # define WINE_TEB_DEFINED
263 typedef struct _TEB
265 NT_TIB Tib; /* 000 */
266 PVOID EnvironmentPointer; /* 01c */
267 CLIENT_ID ClientId; /* 020 */
268 PVOID ActiveRpcHandle; /* 028 */
269 PVOID ThreadLocalStoragePointer; /* 02c */
270 PPEB Peb; /* 030 */
271 ULONG LastErrorValue; /* 034 */
272 ULONG CountOfOwnedCriticalSections;/* 038 */
273 PVOID CsrClientThread; /* 03c */
274 PVOID Win32ThreadInfo; /* 040 */
275 ULONG Win32ClientInfo[31]; /* 044 used for user32 private data in Wine */
276 PVOID WOW32Reserved; /* 0c0 */
277 ULONG CurrentLocale; /* 0c4 */
278 ULONG FpSoftwareStatusRegister; /* 0c8 */
279 PVOID SystemReserved1[54]; /* 0cc used for kernel32 private data in Wine */
280 PVOID Spare1; /* 1a4 */
281 LONG ExceptionCode; /* 1a8 */
282 BYTE SpareBytes1[40]; /* 1ac */
283 PVOID SystemReserved2[10]; /* 1d4 used for ntdll private data in Wine */
284 GDI_TEB_BATCH GdiTebBatch; /* 1fc */
285 ULONG gdiRgn; /* 6dc */
286 ULONG gdiPen; /* 6e0 */
287 ULONG gdiBrush; /* 6e4 */
288 CLIENT_ID RealClientId; /* 6e8 */
289 HANDLE GdiCachedProcessHandle; /* 6f0 */
290 ULONG GdiClientPID; /* 6f4 */
291 ULONG GdiClientTID; /* 6f8 */
292 PVOID GdiThreadLocaleInfo; /* 6fc */
293 PVOID UserReserved[5]; /* 700 */
294 PVOID glDispachTable[280]; /* 714 */
295 ULONG glReserved1[26]; /* b74 */
296 PVOID glReserved2; /* bdc */
297 PVOID glSectionInfo; /* be0 */
298 PVOID glSection; /* be4 */
299 PVOID glTable; /* be8 */
300 PVOID glCurrentRC; /* bec */
301 PVOID glContext; /* bf0 */
302 ULONG LastStatusValue; /* bf4 */
303 UNICODE_STRING StaticUnicodeString; /* bf8 used by advapi32 */
304 WCHAR StaticUnicodeBuffer[261]; /* c00 used by advapi32 */
305 PVOID DeallocationStack; /* e0c */
306 PVOID TlsSlots[64]; /* e10 */
307 LIST_ENTRY TlsLinks; /* f10 */
308 PVOID Vdm; /* f18 */
309 PVOID ReservedForNtRpc; /* f1c */
310 PVOID DbgSsReserved[2]; /* f20 */
311 ULONG HardErrorDisabled; /* f28 */
312 PVOID Instrumentation[16]; /* f2c */
313 PVOID WinSockData; /* f6c */
314 ULONG GdiBatchCount; /* f70 */
315 ULONG Spare2; /* f74 */
316 ULONG Spare3; /* f78 */
317 ULONG Spare4; /* f7c */
318 PVOID ReservedForOle; /* f80 */
319 ULONG WaitingOnLoaderLock; /* f84 */
320 PVOID Reserved5[3]; /* f88 */
321 PVOID *TlsExpansionSlots; /* f94 */
322 } TEB, *PTEB;
323 # endif /* WINE_TEB_DEFINED */
324 #endif /* WINE_NO_TEB */
326 /***********************************************************************
327 * Enums
330 typedef enum _FILE_INFORMATION_CLASS {
331 FileDirectoryInformation = 1,
332 FileFullDirectoryInformation,
333 FileBothDirectoryInformation,
334 FileBasicInformation,
335 FileStandardInformation,
336 FileInternalInformation,
337 FileEaInformation,
338 FileAccessInformation,
339 FileNameInformation,
340 FileRenameInformation,
341 FileLinkInformation,
342 FileNamesInformation,
343 FileDispositionInformation,
344 FilePositionInformation,
345 FileFullEaInformation,
346 FileModeInformation,
347 FileAlignmentInformation,
348 FileAllInformation,
349 FileAllocationInformation,
350 FileEndOfFileInformation,
351 FileAlternateNameInformation,
352 FileStreamInformation,
353 FilePipeInformation,
354 FilePipeLocalInformation,
355 FilePipeRemoteInformation,
356 FileMailslotQueryInformation,
357 FileMailslotSetInformation,
358 FileCompressionInformation,
359 FileObjectIdInformation,
360 FileCompletionInformation,
361 FileMoveClusterInformation,
362 FileQuotaInformation,
363 FileReparsePointInformation,
364 FileNetworkOpenInformation,
365 FileAttributeTagInformation,
366 FileTrackingInformation,
367 FileMaximumInformation
368 } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
370 typedef struct _FILE_DIRECTORY_INFORMATION {
371 ULONG NextEntryOffset;
372 ULONG FileIndex;
373 LARGE_INTEGER CreationTime;
374 LARGE_INTEGER LastAccessTime;
375 LARGE_INTEGER LastWriteTime;
376 LARGE_INTEGER ChangeTime;
377 LARGE_INTEGER EndOfFile;
378 LARGE_INTEGER AllocationSize;
379 ULONG FileAttributes;
380 ULONG FileNameLength;
381 WCHAR FileName[ANYSIZE_ARRAY];
382 } FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION;
384 typedef struct _FILE_FULL_DIRECTORY_INFORMATION {
385 ULONG NextEntryOffset;
386 ULONG FileIndex;
387 LARGE_INTEGER CreationTime;
388 LARGE_INTEGER LastAccessTime;
389 LARGE_INTEGER LastWriteTime;
390 LARGE_INTEGER ChangeTime;
391 LARGE_INTEGER EndOfFile;
392 LARGE_INTEGER AllocationSize;
393 ULONG FileAttributes;
394 ULONG FileNameLength;
395 ULONG EaSize;
396 WCHAR FileName[ANYSIZE_ARRAY];
397 } FILE_FULL_DIRECTORY_INFORMATION, *PFILE_FULL_DIRECTORY_INFORMATION,
398 FILE_FULL_DIR_INFORMATION, *PFILE_FULL_DIR_INFORMATION;
400 typedef struct _FILE_BOTH_DIRECTORY_INFORMATION {
401 ULONG NextEntryOffset;
402 ULONG FileIndex;
403 LARGE_INTEGER CreationTime;
404 LARGE_INTEGER LastAccessTime;
405 LARGE_INTEGER LastWriteTime;
406 LARGE_INTEGER ChangeTime;
407 LARGE_INTEGER EndOfFile;
408 LARGE_INTEGER AllocationSize;
409 ULONG FileAttributes;
410 ULONG FileNameLength;
411 ULONG EaSize;
412 CHAR ShortNameLength;
413 WCHAR ShortName[12];
414 WCHAR FileName[ANYSIZE_ARRAY];
415 } FILE_BOTH_DIRECTORY_INFORMATION, *PFILE_BOTH_DIRECTORY_INFORMATION,
416 FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;
418 typedef struct _FILE_BASIC_INFORMATION {
419 LARGE_INTEGER CreationTime;
420 LARGE_INTEGER LastAccessTime;
421 LARGE_INTEGER LastWriteTime;
422 LARGE_INTEGER ChangeTime;
423 ULONG FileAttributes;
424 } FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
426 typedef struct _FILE_STANDARD_INFORMATION {
427 LARGE_INTEGER AllocationSize;
428 LARGE_INTEGER EndOfFile;
429 ULONG NumberOfLinks;
430 BOOLEAN DeletePending;
431 BOOLEAN Directory;
432 } FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;
434 typedef struct _FILE_INTERNAL_INFORMATION {
435 LARGE_INTEGER IndexNumber;
436 } FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;
438 typedef struct _FILE_EA_INFORMATION {
439 ULONG EaSize;
440 } FILE_EA_INFORMATION, *PFILE_EA_INFORMATION;
442 typedef struct _FILE_ACCESS_INFORMATION {
443 ACCESS_MASK AccessFlags;
444 } FILE_ACCESS_INFORMATION, *PFILE_ACCESS_INFORMATION;
446 typedef struct _FILE_NAME_INFORMATION {
447 ULONG FileNameLength;
448 WCHAR FileName[1];
449 } FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
451 typedef struct _FILE_RENAME_INFORMATION {
452 BOOLEAN Replace;
453 HANDLE RootDir;
454 ULONG FileNameLength;
455 WCHAR FileName[1];
456 } FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;
458 typedef struct _FILE_NAMES_INFORMATION {
459 ULONG NextEntryOffset;
460 ULONG FileIndex;
461 ULONG FileNameLength;
462 WCHAR FileName[1];
463 } FILE_NAMES_INFORMATION, *PFILE_NAMES_INFORMATION;
465 typedef struct _FILE_DISPOSITION_INFORMATION {
466 BOOLEAN DoDeleteFile;
467 } FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION;
469 typedef struct _FILE_POSITION_INFORMATION {
470 LARGE_INTEGER CurrentByteOffset;
471 } FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;
473 typedef struct _FILE_ALIGNMENT_INFORMATION {
474 ULONG AlignmentRequirement;
475 } FILE_ALIGNMENT_INFORMATION, *PFILE_ALIGNMENT_INFORMATION;
477 typedef struct _FILE_ALLOCATION_INFORMATION {
478 LARGE_INTEGER AllocationSize;
479 } FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION;
481 typedef struct _FILE_END_OF_FILE_INFORMATION {
482 LARGE_INTEGER EndOfFile;
483 } FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;
485 typedef struct _FILE_NETWORK_OPEN_INFORMATION {
486 LARGE_INTEGER CreationTime;
487 LARGE_INTEGER LastAccessTime;
488 LARGE_INTEGER LastWriteTime;
489 LARGE_INTEGER ChangeTime;
490 LARGE_INTEGER AllocationSize;
491 LARGE_INTEGER EndOfFile;
492 ULONG FileAttributes;
493 } FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;
495 typedef struct _FILE_FULL_EA_INFORMATION {
496 ULONG NextEntryOffset;
497 UCHAR Flags;
498 UCHAR EaNameLength;
499 USHORT EaValueLength;
500 CHAR EaName[1];
501 } FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
503 typedef struct _FILE_MODE_INFORMATION {
504 ULONG Mode;
505 } FILE_MODE_INFORMATION, *PFILE_MODE_INFORMATION;
507 typedef struct _FILE_STREAM_INFORMATION
509 ULONG NextEntryOffset;
510 ULONG StreamNameLength;
511 LARGE_INTEGER StreamSize;
512 LARGE_INTEGER StreamAllocationSize;
513 WCHAR StreamName[1];
514 } FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
516 typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION
518 ULONG FileAttributes;
519 ULONG ReparseTag;
520 } FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION;
522 typedef struct _FILE_MAILSLOT_QUERY_INFORMATION {
523 ULONG MaximumMessageSize;
524 ULONG MailslotQuota;
525 ULONG NextMessageSize;
526 ULONG MessagesAvailable;
527 LARGE_INTEGER ReadTimeout;
528 } FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION;
530 typedef struct _FILE_MAILSLOT_SET_INFORMATION {
531 LARGE_INTEGER ReadTimeout;
532 } FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION;
534 typedef struct _FILE_ALL_INFORMATION
536 FILE_BASIC_INFORMATION BasicInformation;
537 FILE_STANDARD_INFORMATION StandardInformation;
538 FILE_INTERNAL_INFORMATION InternalInformation;
539 FILE_EA_INFORMATION EaInformation;
540 FILE_ACCESS_INFORMATION AccessInformation;
541 FILE_POSITION_INFORMATION PositionInformation;
542 FILE_MODE_INFORMATION ModeInformation;
543 FILE_ALIGNMENT_INFORMATION AlignmentInformation;
544 FILE_NAME_INFORMATION NameInformation;
545 } FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION;
547 typedef enum _FSINFOCLASS {
548 FileFsVolumeInformation = 1,
549 FileFsLabelInformation,
550 FileFsSizeInformation,
551 FileFsDeviceInformation,
552 FileFsAttributeInformation,
553 FileFsControlInformation,
554 FileFsFullSizeInformation,
555 FileFsObjectIdInformation,
556 FileFsMaximumInformation
557 } FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
559 typedef enum _KEY_INFORMATION_CLASS {
560 KeyBasicInformation,
561 KeyNodeInformation,
562 KeyFullInformation
563 } KEY_INFORMATION_CLASS;
565 typedef enum _KEY_VALUE_INFORMATION_CLASS {
566 KeyValueBasicInformation,
567 KeyValueFullInformation,
568 KeyValuePartialInformation,
569 KeyValueFullInformationAlign64,
570 KeyValuePartialInformationAlign64
571 } KEY_VALUE_INFORMATION_CLASS;
573 typedef enum _OBJECT_INFORMATION_CLASS {
574 ObjectBasicInformation,
575 ObjectNameInformation,
576 ObjectTypeInformation,
577 ObjectAllInformation,
578 ObjectDataInformation
579 } OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS;
581 typedef enum _PROCESSINFOCLASS {
582 ProcessBasicInformation = 0,
583 ProcessQuotaLimits = 1,
584 ProcessIoCounters = 2,
585 ProcessVmCounters = 3,
586 ProcessTimes = 4,
587 ProcessBasePriority = 5,
588 ProcessRaisePriority = 6,
589 ProcessDebugPort = 7,
590 ProcessExceptionPort = 8,
591 ProcessAccessToken = 9,
592 ProcessLdtInformation = 10,
593 ProcessLdtSize = 11,
594 ProcessDefaultHardErrorMode = 12,
595 ProcessIoPortHandlers = 13,
596 ProcessPooledUsageAndLimits = 14,
597 ProcessWorkingSetWatch = 15,
598 ProcessUserModeIOPL = 16,
599 ProcessEnableAlignmentFaultFixup = 17,
600 ProcessPriorityClass = 18,
601 ProcessWx86Information = 19,
602 ProcessHandleCount = 20,
603 ProcessAffinityMask = 21,
604 ProcessPriorityBoost = 22,
605 ProcessDeviceMap = 23,
606 ProcessSessionInformation = 24,
607 ProcessForegroundInformation = 25,
608 ProcessWow64Information = 26,
609 MaxProcessInfoClass
610 } PROCESSINFOCLASS, PROCESS_INFORMATION_CLASS;
612 typedef enum _SECTION_INHERIT {
613 ViewShare = 1,
614 ViewUnmap = 2
615 } SECTION_INHERIT;
617 typedef enum _SYSTEM_INFORMATION_CLASS {
618 SystemBasicInformation = 0,
619 SystemCpuInformation = 1,
620 SystemPerformanceInformation = 2,
621 SystemTimeOfDayInformation = 3, /* was SystemTimeInformation */
622 Unknown4,
623 SystemProcessInformation = 5,
624 Unknown6,
625 Unknown7,
626 SystemProcessorPerformanceInformation = 8,
627 Unknown9,
628 Unknown10,
629 SystemModuleInformation = 11,
630 Unknown12,
631 Unknown13,
632 Unknown14,
633 Unknown15,
634 SystemHandleInformation = 16,
635 Unknown17,
636 SystemPageFileInformation = 18,
637 Unknown19,
638 Unknown20,
639 SystemCacheInformation = 21,
640 Unknown22,
641 SystemInterruptInformation = 23,
642 SystemDpcBehaviourInformation = 24,
643 SystemFullMemoryInformation = 25,
644 SystemNotImplemented6 = 25,
645 SystemLoadImage = 26,
646 SystemUnloadImage = 27,
647 SystemTimeAdjustmentInformation = 28,
648 SystemTimeAdjustment = 28,
649 SystemSummaryMemoryInformation = 29,
650 SystemNotImplemented7 = 29,
651 SystemNextEventIdInformation = 30,
652 SystemNotImplemented8 = 30,
653 SystemEventIdsInformation = 31,
654 SystemCrashDumpInformation = 32,
655 SystemExceptionInformation = 33,
656 SystemCrashDumpStateInformation = 34,
657 SystemKernelDebuggerInformation = 35,
658 SystemContextSwitchInformation = 36,
659 SystemRegistryQuotaInformation = 37,
660 SystemCurrentTimeZoneInformation = 44,
661 SystemTimeZoneInformation = 44,
662 SystemLookasideInformation = 45,
663 SystemSetTimeSlipEvent = 46,
664 SystemCreateSession = 47,
665 SystemDeleteSession = 48,
666 SystemInvalidInfoClass4 = 49,
667 SystemRangeStartInformation = 50,
668 SystemVerifierInformation = 51,
669 SystemAddVerifier = 52,
670 SystemSessionProcessesInformation = 53,
671 SystemInformationClassMax
672 } SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS;
674 typedef enum _TIMER_TYPE {
675 NotificationTimer,
676 SynchronizationTimer
677 } TIMER_TYPE;
679 typedef enum _THREADINFOCLASS {
680 ThreadBasicInformation,
681 ThreadTimes,
682 ThreadPriority,
683 ThreadBasePriority,
684 ThreadAffinityMask,
685 ThreadImpersonationToken,
686 ThreadDescriptorTableEntry,
687 ThreadEnableAlignmentFaultFixup,
688 ThreadEventPair_Reusable,
689 ThreadQuerySetWin32StartAddress,
690 ThreadZeroTlsCell,
691 ThreadPerformanceCount,
692 ThreadAmILastThread,
693 ThreadIdealProcessor,
694 ThreadPriorityBoost,
695 ThreadSetTlsArrayAddress,
696 ThreadIsIoPending,
697 MaxThreadInfoClass
698 } THREADINFOCLASS;
700 typedef struct _THREAD_BASIC_INFORMATION
702 NTSTATUS ExitStatus;
703 PVOID TebBaseAddress;
704 CLIENT_ID ClientId;
705 ULONG AffinityMask;
706 LONG Priority;
707 LONG BasePriority;
708 } THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION;
711 typedef enum _WINSTATIONINFOCLASS {
712 WinStationInformation = 8
713 } WINSTATIONINFOCLASS;
715 typedef enum _MEMORY_INFORMATION_CLASS {
716 MemoryBasicInformation,
717 MemoryWorkingSetList,
718 MemorySectionName,
719 MemoryBasicVlmInformation
720 } MEMORY_INFORMATION_CLASS;
722 typedef enum _MUTANT_INFORMATION_CLASS
724 MutantBasicInformation
725 } MUTANT_INFORMATION_CLASS, *PMUTANT_INFORMATION_CLASS;
727 typedef struct _MUTANT_BASIC_INFORMATION {
728 LONG CurrentCount;
729 BOOLEAN OwnedByCaller;
730 BOOLEAN AbandonedState;
731 } MUTANT_BASIC_INFORMATION, *PMUTANT_BASIC_INFORMATION;
733 typedef enum _TIMER_INFORMATION_CLASS
735 TimerBasicInformation = 0
736 } TIMER_INFORMATION_CLASS;
738 typedef struct _TIMER_BASIC_INFORMATION
740 LARGE_INTEGER RemainingTime;
741 BOOLEAN TimerState;
742 } TIMER_BASIC_INFORMATION, *PTIMER_BASIC_INFORMATION;
745 /* return type of RtlDetermineDosPathNameType_U (FIXME: not the correct names) */
746 typedef enum
748 INVALID_PATH = 0,
749 UNC_PATH, /* "//foo" */
750 ABSOLUTE_DRIVE_PATH, /* "c:/foo" */
751 RELATIVE_DRIVE_PATH, /* "c:foo" */
752 ABSOLUTE_PATH, /* "/foo" */
753 RELATIVE_PATH, /* "foo" */
754 DEVICE_PATH, /* "//./foo" */
755 UNC_DOT_PATH /* "//." */
756 } DOS_PATHNAME_TYPE;
758 /***********************************************************************
759 * IA64 specific types and data structures
762 #ifdef __ia64__
764 typedef struct _FRAME_POINTERS {
765 ULONGLONG MemoryStackFp;
766 ULONGLONG BackingStoreFp;
767 } FRAME_POINTERS, *PFRAME_POINTERS;
769 #define UNWIND_HISTORY_TABLE_SIZE 12
771 typedef struct _RUNTIME_FUNCTION {
772 ULONG BeginAddress;
773 ULONG EndAddress;
774 ULONG UnwindInfoAddress;
775 } RUNTIME_FUNCTION, *PRUNTIME_FUNCTION;
777 typedef struct _UNWIND_HISTORY_TABLE_ENTRY {
778 ULONG64 ImageBase;
779 ULONG64 Gp;
780 PRUNTIME_FUNCTION FunctionEntry;
781 } UNWIND_HISTORY_TABLE_ENTRY, *PUNWIND_HISTORY_TABLE_ENTRY;
783 typedef struct _UNWIND_HISTORY_TABLE {
784 ULONG Count;
785 UCHAR Search;
786 ULONG64 LowAddress;
787 ULONG64 HighAddress;
788 UNWIND_HISTORY_TABLE_ENTRY Entry[UNWIND_HISTORY_TABLE_SIZE];
789 } UNWIND_HISTORY_TABLE, *PUNWIND_HISTORY_TABLE;
791 #endif /* defined(__ia64__) */
793 /***********************************************************************
794 * Types and data structures
797 /* This is used by NtQuerySystemInformation */
798 typedef struct _SYSTEM_THREAD_INFORMATION{
799 FILETIME ftKernelTime;
800 FILETIME ftUserTime;
801 FILETIME ftCreateTime;
802 DWORD dwTickCount;
803 DWORD dwStartAddress;
804 DWORD dwOwningPID;
805 DWORD dwThreadID;
806 DWORD dwCurrentPriority;
807 DWORD dwBasePriority;
808 DWORD dwContextSwitches;
809 DWORD dwThreadState;
810 DWORD dwWaitReason;
811 DWORD dwUnknown;
812 } SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION;
814 typedef struct _IO_STATUS_BLOCK {
815 union {
816 NTSTATUS Status;
817 PVOID Pointer;
818 } DUMMYUNIONNAME;
820 ULONG_PTR Information;
821 } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
823 typedef void (WINAPI * PIO_APC_ROUTINE)(PVOID,PIO_STATUS_BLOCK,ULONG);
825 typedef struct _KEY_BASIC_INFORMATION {
826 LARGE_INTEGER LastWriteTime;
827 ULONG TitleIndex;
828 ULONG NameLength;
829 WCHAR Name[1];
830 } KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
832 typedef struct _KEY_NODE_INFORMATION
834 LARGE_INTEGER LastWriteTime;
835 ULONG TitleIndex;
836 ULONG ClassOffset;
837 ULONG ClassLength;
838 ULONG NameLength;
839 WCHAR Name[1];
840 /* Class[1]; */
841 } KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
843 typedef struct _KEY_FULL_INFORMATION
845 LARGE_INTEGER LastWriteTime;
846 ULONG TitleIndex;
847 ULONG ClassOffset;
848 ULONG ClassLength;
849 ULONG SubKeys;
850 ULONG MaxNameLen;
851 ULONG MaxClassLen;
852 ULONG Values;
853 ULONG MaxValueNameLen;
854 ULONG MaxValueDataLen;
855 WCHAR Class[1];
856 } KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
858 typedef struct _KEY_VALUE_ENTRY
860 PUNICODE_STRING ValueName;
861 ULONG DataLength;
862 ULONG DataOffset;
863 ULONG Type;
864 } KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
866 typedef struct _KEY_VALUE_BASIC_INFORMATION {
867 ULONG TitleIndex;
868 ULONG Type;
869 ULONG NameLength;
870 WCHAR Name[1];
871 } KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
873 typedef struct _KEY_VALUE_FULL_INFORMATION {
874 ULONG TitleIndex;
875 ULONG Type;
876 ULONG DataOffset;
877 ULONG DataLength;
878 ULONG NameLength;
879 WCHAR Name[1];
880 } KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
882 typedef struct _KEY_VALUE_PARTIAL_INFORMATION {
883 ULONG TitleIndex;
884 ULONG Type;
885 ULONG DataLength;
886 UCHAR Data[1];
887 } KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
889 typedef struct _OBJECT_ATTRIBUTES {
890 ULONG Length;
891 HANDLE RootDirectory;
892 PUNICODE_STRING ObjectName;
893 ULONG Attributes;
894 PVOID SecurityDescriptor; /* type SECURITY_DESCRIPTOR */
895 PVOID SecurityQualityOfService; /* type SECURITY_QUALITY_OF_SERVICE */
896 } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
898 typedef struct _OBJECT_DATA_INFORMATION {
899 BOOLEAN InheritHandle;
900 BOOLEAN ProtectFromClose;
901 } OBJECT_DATA_INFORMATION, *POBJECT_DATA_INFORMATION;
903 typedef struct _PROCESS_BASIC_INFORMATION {
904 #ifdef __WINESRC__
905 DWORD ExitStatus;
906 DWORD PebBaseAddress;
907 DWORD AffinityMask;
908 DWORD BasePriority;
909 ULONG UniqueProcessId;
910 ULONG InheritedFromUniqueProcessId;
911 #else
912 PVOID Reserved1;
913 PPEB PebBaseAddress;
914 PVOID Reserved2[2];
915 ULONG_PTR UniqueProcessId;
916 PVOID Reserved3;
917 #endif
918 } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
920 typedef struct _RTL_HEAP_DEFINITION {
921 ULONG Length; /* = sizeof(RTL_HEAP_DEFINITION) */
923 ULONG Unknown[11];
924 } RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION;
926 typedef struct _RTL_RWLOCK {
927 RTL_CRITICAL_SECTION rtlCS;
929 HANDLE hSharedReleaseSemaphore;
930 UINT uSharedWaiters;
932 HANDLE hExclusiveReleaseSemaphore;
933 UINT uExclusiveWaiters;
935 INT iNumberActive;
936 HANDLE hOwningThreadId;
937 DWORD dwTimeoutBoost;
938 PVOID pDebugInfo;
939 } RTL_RWLOCK, *LPRTL_RWLOCK;
941 /* System Information Class 0x00 */
943 typedef struct _SYSTEM_BASIC_INFORMATION {
944 #ifdef __WINESRC__
945 DWORD dwUnknown1;
946 ULONG uKeMaximumIncrement;
947 ULONG uPageSize;
948 ULONG uMmNumberOfPhysicalPages;
949 ULONG uMmLowestPhysicalPage;
950 ULONG uMmHighestPhysicalPage;
951 ULONG uAllocationGranularity;
952 PVOID pLowestUserAddress;
953 PVOID pMmHighestUserAddress;
954 ULONG uKeActiveProcessors;
955 BYTE bKeNumberProcessors;
956 BYTE bUnknown2;
957 WORD wUnknown3;
958 #else
959 BYTE Reserved1[24];
960 PVOID Reserved2[4];
961 CCHAR NumberOfProcessors;
962 #endif
963 } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
965 /* System Information Class 0x01 */
967 typedef struct _SYSTEM_CPU_INFORMATION {
968 WORD Architecture;
969 WORD Level;
970 WORD Revision; /* combination of CPU model and stepping */
971 WORD Reserved; /* always zero */
972 DWORD FeatureSet; /* see bit flags below */
973 } SYSTEM_CPU_INFORMATION, *PSYSTEM_CPU_INFORMATION;
975 /* definitions of bits in the Feature set for the x86 processors */
976 #define CPU_FEATURE_VME 0x00000005 /* Virtual 86 Mode Extensions */
977 #define CPU_FEATURE_TSC 0x00000002 /* Time Stamp Counter available */
978 #define CPU_FEATURE_CMOV 0x00000008 /* Conditional Move instruction*/
979 #define CPU_FEATURE_PGE 0x00000014 /* Page table Entry Global bit */
980 #define CPU_FEATURE_PSE 0x00000024 /* Page Size Extension */
981 #define CPU_FEATURE_MTRR 0x00000040 /* Memory Type Range Registers */
982 #define CPU_FEATURE_CX8 0x00000080 /* Compare and eXchange 8 byte instr. */
983 #define CPU_FEATURE_MMX 0x00000100 /* Multi Media eXtensions */
984 #define CPU_FEATURE_X86 0x00000200 /* seems to be alway ON, on the '86 */
985 #define CPU_FEATURE_PAT 0x00000400 /* Page Attribute Table */
986 #define CPU_FEATURE_FXSR 0x00000800 /* FXSAVE and FXSTORE instructions */
987 #define CPU_FEATURE_SEP 0x00001000 /* SYSENTER and SYSEXIT instructions */
988 #define CPU_FEATURE_SSE 0x00002000 /* SSE extenstions (ext. MMX) */
989 #define CPU_FEATURE_3DNOW 0x00008000 /* 3DNOW instructions available
990 (FIXME: needs to be confirmed) */
991 #define CPU_FEATURE_SSE2 0x00010000 /* SSE2 extensions (XMMI64) */
992 #define CPU_FEATURE_DS 0x00020000 /* Debug Store */
993 #define CPU_FEATURE_HTT 0x00040000 /* Hyper Threading Technology */
995 /* System Information Class 0x02 */
997 typedef struct _SYSTEM_PERFORMANCE_INFORMATION {
998 BYTE Reserved1[312];
999 } SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
1001 /* System Information Class 0x03 */
1003 typedef struct _SYSTEM_TIMEOFDAY_INFORMATION {
1004 #ifdef __WINESRC__
1005 LARGE_INTEGER liKeBootTime;
1006 LARGE_INTEGER liKeSystemTime;
1007 LARGE_INTEGER liExpTimeZoneBias;
1008 ULONG uCurrentTimeZoneId;
1009 DWORD dwUnknown1[5];
1010 #else
1011 BYTE Reserved1[48];
1012 #endif
1013 } SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION; /* was SYSTEM_TIME_INFORMATION */
1015 /* System Information Class 0x08 */
1017 typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION {
1018 #ifdef __WINESRC__
1019 LARGE_INTEGER liIdleTime;
1020 DWORD dwSpare[10];
1021 #else
1022 LARGE_INTEGER IdleTime;
1023 LARGE_INTEGER KernelTime;
1024 LARGE_INTEGER UserTime;
1025 LARGE_INTEGER Reserved1[2];
1026 ULONG Reserved2;
1027 #endif
1028 } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
1030 /* System Information Class 0x0b */
1032 typedef struct _SYSTEM_DRIVER_INFORMATION {
1033 PVOID pvAddress;
1034 DWORD dwUnknown1;
1035 DWORD dwUnknown2;
1036 DWORD dwEntryIndex;
1037 DWORD dwUnknown3;
1038 char szName[MAX_PATH + 1];
1039 } SYSTEM_DRIVER_INFORMATION, *PSYSTEM_DRIVER_INFORMATION;
1041 /* System Information Class 0x10 */
1043 typedef struct _SYSTEM_HANDLE_ENTRY {
1044 ULONG OwnerPid;
1045 BYTE ObjectType;
1046 BYTE HandleFlags;
1047 USHORT HandleValue;
1048 PVOID ObjectPointer;
1049 ULONG AccessMask;
1050 } SYSTEM_HANDLE_ENTRY, *PSYSTEM_HANDLE_ENTRY;
1052 typedef struct _SYSTEM_HANDLE_INFORMATION {
1053 ULONG Count;
1054 SYSTEM_HANDLE_ENTRY Handle[1];
1055 } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
1057 /* System Information Class 0x15 */
1059 typedef struct _SYSTEM_CACHE_INFORMATION {
1060 ULONG CurrentSize;
1061 ULONG PeakSize;
1062 ULONG PageFaultCount;
1063 ULONG MinimumWorkingSet;
1064 ULONG MaximumWorkingSet;
1065 ULONG unused[4];
1066 } SYSTEM_CACHE_INFORMATION, *PSYSTEM_CACHE_INFORMATION;
1068 /* System Information Class 0x17 */
1070 typedef struct _SYSTEM_INTERRUPT_INFORMATION {
1071 BYTE Reserved1[24];
1072 } SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION;
1074 typedef struct _SYSTEM_CONFIGURATION_INFO {
1075 union {
1076 ULONG OemId;
1077 struct {
1078 WORD ProcessorArchitecture;
1079 WORD Reserved;
1080 } tag1;
1081 } tag2;
1082 ULONG PageSize;
1083 PVOID MinimumApplicationAddress;
1084 PVOID MaximumApplicationAddress;
1085 ULONG ActiveProcessorMask;
1086 ULONG NumberOfProcessors;
1087 ULONG ProcessorType;
1088 ULONG AllocationGranularity;
1089 WORD ProcessorLevel;
1090 WORD ProcessorRevision;
1091 } SYSTEM_CONFIGURATION_INFO, *PSYSTEM_CONFIGURATION_INFO;
1093 typedef struct _SYSTEM_EXCEPTION_INFORMATION {
1094 BYTE Reserved1[16];
1095 } SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION;
1097 typedef struct _SYSTEM_LOOKASIDE_INFORMATION {
1098 BYTE Reserved1[32];
1099 } SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION;
1101 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION {
1102 BOOLEAN DebuggerEnabled;
1103 BOOLEAN DebuggerNotPresent;
1104 } SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION;
1106 /* System Information Class 0x05 */
1108 typedef struct _VM_COUNTERS_ {
1109 SIZE_T PeakVirtualSize;
1110 SIZE_T VirtualSize;
1111 ULONG PageFaultCount;
1112 SIZE_T PeakWorkingSetSize;
1113 SIZE_T WorkingSetSize;
1114 SIZE_T QuotaPeakPagedPoolUsage;
1115 SIZE_T QuotaPagedPoolUsage;
1116 SIZE_T QuotaPeakNonPagedPoolUsage;
1117 SIZE_T QuotaNonPagedPoolUsage;
1118 SIZE_T PagefileUsage;
1119 SIZE_T PeakPagefileUsage;
1120 } VM_COUNTERS, *PVM_COUNTERS;
1122 typedef struct _SYSTEM_PROCESS_INFORMATION {
1123 #ifdef __WINESRC__
1124 DWORD dwOffset;
1125 DWORD dwThreadCount;
1126 DWORD dwUnknown1[6];
1127 FILETIME ftCreationTime;
1128 FILETIME ftUserTime;
1129 FILETIME ftKernelTime;
1130 UNICODE_STRING ProcessName;
1131 DWORD dwBasePriority;
1132 DWORD dwProcessID;
1133 DWORD dwParentProcessID;
1134 DWORD dwHandleCount;
1135 DWORD dwUnknown3;
1136 DWORD dwUnknown4;
1137 VM_COUNTERS vmCounters;
1138 IO_COUNTERS ioCounters;
1139 SYSTEM_THREAD_INFORMATION ti[1];
1140 #else
1141 ULONG NextEntryOffset;
1142 BYTE Reserved1[52];
1143 PVOID Reserved2[3];
1144 HANDLE UniqueProcessId;
1145 PVOID Reserved3;
1146 ULONG HandleCount;
1147 BYTE Reserved4[4];
1148 PVOID Reserved5[11];
1149 SIZE_T PeakPagefileUsage;
1150 SIZE_T PrivatePageCount;
1151 LARGE_INTEGER Reserved6[6];
1152 #endif
1153 } SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
1155 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION {
1156 ULONG RegistryQuotaAllowed;
1157 ULONG RegistryQuotaUsed;
1158 PVOID Reserved1;
1159 } SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION;
1161 typedef struct _SYSTEM_TIME_ADJUSTMENT {
1162 ULONG TimeAdjustment;
1163 BOOLEAN TimeAdjustmentDisabled;
1164 } SYSTEM_TIME_ADJUSTMENT, *PSYSTEM_TIME_ADJUSTMENT;
1166 typedef struct _TIME_FIELDS
1167 { CSHORT Year;
1168 CSHORT Month;
1169 CSHORT Day;
1170 CSHORT Hour;
1171 CSHORT Minute;
1172 CSHORT Second;
1173 CSHORT Milliseconds;
1174 CSHORT Weekday;
1175 } TIME_FIELDS, *PTIME_FIELDS;
1177 typedef struct _WINSTATIONINFORMATIONW {
1178 BYTE Reserved2[70];
1179 ULONG LogonId;
1180 BYTE Reserved3[1140];
1181 } WINSTATIONINFORMATIONW, *PWINSTATIONINFORMATIONW;
1183 typedef BOOLEAN (WINAPI * PWINSTATIONQUERYINFORMATIONW)(HANDLE,ULONG,WINSTATIONINFOCLASS,PVOID,ULONG,PULONG);
1185 typedef struct _LDR_RESOURCE_INFO
1187 ULONG Type;
1188 ULONG Name;
1189 ULONG Language;
1190 } LDR_RESOURCE_INFO, *PLDR_RESOURCE_INFO;
1193 /* debug buffer definitions */
1195 typedef struct _DEBUG_BUFFER {
1196 HANDLE SectionHandle;
1197 PVOID SectionBase;
1198 PVOID RemoteSectionBase;
1199 ULONG SectionBaseDelta;
1200 HANDLE EventPairHandle;
1201 ULONG Unknown[2];
1202 HANDLE RemoteThreadHandle;
1203 ULONG InfoClassMask;
1204 ULONG SizeOfInfo;
1205 ULONG AllocatedSize;
1206 ULONG SectionSize;
1207 PVOID ModuleInformation;
1208 PVOID BackTraceInformation;
1209 PVOID HeapInformation;
1210 PVOID LockInformation;
1211 PVOID Reserved[8];
1212 } DEBUG_BUFFER, *PDEBUG_BUFFER;
1214 #define PDI_MODULES 0x01
1215 #define PDI_BACKTRACE 0x02
1216 #define PDI_HEAPS 0x04
1217 #define PDI_HEAP_TAGS 0x08
1218 #define PDI_HEAP_BLOCKS 0x10
1219 #define PDI_LOCKS 0x20
1221 typedef struct _DEBUG_MODULE_INFORMATION {
1222 ULONG Reserved[2];
1223 ULONG Base;
1224 ULONG Size;
1225 ULONG Flags;
1226 USHORT Index;
1227 USHORT Unknown;
1228 USHORT LoadCount;
1229 USHORT ModuleNameOffset;
1230 CHAR ImageName[256];
1231 } DEBUG_MODULE_INFORMATION, *PDEBUG_MODULE_INFORMATION;
1233 typedef struct _DEBUG_HEAP_INFORMATION {
1234 ULONG Base;
1235 ULONG Flags;
1236 USHORT Granularity;
1237 USHORT Unknown;
1238 ULONG Allocated;
1239 ULONG Committed;
1240 ULONG TagCount;
1241 ULONG BlockCount;
1242 ULONG Reserved[7];
1243 PVOID Tags;
1244 PVOID Blocks;
1245 } DEBUG_HEAP_INFORMATION, *PDEBUG_HEAP_INFORMATION;
1247 typedef struct _DEBUG_LOCK_INFORMATION {
1248 PVOID Address;
1249 USHORT Type;
1250 USHORT CreatorBackTraceIndex;
1251 ULONG OwnerThreadId;
1252 ULONG ActiveCount;
1253 ULONG ContentionCount;
1254 ULONG EntryCount;
1255 ULONG RecursionCount;
1256 ULONG NumberOfSharedWaiters;
1257 ULONG NumberOfExclusiveWaiters;
1258 } DEBUG_LOCK_INFORMATION, *PDEBUG_LOCK_INFORMATION;
1260 typedef struct _PORT_MESSAGE_HEADER {
1261 USHORT DataSize;
1262 USHORT MessageSize;
1263 USHORT MessageType;
1264 USHORT VirtualRangesOffset;
1265 CLIENT_ID ClientId;
1266 ULONG MessageId;
1267 ULONG SectionSize;
1268 } PORT_MESSAGE_HEADER, *PPORT_MESSAGE_HEADER, PORT_MESSAGE, *PPORT_MESSAGE;
1270 typedef unsigned short RTL_ATOM, *PRTL_ATOM;
1272 /* Wine doesn't implement atom table as NT does:
1273 * - in NT, atom tables are user space tables, which ntdll directly accesses
1274 * - on Wine, (even local) atom tables are wineserver object, hence a HANDLE
1276 typedef struct atom_table *RTL_ATOM_TABLE, **PRTL_ATOM_TABLE;
1278 typedef enum _ATOM_INFORMATION_CLASS {
1279 AtomBasicInformation = 0,
1280 AtomTableInformation = 1,
1281 } ATOM_INFORMATION_CLASS;
1283 typedef struct _ATOM_BASIC_INFORMATION {
1284 USHORT ReferenceCount;
1285 USHORT Pinned;
1286 USHORT NameLength;
1287 WCHAR Name[1];
1288 } ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION;
1290 /* FIXME: names probably not correct */
1291 typedef struct _RTL_HANDLE
1293 struct _RTL_HANDLE * Next;
1294 } RTL_HANDLE;
1296 /* FIXME: names probably not correct */
1297 typedef struct _RTL_HANDLE_TABLE
1299 ULONG MaxHandleCount; /* 0x00 */
1300 ULONG HandleSize; /* 0x04 */
1301 ULONG Unused[2]; /* 0x08-0x0c */
1302 PVOID NextFree; /* 0x10 */
1303 PVOID FirstHandle; /* 0x14 */
1304 PVOID ReservedMemory; /* 0x18 */
1305 PVOID MaxHandle; /* 0x1c */
1306 } RTL_HANDLE_TABLE;
1308 /***********************************************************************
1309 * Defines
1312 /* flags for NtCreateFile and NtOpenFile */
1313 #define FILE_DIRECTORY_FILE 0x00000001
1314 #define FILE_WRITE_THROUGH 0x00000002
1315 #define FILE_SEQUENTIAL_ONLY 0x00000004
1316 #define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
1317 #define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
1318 #define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
1319 #define FILE_NON_DIRECTORY_FILE 0x00000040
1320 #define FILE_CREATE_TREE_CONNECTION 0x00000080
1321 #define FILE_COMPLETE_IF_OPLOCKED 0x00000100
1322 #define FILE_NO_EA_KNOWLEDGE 0x00000200
1323 #define FILE_OPEN_FOR_RECOVERY 0x00000400
1324 #define FILE_RANDOM_ACCESS 0x00000800
1325 #define FILE_DELETE_ON_CLOSE 0x00001000
1326 #define FILE_OPEN_BY_FILE_ID 0x00002000
1327 #define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
1328 #define FILE_NO_COMPRESSION 0x00008000
1329 #define FILE_RESERVE_OPFILTER 0x00100000
1330 #define FILE_TRANSACTED_MODE 0x00200000
1331 #define FILE_OPEN_OFFLINE_FILE 0x00400000
1332 #define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000
1334 #define FILE_ATTRIBUTE_VALID_FLAGS 0x00007fb7
1335 #define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7
1337 /* status for NtCreateFile or NtOpenFile */
1338 #define FILE_SUPERSEDED 0
1339 #define FILE_OPENED 1
1340 #define FILE_CREATED 2
1341 #define FILE_OVERWRITTEN 3
1342 #define FILE_EXISTS 4
1343 #define FILE_DOES_NOT_EXIST 5
1345 /* disposition for NtCreateFile */
1346 #define FILE_SUPERSEDE 0
1347 #define FILE_OPEN 1
1348 #define FILE_CREATE 2
1349 #define FILE_OPEN_IF 3
1350 #define FILE_OVERWRITE 4
1351 #define FILE_OVERWRITE_IF 5
1352 #define FILE_MAXIMUM_DISPOSITION 5
1354 /* Characteristics of a File System */
1355 #define FILE_REMOVABLE_MEDIA 0x00000001
1356 #define FILE_READ_ONLY_DEVICE 0x00000002
1357 #define FILE_FLOPPY_DISKETTE 0x00000004
1358 #define FILE_WRITE_ONE_MEDIA 0x00000008
1359 #define FILE_REMOTE_DEVICE 0x00000010
1360 #define FILE_DEVICE_IS_MOUNTED 0x00000020
1361 #define FILE_VIRTUAL_VOLUME 0x00000040
1362 #define FILE_AUTOGENERATED_DEVICE_NAME 0x00000080
1363 #define FILE_DEVICE_SECURE_OPEN 0x00000100
1365 /* options for NtCreateNamedPipeFile */
1366 #define FILE_PIPE_INBOUND 0x00000000
1367 #define FILE_PIPE_OUTBOUND 0x00000001
1368 #define FILE_PIPE_FULL_DUPLEX 0x00000002
1370 #if (_WIN32_WINNT >= 0x0501)
1371 #define INTERNAL_TS_ACTIVE_CONSOLE_ID ( *((volatile ULONG*)(0x7ffe02d8)) )
1372 #endif /* (_WIN32_WINNT >= 0x0501) */
1374 #define LOGONID_CURRENT ((ULONG)-1)
1376 #define OBJ_INHERIT 0x00000002L
1377 #define OBJ_PERMANENT 0x00000010L
1378 #define OBJ_EXCLUSIVE 0x00000020L
1379 #define OBJ_CASE_INSENSITIVE 0x00000040L
1380 #define OBJ_OPENIF 0x00000080L
1381 #define OBJ_OPENLINK 0x00000100L
1382 #define OBJ_KERNEL_HANDLE 0x00000200L
1383 #define OBJ_VALID_ATTRIBUTES 0x000003F2L
1385 #define SERVERNAME_CURRENT ((HANDLE)NULL)
1387 typedef void (CALLBACK *PNTAPCFUNC)(ULONG_PTR,ULONG_PTR,ULONG_PTR); /* FIXME: not the right name */
1388 typedef void (CALLBACK *PRTL_THREAD_START_ROUTINE)(LPVOID); /* FIXME: not the right name */
1391 /* DbgPrintEx default levels */
1392 #define DPFLTR_ERROR_LEVEL 0
1393 #define DPFLTR_WARNING_LEVEL 1
1394 #define DPFLTR_TRACE_LEVEL 2
1395 #define DPFLTR_INFO_LEVEL 3
1396 #define DPFLTR_MASK 0x8000000
1398 /* Well-known LUID values */
1399 #define SE_MIN_WELL_KNOWN_PRIVILEGE 2L
1400 #define SE_CREATE_TOKEN_PRIVILEGE 2L
1401 #define SE_ASSIGNPRIMARYTOKEN_PRIVILEGE 3L
1402 #define SE_LOCK_MEMORY_PRIVILEGE 4L
1403 #define SE_INCREASE_QUOTA_PRIVILEGE 5L
1404 #define SE_UNSOLICITED_INPUT_PRIVILEGE 6L /* obsolete */
1405 #define SE_MACHINE_ACCOUNT_PRIVILEGE 6L
1406 #define SE_TCB_PRIVILEGE 7L
1407 #define SE_SECURITY_PRIVILEGE 8L
1408 #define SE_TAKE_OWNERSHIP_PRIVILEGE 9L
1409 #define SE_LOAD_DRIVER_PRIVILEGE 10L
1410 #define SE_SYSTEM_PROFILE_PRIVILEGE 11L
1411 #define SE_SYSTEMTIME_PRIVILEGE 12L
1412 #define SE_PROF_SINGLE_PROCESS_PRIVILEGE 13L
1413 #define SE_INC_BASE_PRIORITY_PRIVILEGE 14L
1414 #define SE_CREATE_PAGEFILE_PRIVILEGE 15L
1415 #define SE_CREATE_PERMANENT_PRIVILEGE 16L
1416 #define SE_BACKUP_PRIVILEGE 17L
1417 #define SE_RESTORE_PRIVILEGE 18L
1418 #define SE_SHUTDOWN_PRIVILEGE 19L
1419 #define SE_DEBUG_PRIVILEGE 20L
1420 #define SE_AUDIT_PRIVILEGE 21L
1421 #define SE_SYSTEM_ENVIRONMENT_PRIVILEGE 22L
1422 #define SE_CHANGE_NOTIFY_PRIVILLEGE 23L
1423 #define SE_REMOTE_SHUTDOWN_PRIVILEGE 24L
1424 #define SE_UNDOCK_PRIVILEGE 25L
1425 #define SE_SYNC_AGENT_PRIVILEGE 26L
1426 #define SE_ENABLE_DELEGATION_PRIVILEGE 27L
1427 #define SE_MANAGE_VOLUME_PRIVILEGE 28L
1428 #define SE_IMPERSONATE_PRIVILEGE 29L
1429 #define SE_CREATE_GLOBAL_PRIVILEGE 30L
1430 #define SE_MAX_WELL_KNOWN_PRIVILEGE SE_CREATE_GLOBAL_PRIVILEGE
1433 /* Rtl*Registry* functions structs and defines */
1434 #define RTL_REGISTRY_ABSOLUTE 0
1435 #define RTL_REGISTRY_SERVICES 1
1436 #define RTL_REGISTRY_CONTROL 2
1437 #define RTL_REGISTRY_WINDOWS_NT 3
1438 #define RTL_REGISTRY_DEVICEMAP 4
1439 #define RTL_REGISTRY_USER 5
1441 #define RTL_REGISTRY_HANDLE 0x40000000
1442 #define RTL_REGISTRY_OPTIONAL 0x80000000
1444 #define RTL_QUERY_REGISTRY_SUBKEY 0x00000001
1445 #define RTL_QUERY_REGISTRY_TOPKEY 0x00000002
1446 #define RTL_QUERY_REGISTRY_REQUIRED 0x00000004
1447 #define RTL_QUERY_REGISTRY_NOVALUE 0x00000008
1448 #define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010
1449 #define RTL_QUERY_REGISTRY_DIRECT 0x00000020
1450 #define RTL_QUERY_REGISTRY_DELETE 0x00000040
1452 typedef NTSTATUS (WINAPI *PRTL_QUERY_REGISTRY_ROUTINE)( PCWSTR ValueName,
1453 ULONG ValueType,
1454 PVOID ValueData,
1455 ULONG ValueLength,
1456 PVOID Context,
1457 PVOID EntryContext);
1459 typedef struct _RTL_QUERY_REGISTRY_TABLE
1461 PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;
1462 ULONG Flags;
1463 PWSTR Name;
1464 PVOID EntryContext;
1465 ULONG DefaultType;
1466 PVOID DefaultData;
1467 ULONG DefaultLength;
1468 } RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
1470 typedef struct _KEY_MULTIPLE_VALUE_INFORMATION
1472 PUNICODE_STRING ValueName;
1473 ULONG DataLength;
1474 ULONG DataOffset;
1475 ULONG Type;
1476 } KEY_MULTIPLE_VALUE_INFORMATION, *PKEY_MULTIPLE_VALUE_INFORMATION;
1478 typedef VOID (*PTIMER_APC_ROUTINE) ( PVOID, ULONG, LONG );
1480 typedef enum _EVENT_TYPE {
1481 NotificationEvent,
1482 SynchronizationEvent
1483 } EVENT_TYPE, *PEVENT_TYPE;
1485 typedef enum _EVENT_INFORMATION_CLASS {
1486 EventBasicInformation
1487 } EVENT_INFORMATION_CLASS, *PEVENT_INFORMATION_CLASS;
1489 typedef struct _EVENT_BASIC_INFORMATION {
1490 EVENT_TYPE EventType;
1491 LONG EventState;
1492 } EVENT_BASIC_INFORMATION, *PEVENT_BASIC_INFORMATION;
1494 typedef enum _SEMAPHORE_INFORMATION_CLASS {
1495 SemaphoreBasicInformation
1496 } SEMAPHORE_INFORMATION_CLASS, *PSEMAPHORE_INFORMATION_CLASS;
1498 typedef struct _SEMAPHORE_BASIC_INFORMATION {
1499 ULONG CurrentCount;
1500 ULONG MaximumCount;
1501 } SEMAPHORE_BASIC_INFORMATION, *PSEMAPHORE_BASIC_INFORMATION;
1503 typedef enum _SECTION_INFORMATION_CLASS
1505 SectionBasicInformation,
1506 SectionImageInformation,
1507 } SECTION_INFORMATION_CLASS;
1509 typedef struct _SECTION_BASIC_INFORMATION {
1510 ULONG BaseAddress;
1511 ULONG Attributes;
1512 LARGE_INTEGER Size;
1513 } SECTION_BASIC_INFORMATION, *PSECTION_BASIC_INFORMATION;
1515 typedef struct _SECTION_IMAGE_INFORMATION {
1516 PVOID EntryPoint;
1517 ULONG StackZeroBits;
1518 ULONG StackReserved;
1519 ULONG StackCommit;
1520 ULONG ImageSubsystem;
1521 WORD SubsystemVersionLow;
1522 WORD SubsystemVersionHigh;
1523 ULONG Unknown1;
1524 ULONG ImageCharacteristics;
1525 ULONG ImageMachineType;
1526 ULONG Unknown2[3];
1527 } SECTION_IMAGE_INFORMATION, *PSECTION_IMAGE_INFORMATION;
1529 typedef struct _LPC_SECTION_WRITE {
1530 ULONG Length;
1531 HANDLE SectionHandle;
1532 ULONG SectionOffset;
1533 ULONG ViewSize;
1534 PVOID ViewBase;
1535 PVOID TargetViewBase;
1536 } LPC_SECTION_WRITE, *PLPC_SECTION_WRITE;
1538 typedef struct _LPC_SECTION_READ {
1539 ULONG Length;
1540 ULONG ViewSize;
1541 PVOID ViewBase;
1542 } LPC_SECTION_READ, *PLPC_SECTION_READ;
1544 typedef struct _LPC_MESSAGE {
1545 USHORT DataSize;
1546 USHORT MessageSize;
1547 USHORT MessageType;
1548 USHORT VirtualRangesOffset;
1549 CLIENT_ID ClientId;
1550 ULONG MessageId;
1551 ULONG SectionSize;
1552 UCHAR Data[ANYSIZE_ARRAY];
1553 } LPC_MESSAGE, *PLPC_MESSAGE;
1555 typedef enum _SHUTDOWN_ACTION {
1556 ShutdownNoReboot,
1557 ShutdownReboot,
1558 ShutdownPowerOff
1559 } SHUTDOWN_ACTION, *PSHUTDOWN_ACTION;
1561 typedef enum _KPROFILE_SOURCE {
1562 ProfileTime,
1563 ProfileAlignmentFixup,
1564 ProfileTotalIssues,
1565 ProfilePipelineDry,
1566 ProfileLoadInstructions,
1567 ProfilePipelineFrozen,
1568 ProfileBranchInstructions,
1569 ProfileTotalNonissues,
1570 ProfileDcacheMisses,
1571 ProfileIcacheMisses,
1572 ProfileCacheMisses,
1573 ProfileBranchMispredictions,
1574 ProfileStoreInstructions,
1575 ProfileFpInstructions,
1576 ProfileIntegerInstructions,
1577 Profile2Issue,
1578 Profile3Issue,
1579 Profile4Issue,
1580 ProfileSpecialInstructions,
1581 ProfileTotalCycles,
1582 ProfileIcacheIssues,
1583 ProfileDcacheAccesses,
1584 ProfileMemoryBarrierCycles,
1585 ProfileLoadLinkedIssues,
1586 ProfileMaximum
1587 } KPROFILE_SOURCE, *PKPROFILE_SOURCE;
1589 typedef struct _OBJDIR_INFORMATION {
1590 UNICODE_STRING ObjectName;
1591 UNICODE_STRING ObjectTypeName;
1592 BYTE Data[1];
1593 } OBJDIR_INFORMATION, *POBJDIR_INFORMATION;
1595 /***********************************************************************
1596 * Function declarations
1599 extern LPSTR _strlwr(LPSTR str); /* FIXME: Doesn't belong here */
1600 extern LPSTR _strupr(LPSTR str); /* FIXME: Doesn't belong here */
1602 #if defined(__i386__) && defined(__GNUC__)
1603 static inline void WINAPI DbgBreakPoint(void) { __asm__ __volatile__("int3"); }
1604 static inline void WINAPI DbgUserBreakPoint(void) { __asm__ __volatile__("int3"); }
1605 #else /* __i386__ && __GNUC__ */
1606 void WINAPI DbgBreakPoint(void);
1607 void WINAPI DbgUserBreakPoint(void);
1608 #endif /* __i386__ && __GNUC__ */
1609 NTSTATUS WINAPIV DbgPrint(LPCSTR fmt, ...);
1610 NTSTATUS WINAPIV DbgPrintEx(ULONG iComponentId, ULONG Level, LPCSTR fmt, ...);
1612 NTSTATUS WINAPI LdrAccessResource(HMODULE,const IMAGE_RESOURCE_DATA_ENTRY*,void**,PULONG);
1613 NTSTATUS WINAPI LdrFindResourceDirectory_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DIRECTORY**);
1614 NTSTATUS WINAPI LdrFindResource_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DATA_ENTRY**);
1615 NTSTATUS WINAPI LdrGetDllHandle(ULONG, ULONG, const UNICODE_STRING*, HMODULE*);
1616 NTSTATUS WINAPI LdrGetProcedureAddress(HMODULE, const ANSI_STRING*, ULONG, void**);
1617 void WINAPI LdrInitializeThunk(HANDLE,ULONG,ULONG,ULONG);
1618 NTSTATUS WINAPI LdrLoadDll(LPCWSTR, DWORD, const UNICODE_STRING*, HMODULE*);
1619 void WINAPI LdrShutdownProcess(void);
1620 void WINAPI LdrShutdownThread(void);
1621 NTSTATUS WINAPI NtAcceptConnectPort(PHANDLE,ULONG,PLPC_MESSAGE,BOOLEAN,PLPC_SECTION_WRITE,PLPC_SECTION_READ);
1622 NTSTATUS WINAPI NtAccessCheck(PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,PGENERIC_MAPPING,PPRIVILEGE_SET,PULONG,PULONG,NTSTATUS*);
1623 NTSTATUS WINAPI NtAddAtom(const WCHAR*,ULONG,RTL_ATOM*);
1624 NTSTATUS WINAPI NtAdjustGroupsToken(HANDLE,BOOLEAN,PTOKEN_GROUPS,ULONG,PTOKEN_GROUPS,PULONG);
1625 NTSTATUS WINAPI NtAdjustPrivilegesToken(HANDLE,BOOLEAN,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD);
1626 NTSTATUS WINAPI NtAlertThread(HANDLE ThreadHandle);
1627 NTSTATUS WINAPI NtAllocateLocallyUniqueId(PLUID lpLuid);
1628 NTSTATUS WINAPI NtAllocateUuids(PULARGE_INTEGER,PULONG,PULONG);
1629 NTSTATUS WINAPI NtAllocateVirtualMemory(HANDLE,PVOID*,ULONG,ULONG*,ULONG,ULONG);
1630 NTSTATUS WINAPI NtCancelIoFile(HANDLE,PIO_STATUS_BLOCK);
1631 NTSTATUS WINAPI NtCancelTimer(HANDLE, BOOLEAN*);
1632 NTSTATUS WINAPI NtClearEvent(HANDLE);
1633 NTSTATUS WINAPI NtClose(HANDLE);
1634 NTSTATUS WINAPI NtCompleteConnectPort(HANDLE);
1635 NTSTATUS WINAPI NtConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PLPC_SECTION_READ,PULONG,PVOID,PULONG);
1636 NTSTATUS WINAPI NtCreateDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
1637 NTSTATUS WINAPI NtCreateEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *,BOOLEAN,BOOLEAN);
1638 NTSTATUS WINAPI NtCreateFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,PLARGE_INTEGER,ULONG,ULONG,ULONG,ULONG,PVOID,ULONG);
1639 NTSTATUS WINAPI NtCreateIoCompletion(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,ULONG);
1640 NTSTATUS WINAPI NtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
1641 NTSTATUS WINAPI NtCreateMailslotFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,PLARGE_INTEGER);
1642 NTSTATUS WINAPI NtCreateMutant(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,BOOLEAN);
1643 NTSTATUS WINAPI NtCreateNamedPipeFile(PHANDLE,ULONG,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,PLARGE_INTEGER);
1644 NTSTATUS WINAPI NtCreatePagingFile(PUNICODE_STRING,PLARGE_INTEGER,PLARGE_INTEGER,PLARGE_INTEGER);
1645 NTSTATUS WINAPI NtCreatePort(PHANDLE,POBJECT_ATTRIBUTES,ULONG,ULONG,PULONG);
1646 NTSTATUS WINAPI NtCreateSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const LARGE_INTEGER*,ULONG,ULONG,HANDLE);
1647 NTSTATUS WINAPI NtCreateSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,LONG,LONG);
1648 NTSTATUS WINAPI NtCreateSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PUNICODE_STRING);
1649 NTSTATUS WINAPI NtCreateTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*, TIMER_TYPE);
1650 NTSTATUS WINAPI NtDelayExecution(BOOLEAN,const LARGE_INTEGER*);
1651 NTSTATUS WINAPI NtDeleteAtom(RTL_ATOM);
1652 NTSTATUS WINAPI NtDeleteFile(POBJECT_ATTRIBUTES);
1653 NTSTATUS WINAPI NtDeleteKey(HANDLE);
1654 NTSTATUS WINAPI NtDeleteValueKey(HANDLE,const UNICODE_STRING *);
1655 NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
1656 NTSTATUS WINAPI NtDisplayString(PUNICODE_STRING);
1657 NTSTATUS WINAPI NtDuplicateObject(HANDLE,HANDLE,HANDLE,PHANDLE,ACCESS_MASK,ULONG,ULONG);
1658 NTSTATUS WINAPI NtDuplicateToken(HANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,PHANDLE);
1659 NTSTATUS WINAPI NtEnumerateKey(HANDLE,ULONG,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
1660 NTSTATUS WINAPI NtEnumerateValueKey(HANDLE,ULONG,KEY_VALUE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
1661 NTSTATUS WINAPI NtFindAtom(const WCHAR*,ULONG,RTL_ATOM*);
1662 NTSTATUS WINAPI NtFlushBuffersFile(HANDLE,IO_STATUS_BLOCK*);
1663 NTSTATUS WINAPI NtFlushInstructionCache(HANDLE,LPCVOID,ULONG);
1664 NTSTATUS WINAPI NtFlushKey(HANDLE);
1665 NTSTATUS WINAPI NtFlushVirtualMemory(HANDLE,LPCVOID*,ULONG*,ULONG);
1666 NTSTATUS WINAPI NtFreeVirtualMemory(HANDLE,PVOID*,ULONG*,ULONG);
1667 NTSTATUS WINAPI NtFsControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
1668 NTSTATUS WINAPI NtGetContextThread(HANDLE,CONTEXT*);
1669 NTSTATUS WINAPI NtImpersonateAnonymousToken(HANDLE);
1670 NTSTATUS WINAPI NtImpersonateClientOfPort(HANDLE,PPORT_MESSAGE);
1671 NTSTATUS WINAPI NtImpersonateThread(HANDLE,HANDLE,PSECURITY_QUALITY_OF_SERVICE);
1672 NTSTATUS WINAPI NtInitiatePowerAction(POWER_ACTION,SYSTEM_POWER_STATE,ULONG,BOOLEAN);
1673 NTSTATUS WINAPI NtListenPort(HANDLE,PLPC_MESSAGE);
1674 NTSTATUS WINAPI NtLoadDriver(const UNICODE_STRING *);
1675 NTSTATUS WINAPI NtLoadKey(const OBJECT_ATTRIBUTES *,OBJECT_ATTRIBUTES *);
1676 NTSTATUS WINAPI NtLockFile(HANDLE,HANDLE,PIO_APC_ROUTINE,void*,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,ULONG*,BOOLEAN,BOOLEAN);
1677 NTSTATUS WINAPI NtLockVirtualMemory(HANDLE,PVOID*,ULONG*,ULONG);
1678 NTSTATUS WINAPI NtMapViewOfSection(HANDLE,HANDLE,PVOID*,ULONG,ULONG,const LARGE_INTEGER*,ULONG*,SECTION_INHERIT,ULONG,ULONG);
1679 NTSTATUS WINAPI NtNotifyChangeKey(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN);
1680 NTSTATUS WINAPI NtOpenDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
1681 NTSTATUS WINAPI NtOpenEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
1682 NTSTATUS WINAPI NtOpenFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG);
1683 NTSTATUS WINAPI NtOpenIoCompletion(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
1684 NTSTATUS WINAPI NtOpenKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
1685 NTSTATUS WINAPI NtOpenMutant(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
1686 NTSTATUS WINAPI NtOpenProcessToken(HANDLE,DWORD,HANDLE *);
1687 NTSTATUS WINAPI NtOpenSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
1688 NTSTATUS WINAPI NtOpenSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
1689 NTSTATUS WINAPI NtOpenSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
1690 NTSTATUS WINAPI NtOpenThread(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
1691 NTSTATUS WINAPI NtOpenThreadToken(HANDLE,DWORD,BOOLEAN,HANDLE *);
1692 NTSTATUS WINAPI NtOpenTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*);
1693 NTSTATUS WINAPI NtPowerInformation(POWER_INFORMATION_LEVEL,PVOID,ULONG,PVOID,ULONG);
1694 NTSTATUS WINAPI NtPrivilegeCheck(HANDLE,PPRIVILEGE_SET,PBOOLEAN);
1695 NTSTATUS WINAPI NtProtectVirtualMemory(HANDLE,PVOID*,ULONG*,ULONG,ULONG*);
1696 NTSTATUS WINAPI NtPulseEvent(HANDLE,PULONG);
1697 NTSTATUS WINAPI NtQueueApcThread(HANDLE,PNTAPCFUNC,ULONG_PTR,ULONG_PTR,ULONG_PTR);
1698 NTSTATUS WINAPI NtQueryAttributesFile(const OBJECT_ATTRIBUTES*,FILE_BASIC_INFORMATION*);
1699 NTSTATUS WINAPI NtQueryDefaultLocale(BOOLEAN,LCID*);
1700 NTSTATUS WINAPI NtQueryDefaultUILanguage(LANGID*);
1701 NTSTATUS WINAPI NtQueryDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS,BOOLEAN,PUNICODE_STRING,BOOLEAN);
1702 NTSTATUS WINAPI NtQueryDirectoryObject(HANDLE,POBJDIR_INFORMATION,ULONG,BOOLEAN,BOOLEAN,PULONG,PULONG);
1703 NTSTATUS WINAPI NtQueryEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,BOOLEAN,PVOID,ULONG,PVOID,BOOLEAN);
1704 NTSTATUS WINAPI NtQueryEvent(HANDLE,EVENT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
1705 NTSTATUS WINAPI NtQueryFullAttributesFile(const OBJECT_ATTRIBUTES*,FILE_NETWORK_OPEN_INFORMATION*);
1706 NTSTATUS WINAPI NtQueryInformationAtom(RTL_ATOM,ATOM_INFORMATION_CLASS,RTL_ATOM_TABLE,ULONG,ULONG*);
1707 NTSTATUS WINAPI NtQueryInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,LONG,FILE_INFORMATION_CLASS);
1708 NTSTATUS WINAPI NtQueryInformationProcess(HANDLE,PROCESSINFOCLASS,PVOID,ULONG,PULONG);
1709 NTSTATUS WINAPI NtQueryInformationThread(HANDLE,THREADINFOCLASS,PVOID,ULONG,PULONG);
1710 NTSTATUS WINAPI NtQueryInformationToken(HANDLE,DWORD,LPVOID,DWORD,LPDWORD);
1711 NTSTATUS WINAPI NtQueryInstallUILanguage(LANGID*);
1712 NTSTATUS WINAPI NtQueryKey(HANDLE,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
1713 NTSTATUS WINAPI NtQueryMultipleValueKey(HANDLE,PKEY_MULTIPLE_VALUE_INFORMATION,ULONG,PVOID,ULONG,PULONG);
1714 NTSTATUS WINAPI NtQueryMutant(HANDLE,MUTANT_INFORMATION_CLASS,PVOID,ULONG,PULONG);
1715 NTSTATUS WINAPI NtQueryObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG, PULONG);
1716 NTSTATUS WINAPI NtQueryPerformanceCounter(PLARGE_INTEGER, PLARGE_INTEGER);
1717 NTSTATUS WINAPI NtQuerySecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,ULONG,PULONG);
1718 NTSTATUS WINAPI NtQuerySection(HANDLE,SECTION_INFORMATION_CLASS,PVOID,ULONG,PULONG);
1719 NTSTATUS WINAPI NtQuerySemaphore(HANDLE,SEMAPHORE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
1720 NTSTATUS WINAPI NtQuerySymbolicLinkObject(HANDLE,PUNICODE_STRING,PULONG);
1721 NTSTATUS WINAPI NtQuerySystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG,PULONG);
1722 NTSTATUS WINAPI NtQuerySystemTime(PLARGE_INTEGER);
1723 NTSTATUS WINAPI NtQueryTimer(HANDLE,TIMER_INFORMATION_CLASS,PVOID,ULONG,PULONG);
1724 NTSTATUS WINAPI NtQueryTimerResolution(PULONG,PULONG,PULONG);
1725 NTSTATUS WINAPI NtQueryValueKey(HANDLE,const UNICODE_STRING *,KEY_VALUE_INFORMATION_CLASS,void *,DWORD,DWORD *);
1726 NTSTATUS WINAPI NtQueryVirtualMemory(HANDLE,LPCVOID,MEMORY_INFORMATION_CLASS,PVOID,ULONG,ULONG*);
1727 NTSTATUS WINAPI NtQueryVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
1728 void WINAPI NtRaiseException(PEXCEPTION_RECORD,PCONTEXT,BOOL);
1729 NTSTATUS WINAPI NtReadFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,PLARGE_INTEGER,PULONG);
1730 NTSTATUS WINAPI NtReadVirtualMemory(HANDLE,const void*,void*,SIZE_T,SIZE_T*);
1731 NTSTATUS WINAPI NtRegisterThreadTerminatePort(HANDLE);
1732 NTSTATUS WINAPI NtReleaseMutant(HANDLE,PLONG);
1733 NTSTATUS WINAPI NtReleaseSemaphore(HANDLE,ULONG,PULONG);
1734 NTSTATUS WINAPI NtRemoveIoCompletion(HANDLE,PULONG,PULONG,PIO_STATUS_BLOCK,PLARGE_INTEGER);
1735 NTSTATUS WINAPI NtReplaceKey(POBJECT_ATTRIBUTES,HANDLE,POBJECT_ATTRIBUTES);
1736 NTSTATUS WINAPI NtReplyWaitReceivePort(HANDLE,PULONG,PLPC_MESSAGE,PLPC_MESSAGE);
1737 NTSTATUS WINAPI NtReplyWaitReplyPort(HANDLE,PLPC_MESSAGE);
1738 NTSTATUS WINAPI NtRequestWaitReplyPort(HANDLE,PLPC_MESSAGE,PLPC_MESSAGE);
1739 NTSTATUS WINAPI NtResetEvent(HANDLE,PULONG);
1740 NTSTATUS WINAPI NtRestoreKey(HANDLE,HANDLE,ULONG);
1741 NTSTATUS WINAPI NtResumeThread(HANDLE,PULONG);
1742 NTSTATUS WINAPI NtSaveKey(HANDLE,HANDLE);
1743 NTSTATUS WINAPI NtSetContextThread(HANDLE,const CONTEXT*);
1744 NTSTATUS WINAPI NtSetDefaultLocale(BOOLEAN,LCID);
1745 NTSTATUS WINAPI NtSetDefaultUILanguage(LANGID);
1746 NTSTATUS WINAPI NtSetEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG);
1747 NTSTATUS WINAPI NtSetEvent(HANDLE,PULONG);
1748 NTSTATUS WINAPI NtSetInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS);
1749 NTSTATUS WINAPI NtSetInformationKey(HANDLE,const int,PVOID,ULONG);
1750 NTSTATUS WINAPI NtSetInformationObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG);
1751 NTSTATUS WINAPI NtSetInformationProcess(HANDLE,PROCESS_INFORMATION_CLASS,PVOID,ULONG);
1752 NTSTATUS WINAPI NtSetInformationThread(HANDLE,THREADINFOCLASS,LPCVOID,ULONG);
1753 NTSTATUS WINAPI NtSetInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG);
1754 NTSTATUS WINAPI NtSetIntervalProfile(ULONG,KPROFILE_SOURCE);
1755 NTSTATUS WINAPI NtSetIoCompletion(HANDLE,ULONG,ULONG,NTSTATUS,ULONG);
1756 NTSTATUS WINAPI NtSetSecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
1757 NTSTATUS WINAPI NtSetSystemTime(const LARGE_INTEGER*,LARGE_INTEGER*);
1758 NTSTATUS WINAPI NtSetTimer(HANDLE, const LARGE_INTEGER*, PTIMER_APC_ROUTINE, PVOID, BOOLEAN, ULONG, BOOLEAN*);
1759 NTSTATUS WINAPI NtSetTimerResolution(ULONG,BOOLEAN,PULONG);
1760 NTSTATUS WINAPI NtSetValueKey(HANDLE,const UNICODE_STRING *,ULONG,ULONG,const void *,ULONG);
1761 NTSTATUS WINAPI NtSetVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS);
1762 NTSTATUS WINAPI NtSignalAndWaitForSingleObject(HANDLE,HANDLE,BOOLEAN,const LARGE_INTEGER*);
1763 NTSTATUS WINAPI NtShutdownSystem(SHUTDOWN_ACTION);
1764 NTSTATUS WINAPI NtSuspendThread(HANDLE,PULONG);
1765 NTSTATUS WINAPI NtTerminateProcess(HANDLE,LONG);
1766 NTSTATUS WINAPI NtTerminateThread(HANDLE,LONG);
1767 NTSTATUS WINAPI NtUnloadDriver(const UNICODE_STRING *);
1768 NTSTATUS WINAPI NtUnloadKey(HANDLE);
1769 NTSTATUS WINAPI NtUnlockFile(HANDLE,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,PULONG);
1770 NTSTATUS WINAPI NtUnlockVirtualMemory(HANDLE,PVOID*,ULONG*,ULONG);
1771 NTSTATUS WINAPI NtUnmapViewOfSection(HANDLE,PVOID);
1772 NTSTATUS WINAPI NtWaitForSingleObject(HANDLE,BOOLEAN,const LARGE_INTEGER*);
1773 NTSTATUS WINAPI NtWaitForMultipleObjects(ULONG,const HANDLE*,BOOLEAN,BOOLEAN,const LARGE_INTEGER*);
1774 NTSTATUS WINAPI NtWriteFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,const void*,ULONG,PLARGE_INTEGER,PULONG);
1775 NTSTATUS WINAPI NtWriteVirtualMemory(HANDLE,void*,const void*,SIZE_T,SIZE_T*);
1776 NTSTATUS WINAPI NtYieldExecution(void);
1778 void WINAPI RtlAcquirePebLock(void);
1779 BYTE WINAPI RtlAcquireResourceExclusive(LPRTL_RWLOCK,BYTE);
1780 BYTE WINAPI RtlAcquireResourceShared(LPRTL_RWLOCK,BYTE);
1781 NTSTATUS WINAPI RtlAddAce(PACL,DWORD,DWORD,PACE_HEADER,DWORD);
1782 NTSTATUS WINAPI RtlAddAccessAllowedAce(PACL,DWORD,DWORD,PSID);
1783 NTSTATUS WINAPI RtlAddAccessAllowedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
1784 NTSTATUS WINAPI RtlAddAccessDeniedAce(PACL,DWORD,DWORD,PSID);
1785 NTSTATUS WINAPI RtlAddAccessDeniedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
1786 NTSTATUS WINAPI RtlAddAtomToAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*);
1787 PVOID WINAPI RtlAddVectoredExceptionHandler(ULONG,PVECTORED_EXCEPTION_HANDLER);
1788 NTSTATUS WINAPI RtlAdjustPrivilege(ULONG,BOOLEAN,BOOLEAN,PBOOLEAN);
1789 NTSTATUS WINAPI RtlAllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PSID *);
1790 RTL_HANDLE * WINAPI RtlAllocateHandle(RTL_HANDLE_TABLE *,ULONG *);
1791 PVOID WINAPI RtlAllocateHeap(HANDLE,ULONG,ULONG);
1792 WCHAR WINAPI RtlAnsiCharToUnicodeChar(LPSTR *);
1793 DWORD WINAPI RtlAnsiStringToUnicodeSize(const STRING *);
1794 NTSTATUS WINAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING,PCANSI_STRING,BOOLEAN);
1795 NTSTATUS WINAPI RtlAppendAsciizToString(STRING *,LPCSTR);
1796 NTSTATUS WINAPI RtlAppendStringToString(STRING *,const STRING *);
1797 NTSTATUS WINAPI RtlAppendUnicodeStringToString(UNICODE_STRING *,const UNICODE_STRING *);
1798 NTSTATUS WINAPI RtlAppendUnicodeToString(UNICODE_STRING *,LPCWSTR);
1799 BOOLEAN WINAPI RtlAreAllAccessesGranted(ACCESS_MASK,ACCESS_MASK);
1800 BOOLEAN WINAPI RtlAreAnyAccessesGranted(ACCESS_MASK,ACCESS_MASK);
1801 BOOLEAN WINAPI RtlAreBitsSet(PCRTL_BITMAP,ULONG,ULONG);
1802 BOOLEAN WINAPI RtlAreBitsClear(PCRTL_BITMAP,ULONG,ULONG);
1804 NTSTATUS WINAPI RtlCharToInteger(PCSZ,ULONG,PULONG);
1805 NTSTATUS WINAPI RtlCheckRegistryKey(ULONG, PWSTR);
1806 void WINAPI RtlClearAllBits(PRTL_BITMAP);
1807 void WINAPI RtlClearBits(PRTL_BITMAP,ULONG,ULONG);
1808 PDEBUG_BUFFER WINAPI RtlCreateQueryDebugBuffer(ULONG,BOOLEAN);
1809 ULONG WINAPI RtlCompactHeap(HANDLE,ULONG);
1810 LONG WINAPI RtlCompareString(const STRING*,const STRING*,BOOLEAN);
1811 LONG WINAPI RtlCompareUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
1812 DWORD WINAPI RtlComputeCrc32(DWORD,PBYTE,INT);
1813 NTSTATUS WINAPI RtlConvertSidToUnicodeString(PUNICODE_STRING,PSID,BOOLEAN);
1814 LONGLONG WINAPI RtlConvertLongToLargeInteger(LONG);
1815 ULONGLONG WINAPI RtlConvertUlongToLargeInteger(ULONG);
1816 void WINAPI RtlCopyLuid(PLUID,const LUID*);
1817 void WINAPI RtlCopyLuidAndAttributesArray(ULONG,const LUID_AND_ATTRIBUTES*,PLUID_AND_ATTRIBUTES);
1818 BOOLEAN WINAPI RtlCopySid(DWORD,PSID,PSID);
1819 NTSTATUS WINAPI RtlCopySecurityDescriptor(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR);
1820 void WINAPI RtlCopyString(STRING*,const STRING*);
1821 void WINAPI RtlCopyUnicodeString(UNICODE_STRING*,const UNICODE_STRING*);
1822 NTSTATUS WINAPI RtlCreateAcl(PACL,DWORD,DWORD);
1823 NTSTATUS WINAPI RtlCreateAtomTable(ULONG,RTL_ATOM_TABLE*);
1824 NTSTATUS WINAPI RtlCreateEnvironment(BOOLEAN, PWSTR*);
1825 HANDLE WINAPI RtlCreateHeap(ULONG,PVOID,ULONG,ULONG,PVOID,PRTL_HEAP_DEFINITION);
1826 NTSTATUS WINAPI RtlCreateProcessParameters(RTL_USER_PROCESS_PARAMETERS**,const UNICODE_STRING*,
1827 const UNICODE_STRING*,const UNICODE_STRING*,
1828 const UNICODE_STRING*,PWSTR,const UNICODE_STRING*,
1829 const UNICODE_STRING*,const UNICODE_STRING*,
1830 const UNICODE_STRING*);
1831 NTSTATUS WINAPI RtlCreateSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD);
1832 BOOLEAN WINAPI RtlCreateUnicodeString(PUNICODE_STRING,LPCWSTR);
1833 BOOLEAN WINAPI RtlCreateUnicodeStringFromAsciiz(PUNICODE_STRING,LPCSTR);
1834 NTSTATUS WINAPI RtlCreateUserThread(HANDLE,const SECURITY_DESCRIPTOR*,BOOLEAN,PVOID,SIZE_T,SIZE_T,PRTL_THREAD_START_ROUTINE,void*,HANDLE*,CLIENT_ID*);
1836 NTSTATUS WINAPI RtlDeleteAce(PACL,DWORD);
1837 NTSTATUS WINAPI RtlDeleteAtomFromAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
1838 NTSTATUS WINAPI RtlDeleteCriticalSection(RTL_CRITICAL_SECTION *);
1839 NTSTATUS WINAPI RtlDeleteRegistryValue(ULONG, PCWSTR, PCWSTR);
1840 void WINAPI RtlDeleteResource(LPRTL_RWLOCK);
1841 DWORD WINAPI RtlDeleteSecurityObject(DWORD);
1842 PRTL_USER_PROCESS_PARAMETERS WINAPI RtlDeNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
1843 NTSTATUS WINAPI RtlDestroyAtomTable(RTL_ATOM_TABLE);
1844 NTSTATUS WINAPI RtlDestroyEnvironment(PWSTR);
1845 NTSTATUS WINAPI RtlDestroyHandleTable(RTL_HANDLE_TABLE *);
1846 HANDLE WINAPI RtlDestroyHeap(HANDLE);
1847 void WINAPI RtlDestroyProcessParameters(RTL_USER_PROCESS_PARAMETERS*);
1848 NTSTATUS WINAPI RtlDestroyQueryDebugBuffer(PDEBUG_BUFFER);
1849 DOS_PATHNAME_TYPE WINAPI RtlDetermineDosPathNameType_U(PCWSTR);
1850 BOOLEAN WINAPI RtlDoesFileExists_U(LPCWSTR);
1851 BOOLEAN WINAPI RtlDosPathNameToNtPathName_U(PCWSTR,PUNICODE_STRING,PWSTR*,CURDIR*);
1852 ULONG WINAPI RtlDosSearchPath_U(LPCWSTR, LPCWSTR, LPCWSTR, ULONG, LPWSTR, LPWSTR*);
1853 WCHAR WINAPI RtlDowncaseUnicodeChar(WCHAR);
1854 NTSTATUS WINAPI RtlDowncaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
1855 void WINAPI RtlDumpResource(LPRTL_RWLOCK);
1856 NTSTATUS WINAPI RtlDuplicateUnicodeString(int,const UNICODE_STRING*,UNICODE_STRING*);
1858 NTSTATUS WINAPI RtlEmptyAtomTable(RTL_ATOM_TABLE,BOOLEAN);
1859 LONGLONG WINAPI RtlEnlargedIntegerMultiply(INT,INT);
1860 ULONGLONG WINAPI RtlEnlargedUnsignedMultiply(UINT,UINT);
1861 UINT WINAPI RtlEnlargedUnsignedDivide(ULONGLONG,UINT,UINT *);
1862 NTSTATUS WINAPI RtlEnterCriticalSection(RTL_CRITICAL_SECTION *);
1863 void WINAPI RtlEraseUnicodeString(UNICODE_STRING*);
1864 NTSTATUS WINAPI RtlEqualComputerName(const UNICODE_STRING*,const UNICODE_STRING*);
1865 NTSTATUS WINAPI RtlEqualDomainName(const UNICODE_STRING*,const UNICODE_STRING*);
1866 BOOLEAN WINAPI RtlEqualLuid(const LUID*,const LUID*);
1867 BOOL WINAPI RtlEqualPrefixSid(PSID,PSID);
1868 BOOL WINAPI RtlEqualSid(PSID,PSID);
1869 BOOLEAN WINAPI RtlEqualString(const STRING*,const STRING*,BOOLEAN);
1870 BOOLEAN WINAPI RtlEqualUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
1871 NTSTATUS WINAPI RtlExpandEnvironmentStrings_U(PWSTR, const UNICODE_STRING*, UNICODE_STRING*, ULONG*);
1872 LONGLONG WINAPI RtlExtendedMagicDivide(LONGLONG,LONGLONG,INT);
1873 LONGLONG WINAPI RtlExtendedIntegerMultiply(LONGLONG,INT);
1874 LONGLONG WINAPI RtlExtendedLargeIntegerDivide(LONGLONG,INT,INT *);
1876 NTSTATUS WINAPI RtlFindCharInUnicodeString(int,const UNICODE_STRING*,const UNICODE_STRING*,USHORT*);
1877 ULONG WINAPI RtlFindClearBits(PCRTL_BITMAP,ULONG,ULONG);
1878 ULONG WINAPI RtlFindClearBitsAndSet(PRTL_BITMAP,ULONG,ULONG);
1879 ULONG WINAPI RtlFindClearRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
1880 ULONG WINAPI RtlFindLastBackwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
1881 ULONG WINAPI RtlFindLastBackwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
1882 CCHAR WINAPI RtlFindLeastSignificantBit(ULONGLONG);
1883 ULONG WINAPI RtlFindLongestRunSet(PCRTL_BITMAP,PULONG);
1884 ULONG WINAPI RtlFindLongestRunClear(PCRTL_BITMAP,PULONG);
1885 NTSTATUS WINAPI RtlFindMessage(HMODULE,ULONG,ULONG,ULONG,const MESSAGE_RESOURCE_ENTRY**);
1886 CCHAR WINAPI RtlFindMostSignificantBit(ULONGLONG);
1887 ULONG WINAPI RtlFindNextForwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
1888 ULONG WINAPI RtlFindNextForwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
1889 ULONG WINAPI RtlFindSetBits(PCRTL_BITMAP,ULONG,ULONG);
1890 ULONG WINAPI RtlFindSetBitsAndClear(PRTL_BITMAP,ULONG,ULONG);
1891 ULONG WINAPI RtlFindSetRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
1892 BOOLEAN WINAPI RtlFirstFreeAce(PACL,PACE_HEADER *);
1893 NTSTATUS WINAPI RtlFormatCurrentUserKeyPath(PUNICODE_STRING);
1894 NTSTATUS WINAPI RtlFormatMessage(LPWSTR,UCHAR,BOOLEAN,BOOLEAN,BOOLEAN,va_list *,LPWSTR,ULONG);
1895 void WINAPI RtlFreeAnsiString(PANSI_STRING);
1896 BOOLEAN WINAPI RtlFreeHandle(RTL_HANDLE_TABLE *,RTL_HANDLE *);
1897 BOOLEAN WINAPI RtlFreeHeap(HANDLE,ULONG,PVOID);
1898 void WINAPI RtlFreeOemString(POEM_STRING);
1899 DWORD WINAPI RtlFreeSid(PSID);
1900 void WINAPI RtlFreeUnicodeString(PUNICODE_STRING);
1902 NTSTATUS WINAPI RtlGetAce(PACL,DWORD,LPVOID *);
1903 NTSTATUS WINAPI RtlGetControlSecurityDescriptor(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL,LPDWORD);
1904 NTSTATUS WINAPI RtlGetCurrentDirectory_U(ULONG, LPWSTR);
1905 NTSTATUS WINAPI RtlGetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
1906 ULONG WINAPI RtlGetFullPathName_U(PCWSTR,ULONG,PWSTR,PWSTR*);
1907 NTSTATUS WINAPI RtlGetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
1908 NTSTATUS WINAPI RtlGetLastNtStatus(void);
1909 DWORD WINAPI RtlGetLastWin32Error(void);
1910 DWORD WINAPI RtlGetLongestNtPathLength(void);
1911 BOOLEAN WINAPI RtlGetNtProductType(LPDWORD);
1912 NTSTATUS WINAPI RtlGetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
1913 ULONG WINAPI RtlGetProcessHeaps(ULONG,HANDLE*);
1914 NTSTATUS WINAPI RtlGetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
1915 NTSTATUS WINAPI RtlGetVersion(RTL_OSVERSIONINFOEXW*);
1917 PSID_IDENTIFIER_AUTHORITY WINAPI RtlIdentifierAuthoritySid(PSID);
1918 PVOID WINAPI RtlImageDirectoryEntryToData(HMODULE,BOOL,WORD,ULONG *);
1919 PIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE);
1920 PIMAGE_SECTION_HEADER WINAPI RtlImageRvaToSection(const IMAGE_NT_HEADERS *,HMODULE,DWORD);
1921 PVOID WINAPI RtlImageRvaToVa(const IMAGE_NT_HEADERS *,HMODULE,DWORD,IMAGE_SECTION_HEADER **);
1922 NTSTATUS WINAPI RtlImpersonateSelf(SECURITY_IMPERSONATION_LEVEL);
1923 void WINAPI RtlInitString(PSTRING,PCSZ);
1924 void WINAPI RtlInitAnsiString(PANSI_STRING,PCSZ);
1925 void WINAPI RtlInitUnicodeString(PUNICODE_STRING,PCWSTR);
1926 NTSTATUS WINAPI RtlInitUnicodeStringEx(PUNICODE_STRING,PCWSTR);
1927 NTSTATUS WINAPI RtlInitializeCriticalSection(RTL_CRITICAL_SECTION *);
1928 NTSTATUS WINAPI RtlInitializeCriticalSectionAndSpinCount(RTL_CRITICAL_SECTION *,DWORD);
1929 void WINAPI RtlInitializeBitMap(PRTL_BITMAP,PULONG,ULONG);
1930 void WINAPI RtlInitializeHandleTable(ULONG,ULONG,RTL_HANDLE_TABLE *);
1931 void WINAPI RtlInitializeResource(LPRTL_RWLOCK);
1932 BOOL WINAPI RtlInitializeSid(PSID,PSID_IDENTIFIER_AUTHORITY,BYTE);
1934 NTSTATUS WINAPI RtlInt64ToUnicodeString(ULONGLONG,ULONG,UNICODE_STRING *);
1935 NTSTATUS WINAPI RtlIntegerToChar(ULONG,ULONG,ULONG,PCHAR);
1936 NTSTATUS WINAPI RtlIntegerToUnicodeString(ULONG,ULONG,UNICODE_STRING *);
1937 ULONG WINAPI RtlIsDosDeviceName_U(PCWSTR);
1938 BOOLEAN WINAPI RtlIsNameLegalDOS8Dot3(const UNICODE_STRING*,POEM_STRING,PBOOLEAN);
1939 BOOLEAN WINAPI RtlIsTextUnicode(LPCVOID,INT,INT *);
1940 BOOLEAN WINAPI RtlIsValidHandle(const RTL_HANDLE_TABLE *, const RTL_HANDLE *);
1941 BOOLEAN WINAPI RtlIsValidIndexHandle(const RTL_HANDLE_TABLE *, ULONG Index, RTL_HANDLE **);
1943 LONGLONG WINAPI RtlLargeIntegerAdd(LONGLONG,LONGLONG);
1944 LONGLONG WINAPI RtlLargeIntegerArithmeticShift(LONGLONG,INT);
1945 ULONGLONG WINAPI RtlLargeIntegerDivide( ULONGLONG,ULONGLONG,ULONGLONG *);
1946 LONGLONG WINAPI RtlLargeIntegerNegate(LONGLONG);
1947 LONGLONG WINAPI RtlLargeIntegerShiftLeft(LONGLONG,INT);
1948 LONGLONG WINAPI RtlLargeIntegerShiftRight(LONGLONG,INT);
1949 LONGLONG WINAPI RtlLargeIntegerSubtract(LONGLONG,LONGLONG);
1950 NTSTATUS WINAPI RtlLargeIntegerToChar(const ULONGLONG *,ULONG,ULONG,PCHAR);
1951 NTSTATUS WINAPI RtlLeaveCriticalSection(RTL_CRITICAL_SECTION *);
1952 DWORD WINAPI RtlLengthRequiredSid(DWORD);
1953 ULONG WINAPI RtlLengthSecurityDescriptor(PSECURITY_DESCRIPTOR);
1954 DWORD WINAPI RtlLengthSid(PSID);
1955 NTSTATUS WINAPI RtlLocalTimeToSystemTime(const LARGE_INTEGER*,PLARGE_INTEGER);
1956 BOOLEAN WINAPI RtlLockHeap(HANDLE);
1957 NTSTATUS WINAPI RtlLookupAtomInAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*);
1959 NTSTATUS WINAPI RtlMakeSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,LPDWORD);
1960 void WINAPI RtlMapGenericMask(PACCESS_MASK,const GENERIC_MAPPING*);
1961 NTSTATUS WINAPI RtlMultiByteToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
1962 NTSTATUS WINAPI RtlMultiByteToUnicodeSize(DWORD*,LPCSTR,UINT);
1964 DWORD WINAPI RtlNewSecurityObject(DWORD,DWORD,DWORD,DWORD,DWORD,DWORD);
1965 PRTL_USER_PROCESS_PARAMETERS WINAPI RtlNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
1966 ULONG WINAPI RtlNtStatusToDosError(NTSTATUS);
1967 ULONG WINAPI RtlNtStatusToDosErrorNoTeb(NTSTATUS);
1968 ULONG WINAPI RtlNumberOfSetBits(PCRTL_BITMAP);
1969 ULONG WINAPI RtlNumberOfClearBits(PCRTL_BITMAP);
1971 UINT WINAPI RtlOemStringToUnicodeSize(const STRING*);
1972 NTSTATUS WINAPI RtlOemStringToUnicodeString(UNICODE_STRING*,const STRING*,BOOLEAN);
1973 NTSTATUS WINAPI RtlOemToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
1974 DWORD WINAPI RtlOpenCurrentUser(ACCESS_MASK,PHANDLE);
1976 NTSTATUS WINAPI RtlPinAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
1977 BOOLEAN WINAPI RtlPrefixString(const STRING*,const STRING*,BOOLEAN);
1978 BOOLEAN WINAPI RtlPrefixUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
1980 NTSTATUS WINAPI RtlQueryAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM,ULONG*,ULONG*,WCHAR*,ULONG*);
1981 NTSTATUS WINAPI RtlQueryEnvironmentVariable_U(PWSTR,PUNICODE_STRING,PUNICODE_STRING);
1982 NTSTATUS WINAPI RtlQueryInformationAcl(PACL,LPVOID,DWORD,ACL_INFORMATION_CLASS);
1983 NTSTATUS WINAPI RtlQueryProcessDebugInformation(ULONG,ULONG,PDEBUG_BUFFER);
1984 NTSTATUS WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID);
1985 NTSTATUS WINAPI RtlQueryTimeZoneInformation(RTL_TIME_ZONE_INFORMATION*);
1986 void WINAPI RtlRaiseException(PEXCEPTION_RECORD);
1987 void WINAPI RtlRaiseStatus(NTSTATUS);
1988 ULONG WINAPI RtlRandom(PULONG);
1989 PVOID WINAPI RtlReAllocateHeap(HANDLE,ULONG,PVOID,ULONG);
1990 void WINAPI RtlReleasePebLock(void);
1991 void WINAPI RtlReleaseResource(LPRTL_RWLOCK);
1992 ULONG WINAPI RtlRemoveVectoredExceptionHandler(PVOID);
1993 void WINAPI RtlRestoreLastWin32Error(DWORD);
1995 void WINAPI RtlSecondsSince1970ToTime(DWORD,LARGE_INTEGER *);
1996 void WINAPI RtlSecondsSince1980ToTime(DWORD,LARGE_INTEGER *);
1997 NTSTATUS WINAPI RtlSelfRelativeToAbsoluteSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,
1998 PDWORD,PACL,PDWORD,PACL,PDWORD,PSID,PDWORD,PSID,PDWORD);
1999 void WINAPI RtlSetAllBits(PRTL_BITMAP);
2000 void WINAPI RtlSetBits(PRTL_BITMAP,ULONG,ULONG);
2001 ULONG WINAPI RtlSetCriticalSectionSpinCount(RTL_CRITICAL_SECTION*,ULONG);
2002 NTSTATUS WINAPI RtlSetCurrentDirectory_U(const UNICODE_STRING*);
2003 void WINAPI RtlSetCurrentEnvironment(PWSTR, PWSTR*);
2004 NTSTATUS WINAPI RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
2005 NTSTATUS WINAPI RtlSetEnvironmentVariable(PWSTR*,PUNICODE_STRING,PUNICODE_STRING);
2006 NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
2007 NTSTATUS WINAPI RtlSetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
2008 void WINAPI RtlSetLastWin32Error(DWORD);
2009 void WINAPI RtlSetLastWin32ErrorAndNtStatusFromNtStatus(NTSTATUS);
2010 NTSTATUS WINAPI RtlSetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
2011 NTSTATUS WINAPI RtlSetTimeZoneInformation(const RTL_TIME_ZONE_INFORMATION*);
2012 ULONG WINAPI RtlSizeHeap(HANDLE,ULONG,PVOID);
2013 LPDWORD WINAPI RtlSubAuthoritySid(PSID,DWORD);
2014 LPBYTE WINAPI RtlSubAuthorityCountSid(PSID);
2015 NTSTATUS WINAPI RtlSystemTimeToLocalTime(const LARGE_INTEGER*,PLARGE_INTEGER);
2017 void WINAPI RtlTimeToTimeFields(const LARGE_INTEGER*,PTIME_FIELDS);
2018 BOOLEAN WINAPI RtlTimeFieldsToTime(PTIME_FIELDS,PLARGE_INTEGER);
2019 void WINAPI RtlTimeToElapsedTimeFields(const LARGE_INTEGER *,PTIME_FIELDS);
2020 BOOLEAN WINAPI RtlTimeToSecondsSince1970(const LARGE_INTEGER *,LPDWORD);
2021 BOOLEAN WINAPI RtlTimeToSecondsSince1980(const LARGE_INTEGER *,LPDWORD);
2022 BOOL WINAPI RtlTryEnterCriticalSection(RTL_CRITICAL_SECTION *);
2024 ULONGLONG __cdecl RtlUlonglongByteSwap(ULONGLONG);
2025 DWORD WINAPI RtlUnicodeStringToAnsiSize(const UNICODE_STRING*);
2026 NTSTATUS WINAPI RtlUnicodeStringToAnsiString(PANSI_STRING,PCUNICODE_STRING,BOOLEAN);
2027 NTSTATUS WINAPI RtlUnicodeStringToInteger(const UNICODE_STRING *,ULONG,ULONG *);
2028 DWORD WINAPI RtlUnicodeStringToOemSize(const UNICODE_STRING*);
2029 NTSTATUS WINAPI RtlUnicodeStringToOemString(POEM_STRING,PCUNICODE_STRING,BOOLEAN);
2030 NTSTATUS WINAPI RtlUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2031 NTSTATUS WINAPI RtlUnicodeToMultiByteSize(PULONG,PCWSTR,ULONG);
2032 NTSTATUS WINAPI RtlUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2033 ULONG WINAPI RtlUniform(PULONG);
2034 BOOLEAN WINAPI RtlUnlockHeap(HANDLE);
2035 void WINAPI RtlUnwind(PVOID,PVOID,PEXCEPTION_RECORD,PVOID);
2036 #ifdef __ia64__
2037 void WINAPI RtlUnwind2(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT);
2038 void WINAPI RtlUnwindEx(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT,PUNWIND_HISTORY_TABLE);
2039 #endif
2040 WCHAR WINAPI RtlUpcaseUnicodeChar(WCHAR);
2041 NTSTATUS WINAPI RtlUpcaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING *,BOOLEAN);
2042 NTSTATUS WINAPI RtlUpcaseUnicodeStringToAnsiString(STRING*,const UNICODE_STRING*,BOOLEAN);
2043 NTSTATUS WINAPI RtlUpcaseUnicodeStringToCountedOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
2044 NTSTATUS WINAPI RtlUpcaseUnicodeStringToOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
2045 NTSTATUS WINAPI RtlUpcaseUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2046 NTSTATUS WINAPI RtlUpcaseUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2047 CHAR WINAPI RtlUpperChar(CHAR);
2048 void WINAPI RtlUpperString(STRING *,const STRING *);
2050 NTSTATUS WINAPI RtlValidSecurityDescriptor(PSECURITY_DESCRIPTOR);
2051 BOOLEAN WINAPI RtlValidAcl(PACL);
2052 BOOLEAN WINAPI RtlValidSid(PSID);
2053 BOOLEAN WINAPI RtlValidateHeap(HANDLE,ULONG,LPCVOID);
2054 NTSTATUS WINAPI RtlVerifyVersionInfo(const RTL_OSVERSIONINFOEXW*,DWORD,DWORDLONG);
2056 NTSTATUS WINAPI RtlWalkHeap(HANDLE,PVOID);
2058 NTSTATUS WINAPI RtlpWaitForCriticalSection(RTL_CRITICAL_SECTION *);
2059 NTSTATUS WINAPI RtlpUnWaitCriticalSection(RTL_CRITICAL_SECTION *);
2061 /* Wine internal functions */
2063 extern NTSTATUS wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRING *unix_name_ret,
2064 UINT disposition, BOOLEAN check_case );
2066 /***********************************************************************
2067 * Inline functions
2070 #define InitializeObjectAttributes(p,n,a,r,s) \
2071 do { \
2072 (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
2073 (p)->RootDirectory = r; \
2074 (p)->Attributes = a; \
2075 (p)->ObjectName = n; \
2076 (p)->SecurityDescriptor = s; \
2077 (p)->SecurityQualityOfService = NULL; \
2078 } while (0)
2080 #define NtCurrentProcess() ((HANDLE)-1)
2082 #define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length))
2083 #define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length))
2084 #define RtlStoreUlong(p,v) do { ULONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
2085 #define RtlStoreUlonglong(p,v) do { ULONGLONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
2086 #define RtlRetrieveUlong(p,s) memcpy((p), (s), sizeof(ULONG))
2087 #define RtlRetrieveUlonglong(p,s) memcpy((p), (s), sizeof(ULONGLONG))
2088 #define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))
2090 inline static BOOLEAN RtlCheckBit(PCRTL_BITMAP lpBits, ULONG ulBit)
2092 if (lpBits && ulBit < lpBits->SizeOfBitMap &&
2093 lpBits->Buffer[ulBit >> 5] & (1 << (ulBit & 31)))
2094 return TRUE;
2095 return FALSE;
2098 /* These are implemented as __fastcall, so we can't let Winelib apps link with them */
2099 inline static USHORT RtlUshortByteSwap(USHORT s)
2101 return (s >> 8) | (s << 8);
2103 inline static ULONG RtlUlongByteSwap(ULONG i)
2105 #if defined(__i386__) && defined(__GNUC__)
2106 ULONG ret;
2107 __asm__("bswap %0" : "=r" (ret) : "0" (i) );
2108 return ret;
2109 #else
2110 return ((ULONG)RtlUshortByteSwap((USHORT)i) << 16) | RtlUshortByteSwap((USHORT)(i >> 16));
2111 #endif
2114 /*************************************************************************
2115 * Loader functions and structures.
2117 * Those are not part of standard Winternl.h
2119 typedef struct _LDR_MODULE
2121 LIST_ENTRY InLoadOrderModuleList;
2122 LIST_ENTRY InMemoryOrderModuleList;
2123 LIST_ENTRY InInitializationOrderModuleList;
2124 void* BaseAddress;
2125 void* EntryPoint;
2126 ULONG SizeOfImage;
2127 UNICODE_STRING FullDllName;
2128 UNICODE_STRING BaseDllName;
2129 ULONG Flags;
2130 SHORT LoadCount;
2131 SHORT TlsIndex;
2132 HANDLE SectionHandle;
2133 ULONG CheckSum;
2134 ULONG TimeDateStamp;
2135 } LDR_MODULE, *PLDR_MODULE;
2137 /* those defines are (some of the) regular LDR_MODULE.Flags values */
2138 #define LDR_IMAGE_IS_DLL 0x00000004
2139 #define LDR_LOAD_IN_PROGRESS 0x00001000
2140 #define LDR_UNLOAD_IN_PROGRESS 0x00002000
2141 #define LDR_NO_DLL_CALLS 0x00040000
2142 #define LDR_PROCESS_ATTACHED 0x00080000
2143 #define LDR_MODULE_REBASED 0x00200000
2145 /* these ones is Wine specific */
2146 #define LDR_DONT_RESOLVE_REFS 0x40000000
2147 #define LDR_WINE_INTERNAL 0x80000000
2149 /* FIXME: to be checked */
2150 #define MAXIMUM_FILENAME_LENGTH 256
2152 typedef struct _SYSTEM_MODULE
2154 ULONG Reserved1;
2155 ULONG Reserved2;
2156 PVOID ImageBaseAddress;
2157 ULONG ImageSize;
2158 ULONG Flags;
2159 WORD Id;
2160 WORD Rank;
2161 WORD Unknown;
2162 WORD NameOffset;
2163 BYTE Name[MAXIMUM_FILENAME_LENGTH];
2164 } SYSTEM_MODULE, *PSYSTEM_MODULE;
2166 typedef struct _SYSTEM_MODULE_INFORMATION
2168 ULONG ModulesCount;
2169 SYSTEM_MODULE Modules[1]; /* FIXME: should be Modules[0] */
2170 } SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;
2172 NTSTATUS WINAPI LdrDisableThreadCalloutsForDll(HMODULE);
2173 NTSTATUS WINAPI LdrFindEntryForAddress(const void*, PLDR_MODULE*);
2174 NTSTATUS WINAPI LdrLockLoaderLock(ULONG,ULONG*,ULONG*);
2175 NTSTATUS WINAPI LdrQueryProcessModuleInformation(SYSTEM_MODULE_INFORMATION*, ULONG, ULONG*);
2176 NTSTATUS WINAPI LdrUnloadDll(HMODULE);
2177 NTSTATUS WINAPI LdrUnlockLoaderLock(ULONG,ULONG);
2179 /* list manipulation macros */
2180 #define InitializeListHead(le) (void)((le)->Flink = (le)->Blink = (le))
2181 #define InsertHeadList(le,e) do { PLIST_ENTRY f = (le)->Flink; (e)->Flink = f; (e)->Blink = (le); f->Blink = (e); (le)->Flink = (e); } while (0)
2182 #define InsertTailList(le,e) do { PLIST_ENTRY b = (le)->Blink; (e)->Flink = (le); (e)->Blink = b; b->Flink = (e); (le)->Blink = (e); } while (0)
2183 #define IsListEmpty(le) ((le)->Flink == (le))
2184 #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)
2185 static inline PLIST_ENTRY RemoveHeadList(PLIST_ENTRY le)
2187 PLIST_ENTRY f, b, e;
2189 e = le->Flink;
2190 f = le->Flink->Flink;
2191 b = le->Flink->Blink;
2192 f->Blink = b;
2193 b->Flink = f;
2195 if (e != le) e->Flink = e->Blink = NULL;
2196 return e;
2198 static inline PLIST_ENTRY RemoveTailList(PLIST_ENTRY le)
2200 PLIST_ENTRY f, b, e;
2202 e = le->Blink;
2203 f = le->Blink->Flink;
2204 b = le->Blink->Blink;
2205 f->Blink = b;
2206 b->Flink = f;
2208 if (e != le) e->Flink = e->Blink = NULL;
2209 return e;
2212 #ifdef __cplusplus
2213 } /* extern "C" */
2214 #endif /* defined(__cplusplus) */
2216 #endif /* __WINE_WINTERNL_H */