Use MSI_IterateRecords for processing actions.
[wine/testsucceed.git] / include / winternl.h
blob345b7aa4cc4d801d8bcdf0a209e06a33ef4f7ab9
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_ */
79 typedef struct _CLIENT_ID
81 HANDLE UniqueProcess;
82 HANDLE UniqueThread;
83 } CLIENT_ID, *PCLIENT_ID;
85 typedef struct _CURDIR
87 UNICODE_STRING DosPath;
88 PVOID Handle;
89 } CURDIR, *PCURDIR;
91 typedef struct RTL_DRIVE_LETTER_CURDIR
93 USHORT Flags;
94 USHORT Length;
95 ULONG TimeStamp;
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;
116 ULONG Size;
117 ULONG Flags;
118 ULONG DebugFlags;
119 HANDLE ConsoleHandle;
120 ULONG ConsoleFlags;
121 HANDLE hStdInput;
122 HANDLE hStdOutput;
123 HANDLE hStdError;
124 CURDIR CurrentDirectory;
125 UNICODE_STRING DllPath;
126 UNICODE_STRING ImagePathName;
127 UNICODE_STRING CommandLine;
128 PWSTR Environment;
129 ULONG dwX;
130 ULONG dwY;
131 ULONG dwXSize;
132 ULONG dwYSize;
133 ULONG dwXCountChars;
134 ULONG dwYCountChars;
135 ULONG dwFillAttribute;
136 ULONG dwFlags;
137 ULONG wShowWindow;
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
150 ULONG Length;
151 BOOLEAN Initialized;
152 PVOID SsHandle;
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
160 ULONG Offset;
161 HANDLE HDC;
162 ULONG Buffer[0x136];
163 } GDI_TEB_BATCH;
165 /***********************************************************************
166 * PEB data structure
168 typedef struct _PEB
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 */
225 } PEB, *PPEB;
228 /***********************************************************************
229 * TEB data structure
231 #ifndef WINE_NO_TEB /* don't define TEB if included from thread.h */
232 # ifndef WINE_TEB_DEFINED
233 # define WINE_TEB_DEFINED
234 typedef struct _TEB
236 NT_TIB Tib; /* 000 */
237 PVOID EnvironmentPointer; /* 01c */
238 CLIENT_ID ClientId; /* 020 */
239 PVOID ActiveRpcHandle; /* 028 */
240 PVOID ThreadLocalStoragePointer; /* 02c */
241 PPEB Peb; /* 030 */
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 */
279 PVOID Vdm; /* f18 */
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 */
293 } TEB, *PTEB;
294 # endif /* WINE_TEB_DEFINED */
295 #endif /* WINE_NO_TEB */
297 /***********************************************************************
298 * Enums
301 typedef enum _FILE_INFORMATION_CLASS {
302 FileDirectoryInformation = 1,
303 FileFullDirectoryInformation,
304 FileBothDirectoryInformation,
305 FileBasicInformation,
306 FileStandardInformation,
307 FileInternalInformation,
308 FileEaInformation,
309 FileAccessInformation,
310 FileNameInformation,
311 FileRenameInformation,
312 FileLinkInformation,
313 FileNamesInformation,
314 FileDispositionInformation,
315 FilePositionInformation,
316 FileFullEaInformation,
317 FileModeInformation,
318 FileAlignmentInformation,
319 FileAllInformation,
320 FileAllocationInformation,
321 FileEndOfFileInformation,
322 FileAlternateNameInformation,
323 FileStreamInformation,
324 FilePipeInformation,
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;
343 ULONG FileIndex;
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;
357 ULONG FileIndex;
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;
366 ULONG EaSize;
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;
373 ULONG FileIndex;
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;
382 ULONG EaSize;
383 CHAR ShortNameLength;
384 WCHAR ShortName[12];
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;
400 ULONG NumberOfLinks;
401 BOOLEAN DeletePending;
402 BOOLEAN Directory;
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 {
410 ULONG EaSize;
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;
419 WCHAR FileName[1];
420 } FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
422 typedef struct _FILE_RENAME_INFORMATION {
423 BOOLEAN Replace;
424 HANDLE RootDir;
425 ULONG FileNameLength;
426 WCHAR FileName[1];
427 } FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;
429 typedef struct _FILE_NAMES_INFORMATION {
430 ULONG NextEntryOffset;
431 ULONG FileIndex;
432 ULONG FileNameLength;
433 WCHAR FileName[1];
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;
468 UCHAR Flags;
469 UCHAR EaNameLength;
470 USHORT EaValueLength;
471 CHAR EaName[1];
472 } FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
474 typedef struct _FILE_MODE_INFORMATION {
475 ULONG Mode;
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;
484 WCHAR StreamName[1];
485 } FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
487 typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION
489 ULONG FileAttributes;
490 ULONG ReparseTag;
491 } FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION;
493 typedef struct _FILE_MAILSLOT_QUERY_INFORMATION {
494 ULONG MaximumMessageSize;
495 ULONG MailslotQuota;
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 {
531 KeyBasicInformation,
532 KeyNodeInformation,
533 KeyFullInformation
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,
557 ProcessTimes = 4,
558 ProcessBasePriority = 5,
559 ProcessRaisePriority = 6,
560 ProcessDebugPort = 7,
561 ProcessExceptionPort = 8,
562 ProcessAccessToken = 9,
563 ProcessLdtInformation = 10,
564 ProcessLdtSize = 11,
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,
580 MaxProcessInfoClass
581 } PROCESSINFOCLASS, PROCESS_INFORMATION_CLASS;
583 typedef enum _SECTION_INHERIT {
584 ViewShare = 1,
585 ViewUnmap = 2
586 } SECTION_INHERIT;
588 typedef enum _SYSTEM_INFORMATION_CLASS {
589 SystemBasicInformation = 0,
590 SystemCpuInformation = 1,
591 SystemPerformanceInformation = 2,
592 SystemTimeOfDayInformation = 3, /* was SystemTimeInformation */
593 Unknown4,
594 SystemProcessInformation = 5,
595 Unknown6,
596 Unknown7,
597 SystemProcessorPerformanceInformation = 8,
598 Unknown9,
599 Unknown10,
600 SystemModuleInformation = 11,
601 Unknown12,
602 Unknown13,
603 Unknown14,
604 Unknown15,
605 SystemHandleInformation = 16,
606 Unknown17,
607 SystemPageFileInformation = 18,
608 Unknown19,
609 Unknown20,
610 SystemCacheInformation = 21,
611 Unknown22,
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 {
646 NotificationTimer,
647 SynchronizationTimer
648 } TIMER_TYPE;
650 typedef enum _THREADINFOCLASS {
651 ThreadBasicInformation,
652 ThreadTimes,
653 ThreadPriority,
654 ThreadBasePriority,
655 ThreadAffinityMask,
656 ThreadImpersonationToken,
657 ThreadDescriptorTableEntry,
658 ThreadEnableAlignmentFaultFixup,
659 ThreadEventPair_Reusable,
660 ThreadQuerySetWin32StartAddress,
661 ThreadZeroTlsCell,
662 ThreadPerformanceCount,
663 ThreadAmILastThread,
664 ThreadIdealProcessor,
665 ThreadPriorityBoost,
666 ThreadSetTlsArrayAddress,
667 ThreadIsIoPending,
668 MaxThreadInfoClass
669 } THREADINFOCLASS;
671 typedef struct _THREAD_BASIC_INFORMATION
673 NTSTATUS ExitStatus;
674 PVOID TebBaseAddress;
675 CLIENT_ID ClientId;
676 ULONG AffinityMask;
677 LONG Priority;
678 LONG BasePriority;
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,
689 MemorySectionName,
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 {
699 LONG CurrentCount;
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;
712 BOOLEAN TimerState;
713 } TIMER_BASIC_INFORMATION, *PTIMER_BASIC_INFORMATION;
716 /* return type of RtlDetermineDosPathNameType_U (FIXME: not the correct names) */
717 typedef enum
719 INVALID_PATH = 0,
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 /* "//." */
727 } DOS_PATHNAME_TYPE;
729 /***********************************************************************
730 * IA64 specific types and data structures
733 #ifdef __ia64__
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 {
743 ULONG BeginAddress;
744 ULONG EndAddress;
745 ULONG UnwindInfoAddress;
746 } RUNTIME_FUNCTION, *PRUNTIME_FUNCTION;
748 typedef struct _UNWIND_HISTORY_TABLE_ENTRY {
749 ULONG64 ImageBase;
750 ULONG64 Gp;
751 PRUNTIME_FUNCTION FunctionEntry;
752 } UNWIND_HISTORY_TABLE_ENTRY, *PUNWIND_HISTORY_TABLE_ENTRY;
754 typedef struct _UNWIND_HISTORY_TABLE {
755 ULONG Count;
756 UCHAR Search;
757 ULONG64 LowAddress;
758 ULONG64 HighAddress;
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;
771 FILETIME ftUserTime;
772 FILETIME ftCreateTime;
773 DWORD dwTickCount;
774 DWORD dwStartAddress;
775 DWORD dwOwningPID;
776 DWORD dwThreadID;
777 DWORD dwCurrentPriority;
778 DWORD dwBasePriority;
779 DWORD dwContextSwitches;
780 DWORD dwThreadState;
781 DWORD dwWaitReason;
782 DWORD dwUnknown;
783 } SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION;
785 typedef struct _IO_STATUS_BLOCK {
786 union {
787 NTSTATUS Status;
788 PVOID Pointer;
789 } DUMMYUNIONNAME;
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;
798 ULONG TitleIndex;
799 ULONG NameLength;
800 WCHAR Name[1];
801 } KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
803 typedef struct _KEY_NODE_INFORMATION
805 LARGE_INTEGER LastWriteTime;
806 ULONG TitleIndex;
807 ULONG ClassOffset;
808 ULONG ClassLength;
809 ULONG NameLength;
810 WCHAR Name[1];
811 /* Class[1]; */
812 } KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
814 typedef struct _KEY_FULL_INFORMATION
816 LARGE_INTEGER LastWriteTime;
817 ULONG TitleIndex;
818 ULONG ClassOffset;
819 ULONG ClassLength;
820 ULONG SubKeys;
821 ULONG MaxNameLen;
822 ULONG MaxClassLen;
823 ULONG Values;
824 ULONG MaxValueNameLen;
825 ULONG MaxValueDataLen;
826 WCHAR Class[1];
827 } KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
829 typedef struct _KEY_VALUE_ENTRY
831 PUNICODE_STRING ValueName;
832 ULONG DataLength;
833 ULONG DataOffset;
834 ULONG Type;
835 } KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
837 typedef struct _KEY_VALUE_BASIC_INFORMATION {
838 ULONG TitleIndex;
839 ULONG Type;
840 ULONG NameLength;
841 WCHAR Name[1];
842 } KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
844 typedef struct _KEY_VALUE_FULL_INFORMATION {
845 ULONG TitleIndex;
846 ULONG Type;
847 ULONG DataOffset;
848 ULONG DataLength;
849 ULONG NameLength;
850 WCHAR Name[1];
851 } KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
853 typedef struct _KEY_VALUE_PARTIAL_INFORMATION {
854 ULONG TitleIndex;
855 ULONG Type;
856 ULONG DataLength;
857 UCHAR Data[1];
858 } KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
860 typedef struct _OBJECT_ATTRIBUTES {
861 ULONG Length;
862 HANDLE RootDirectory;
863 PUNICODE_STRING ObjectName;
864 ULONG Attributes;
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 {
875 #ifdef __WINESRC__
876 DWORD ExitStatus;
877 DWORD PebBaseAddress;
878 DWORD AffinityMask;
879 DWORD BasePriority;
880 ULONG UniqueProcessId;
881 ULONG InheritedFromUniqueProcessId;
882 #else
883 PVOID Reserved1;
884 PPEB PebBaseAddress;
885 PVOID Reserved2[2];
886 ULONG_PTR UniqueProcessId;
887 PVOID Reserved3;
888 #endif
889 } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
891 typedef struct _RTL_HEAP_DEFINITION {
892 ULONG Length; /* = sizeof(RTL_HEAP_DEFINITION) */
894 ULONG Unknown[11];
895 } RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION;
897 typedef struct _RTL_RWLOCK {
898 RTL_CRITICAL_SECTION rtlCS;
900 HANDLE hSharedReleaseSemaphore;
901 UINT uSharedWaiters;
903 HANDLE hExclusiveReleaseSemaphore;
904 UINT uExclusiveWaiters;
906 INT iNumberActive;
907 HANDLE hOwningThreadId;
908 DWORD dwTimeoutBoost;
909 PVOID pDebugInfo;
910 } RTL_RWLOCK, *LPRTL_RWLOCK;
912 /* System Information Class 0x00 */
914 typedef struct _SYSTEM_BASIC_INFORMATION {
915 #ifdef __WINESRC__
916 DWORD dwUnknown1;
917 ULONG uKeMaximumIncrement;
918 ULONG uPageSize;
919 ULONG uMmNumberOfPhysicalPages;
920 ULONG uMmLowestPhysicalPage;
921 ULONG uMmHighestPhysicalPage;
922 ULONG uAllocationGranularity;
923 PVOID pLowestUserAddress;
924 PVOID pMmHighestUserAddress;
925 ULONG uKeActiveProcessors;
926 BYTE bKeNumberProcessors;
927 BYTE bUnknown2;
928 WORD wUnknown3;
929 #else
930 BYTE Reserved1[24];
931 PVOID Reserved2[4];
932 CCHAR NumberOfProcessors;
933 #endif
934 } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
936 /* System Information Class 0x01 */
938 typedef struct _SYSTEM_CPU_INFORMATION {
939 WORD Architecture;
940 WORD Level;
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 {
969 BYTE Reserved1[312];
970 } SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
972 /* System Information Class 0x03 */
974 typedef struct _SYSTEM_TIMEOFDAY_INFORMATION {
975 #ifdef __WINESRC__
976 LARGE_INTEGER liKeBootTime;
977 LARGE_INTEGER liKeSystemTime;
978 LARGE_INTEGER liExpTimeZoneBias;
979 ULONG uCurrentTimeZoneId;
980 DWORD dwUnknown1[5];
981 #else
982 BYTE Reserved1[48];
983 #endif
984 } SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION; /* was SYSTEM_TIME_INFORMATION */
986 /* System Information Class 0x08 */
988 typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION {
989 #ifdef __WINESRC__
990 LARGE_INTEGER liIdleTime;
991 DWORD dwSpare[10];
992 #else
993 LARGE_INTEGER IdleTime;
994 LARGE_INTEGER KernelTime;
995 LARGE_INTEGER UserTime;
996 LARGE_INTEGER Reserved1[2];
997 ULONG Reserved2;
998 #endif
999 } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
1001 /* System Information Class 0x0b */
1003 typedef struct _SYSTEM_DRIVER_INFORMATION {
1004 PVOID pvAddress;
1005 DWORD dwUnknown1;
1006 DWORD dwUnknown2;
1007 DWORD dwEntryIndex;
1008 DWORD dwUnknown3;
1009 char szName[MAX_PATH + 1];
1010 } SYSTEM_DRIVER_INFORMATION, *PSYSTEM_DRIVER_INFORMATION;
1012 /* System Information Class 0x10 */
1014 typedef struct _SYSTEM_HANDLE_ENTRY {
1015 ULONG OwnerPid;
1016 BYTE ObjectType;
1017 BYTE HandleFlags;
1018 USHORT HandleValue;
1019 PVOID ObjectPointer;
1020 ULONG AccessMask;
1021 } SYSTEM_HANDLE_ENTRY, *PSYSTEM_HANDLE_ENTRY;
1023 typedef struct _SYSTEM_HANDLE_INFORMATION {
1024 ULONG Count;
1025 SYSTEM_HANDLE_ENTRY Handle[1];
1026 } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
1028 /* System Information Class 0x15 */
1030 typedef struct _SYSTEM_CACHE_INFORMATION {
1031 ULONG CurrentSize;
1032 ULONG PeakSize;
1033 ULONG PageFaultCount;
1034 ULONG MinimumWorkingSet;
1035 ULONG MaximumWorkingSet;
1036 ULONG unused[4];
1037 } SYSTEM_CACHE_INFORMATION, *PSYSTEM_CACHE_INFORMATION;
1039 /* System Information Class 0x17 */
1041 typedef struct _SYSTEM_INTERRUPT_INFORMATION {
1042 BYTE Reserved1[24];
1043 } SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION;
1045 typedef struct _SYSTEM_CONFIGURATION_INFO {
1046 union {
1047 ULONG OemId;
1048 struct {
1049 WORD ProcessorArchitecture;
1050 WORD Reserved;
1051 } tag1;
1052 } tag2;
1053 ULONG PageSize;
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 {
1065 BYTE Reserved1[16];
1066 } SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION;
1068 typedef struct _SYSTEM_LOOKASIDE_INFORMATION {
1069 BYTE Reserved1[32];
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;
1081 SIZE_T VirtualSize;
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 {
1094 #ifdef __WINESRC__
1095 DWORD dwOffset;
1096 DWORD dwThreadCount;
1097 DWORD dwUnknown1[6];
1098 FILETIME ftCreationTime;
1099 FILETIME ftUserTime;
1100 FILETIME ftKernelTime;
1101 UNICODE_STRING ProcessName;
1102 DWORD dwBasePriority;
1103 DWORD dwProcessID;
1104 DWORD dwParentProcessID;
1105 DWORD dwHandleCount;
1106 DWORD dwUnknown3;
1107 DWORD dwUnknown4;
1108 VM_COUNTERS vmCounters;
1109 IO_COUNTERS ioCounters;
1110 SYSTEM_THREAD_INFORMATION ti[1];
1111 #else
1112 ULONG NextEntryOffset;
1113 BYTE Reserved1[52];
1114 PVOID Reserved2[3];
1115 HANDLE UniqueProcessId;
1116 PVOID Reserved3;
1117 ULONG HandleCount;
1118 BYTE Reserved4[4];
1119 PVOID Reserved5[11];
1120 SIZE_T PeakPagefileUsage;
1121 SIZE_T PrivatePageCount;
1122 LARGE_INTEGER Reserved6[6];
1123 #endif
1124 } SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
1126 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION {
1127 ULONG RegistryQuotaAllowed;
1128 ULONG RegistryQuotaUsed;
1129 PVOID Reserved1;
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
1138 { CSHORT Year;
1139 CSHORT Month;
1140 CSHORT Day;
1141 CSHORT Hour;
1142 CSHORT Minute;
1143 CSHORT Second;
1144 CSHORT Milliseconds;
1145 CSHORT Weekday;
1146 } TIME_FIELDS, *PTIME_FIELDS;
1148 typedef struct _WINSTATIONINFORMATIONW {
1149 BYTE Reserved2[70];
1150 ULONG LogonId;
1151 BYTE Reserved3[1140];
1152 } WINSTATIONINFORMATIONW, *PWINSTATIONINFORMATIONW;
1154 typedef BOOLEAN (WINAPI * PWINSTATIONQUERYINFORMATIONW)(HANDLE,ULONG,WINSTATIONINFOCLASS,PVOID,ULONG,PULONG);
1156 typedef struct _LDR_RESOURCE_INFO
1158 ULONG Type;
1159 ULONG Name;
1160 ULONG Language;
1161 } LDR_RESOURCE_INFO, *PLDR_RESOURCE_INFO;
1164 /* debug buffer definitions */
1166 typedef struct _DEBUG_BUFFER {
1167 HANDLE SectionHandle;
1168 PVOID SectionBase;
1169 PVOID RemoteSectionBase;
1170 ULONG SectionBaseDelta;
1171 HANDLE EventPairHandle;
1172 ULONG Unknown[2];
1173 HANDLE RemoteThreadHandle;
1174 ULONG InfoClassMask;
1175 ULONG SizeOfInfo;
1176 ULONG AllocatedSize;
1177 ULONG SectionSize;
1178 PVOID ModuleInformation;
1179 PVOID BackTraceInformation;
1180 PVOID HeapInformation;
1181 PVOID LockInformation;
1182 PVOID Reserved[8];
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 {
1193 ULONG Reserved[2];
1194 ULONG Base;
1195 ULONG Size;
1196 ULONG Flags;
1197 USHORT Index;
1198 USHORT Unknown;
1199 USHORT LoadCount;
1200 USHORT ModuleNameOffset;
1201 CHAR ImageName[256];
1202 } DEBUG_MODULE_INFORMATION, *PDEBUG_MODULE_INFORMATION;
1204 typedef struct _DEBUG_HEAP_INFORMATION {
1205 ULONG Base;
1206 ULONG Flags;
1207 USHORT Granularity;
1208 USHORT Unknown;
1209 ULONG Allocated;
1210 ULONG Committed;
1211 ULONG TagCount;
1212 ULONG BlockCount;
1213 ULONG Reserved[7];
1214 PVOID Tags;
1215 PVOID Blocks;
1216 } DEBUG_HEAP_INFORMATION, *PDEBUG_HEAP_INFORMATION;
1218 typedef struct _DEBUG_LOCK_INFORMATION {
1219 PVOID Address;
1220 USHORT Type;
1221 USHORT CreatorBackTraceIndex;
1222 ULONG OwnerThreadId;
1223 ULONG ActiveCount;
1224 ULONG ContentionCount;
1225 ULONG EntryCount;
1226 ULONG RecursionCount;
1227 ULONG NumberOfSharedWaiters;
1228 ULONG NumberOfExclusiveWaiters;
1229 } DEBUG_LOCK_INFORMATION, *PDEBUG_LOCK_INFORMATION;
1231 typedef struct _PORT_MESSAGE_HEADER {
1232 USHORT DataSize;
1233 USHORT MessageSize;
1234 USHORT MessageType;
1235 USHORT VirtualRangesOffset;
1236 CLIENT_ID ClientId;
1237 ULONG MessageId;
1238 ULONG SectionSize;
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;
1256 USHORT Pinned;
1257 USHORT NameLength;
1258 WCHAR Name[1];
1259 } ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION;
1261 /* FIXME: names probably not correct */
1262 typedef struct _RTL_HANDLE
1264 struct _RTL_HANDLE * Next;
1265 } RTL_HANDLE;
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 */
1277 } RTL_HANDLE_TABLE;
1279 /***********************************************************************
1280 * Defines
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
1318 #define FILE_OPEN 1
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,
1424 ULONG ValueType,
1425 PVOID ValueData,
1426 ULONG ValueLength,
1427 PVOID Context,
1428 PVOID EntryContext);
1430 typedef struct _RTL_QUERY_REGISTRY_TABLE
1432 PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;
1433 ULONG Flags;
1434 PWSTR Name;
1435 PVOID EntryContext;
1436 ULONG DefaultType;
1437 PVOID DefaultData;
1438 ULONG DefaultLength;
1439 } RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
1441 typedef struct _KEY_MULTIPLE_VALUE_INFORMATION
1443 PUNICODE_STRING ValueName;
1444 ULONG DataLength;
1445 ULONG DataOffset;
1446 ULONG Type;
1447 } KEY_MULTIPLE_VALUE_INFORMATION, *PKEY_MULTIPLE_VALUE_INFORMATION;
1449 typedef VOID (*PTIMER_APC_ROUTINE) ( PVOID, ULONG, LONG );
1451 typedef enum _EVENT_TYPE {
1452 NotificationEvent,
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;
1462 LONG EventState;
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 {
1470 ULONG CurrentCount;
1471 ULONG MaximumCount;
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 {
1481 ULONG BaseAddress;
1482 ULONG Attributes;
1483 LARGE_INTEGER Size;
1484 } SECTION_BASIC_INFORMATION, *PSECTION_BASIC_INFORMATION;
1486 typedef struct _SECTION_IMAGE_INFORMATION {
1487 PVOID EntryPoint;
1488 ULONG StackZeroBits;
1489 ULONG StackReserved;
1490 ULONG StackCommit;
1491 ULONG ImageSubsystem;
1492 WORD SubsystemVersionLow;
1493 WORD SubsystemVersionHigh;
1494 ULONG Unknown1;
1495 ULONG ImageCharacteristics;
1496 ULONG ImageMachineType;
1497 ULONG Unknown2[3];
1498 } SECTION_IMAGE_INFORMATION, *PSECTION_IMAGE_INFORMATION;
1500 typedef struct _LPC_SECTION_WRITE {
1501 ULONG Length;
1502 HANDLE SectionHandle;
1503 ULONG SectionOffset;
1504 ULONG ViewSize;
1505 PVOID ViewBase;
1506 PVOID TargetViewBase;
1507 } LPC_SECTION_WRITE, *PLPC_SECTION_WRITE;
1509 typedef struct _LPC_SECTION_READ {
1510 ULONG Length;
1511 ULONG ViewSize;
1512 PVOID ViewBase;
1513 } LPC_SECTION_READ, *PLPC_SECTION_READ;
1515 typedef struct _LPC_MESSAGE {
1516 USHORT DataSize;
1517 USHORT MessageSize;
1518 USHORT MessageType;
1519 USHORT VirtualRangesOffset;
1520 CLIENT_ID ClientId;
1521 ULONG MessageId;
1522 ULONG SectionSize;
1523 UCHAR Data[ANYSIZE_ARRAY];
1524 } LPC_MESSAGE, *PLPC_MESSAGE;
1526 typedef enum _SHUTDOWN_ACTION {
1527 ShutdownNoReboot,
1528 ShutdownReboot,
1529 ShutdownPowerOff
1530 } SHUTDOWN_ACTION, *PSHUTDOWN_ACTION;
1532 typedef enum _KPROFILE_SOURCE {
1533 ProfileTime,
1534 ProfileAlignmentFixup,
1535 ProfileTotalIssues,
1536 ProfilePipelineDry,
1537 ProfileLoadInstructions,
1538 ProfilePipelineFrozen,
1539 ProfileBranchInstructions,
1540 ProfileTotalNonissues,
1541 ProfileDcacheMisses,
1542 ProfileIcacheMisses,
1543 ProfileCacheMisses,
1544 ProfileBranchMispredictions,
1545 ProfileStoreInstructions,
1546 ProfileFpInstructions,
1547 ProfileIntegerInstructions,
1548 Profile2Issue,
1549 Profile3Issue,
1550 Profile4Issue,
1551 ProfileSpecialInstructions,
1552 ProfileTotalCycles,
1553 ProfileIcacheIssues,
1554 ProfileDcacheAccesses,
1555 ProfileMemoryBarrierCycles,
1556 ProfileLoadLinkedIssues,
1557 ProfileMaximum
1558 } KPROFILE_SOURCE, *PKPROFILE_SOURCE;
1560 typedef struct _OBJDIR_INFORMATION {
1561 UNICODE_STRING ObjectName;
1562 UNICODE_STRING ObjectTypeName;
1563 BYTE Data[1];
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(PHANDLE,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(HANDLE);
1625 NTSTATUS WINAPI NtDeleteValueKey(HANDLE,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(HANDLE,ULONG,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
1631 NTSTATUS WINAPI NtEnumerateValueKey(HANDLE,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(HANDLE);
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(HANDLE,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(PHANDLE,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(HANDLE,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
1684 NTSTATUS WINAPI NtQueryMultipleValueKey(HANDLE,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(HANDLE,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,HANDLE,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(HANDLE,HANDLE,ULONG);
1712 NTSTATUS WINAPI NtResumeThread(HANDLE,PULONG);
1713 NTSTATUS WINAPI NtSaveKey(HANDLE,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(HANDLE,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(HANDLE,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(HANDLE);
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 NTSTATUS WINAPI RtlCopySecurityDescriptor(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR);
1791 void WINAPI RtlCopyString(STRING*,const STRING*);
1792 void WINAPI RtlCopyUnicodeString(UNICODE_STRING*,const UNICODE_STRING*);
1793 NTSTATUS WINAPI RtlCreateAcl(PACL,DWORD,DWORD);
1794 NTSTATUS WINAPI RtlCreateAtomTable(ULONG,RTL_ATOM_TABLE*);
1795 NTSTATUS WINAPI RtlCreateEnvironment(BOOLEAN, PWSTR*);
1796 HANDLE WINAPI RtlCreateHeap(ULONG,PVOID,ULONG,ULONG,PVOID,PRTL_HEAP_DEFINITION);
1797 NTSTATUS WINAPI RtlCreateProcessParameters(RTL_USER_PROCESS_PARAMETERS**,const UNICODE_STRING*,
1798 const UNICODE_STRING*,const UNICODE_STRING*,
1799 const UNICODE_STRING*,PWSTR,const UNICODE_STRING*,
1800 const UNICODE_STRING*,const UNICODE_STRING*,
1801 const UNICODE_STRING*);
1802 NTSTATUS WINAPI RtlCreateSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD);
1803 BOOLEAN WINAPI RtlCreateUnicodeString(PUNICODE_STRING,LPCWSTR);
1804 BOOLEAN WINAPI RtlCreateUnicodeStringFromAsciiz(PUNICODE_STRING,LPCSTR);
1805 NTSTATUS WINAPI RtlCreateUserThread(HANDLE,const SECURITY_DESCRIPTOR*,BOOLEAN,PVOID,SIZE_T,SIZE_T,PRTL_THREAD_START_ROUTINE,void*,HANDLE*,CLIENT_ID*);
1807 NTSTATUS WINAPI RtlDeleteAce(PACL,DWORD);
1808 NTSTATUS WINAPI RtlDeleteAtomFromAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
1809 NTSTATUS WINAPI RtlDeleteCriticalSection(RTL_CRITICAL_SECTION *);
1810 NTSTATUS WINAPI RtlDeleteRegistryValue(ULONG, PCWSTR, PCWSTR);
1811 void WINAPI RtlDeleteResource(LPRTL_RWLOCK);
1812 DWORD WINAPI RtlDeleteSecurityObject(DWORD);
1813 PRTL_USER_PROCESS_PARAMETERS WINAPI RtlDeNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
1814 NTSTATUS WINAPI RtlDestroyAtomTable(RTL_ATOM_TABLE);
1815 NTSTATUS WINAPI RtlDestroyEnvironment(PWSTR);
1816 NTSTATUS WINAPI RtlDestroyHandleTable(RTL_HANDLE_TABLE *);
1817 HANDLE WINAPI RtlDestroyHeap(HANDLE);
1818 void WINAPI RtlDestroyProcessParameters(RTL_USER_PROCESS_PARAMETERS*);
1819 NTSTATUS WINAPI RtlDestroyQueryDebugBuffer(PDEBUG_BUFFER);
1820 DOS_PATHNAME_TYPE WINAPI RtlDetermineDosPathNameType_U(PCWSTR);
1821 BOOLEAN WINAPI RtlDoesFileExists_U(LPCWSTR);
1822 BOOLEAN WINAPI RtlDosPathNameToNtPathName_U(PCWSTR,PUNICODE_STRING,PWSTR*,CURDIR*);
1823 ULONG WINAPI RtlDosSearchPath_U(LPCWSTR, LPCWSTR, LPCWSTR, ULONG, LPWSTR, LPWSTR*);
1824 WCHAR WINAPI RtlDowncaseUnicodeChar(WCHAR);
1825 NTSTATUS WINAPI RtlDowncaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
1826 void WINAPI RtlDumpResource(LPRTL_RWLOCK);
1827 NTSTATUS WINAPI RtlDuplicateUnicodeString(int,const UNICODE_STRING*,UNICODE_STRING*);
1829 NTSTATUS WINAPI RtlEmptyAtomTable(RTL_ATOM_TABLE,BOOLEAN);
1830 LONGLONG WINAPI RtlEnlargedIntegerMultiply(INT,INT);
1831 ULONGLONG WINAPI RtlEnlargedUnsignedMultiply(UINT,UINT);
1832 UINT WINAPI RtlEnlargedUnsignedDivide(ULONGLONG,UINT,UINT *);
1833 NTSTATUS WINAPI RtlEnterCriticalSection(RTL_CRITICAL_SECTION *);
1834 void WINAPI RtlEraseUnicodeString(UNICODE_STRING*);
1835 NTSTATUS WINAPI RtlEqualComputerName(const UNICODE_STRING*,const UNICODE_STRING*);
1836 NTSTATUS WINAPI RtlEqualDomainName(const UNICODE_STRING*,const UNICODE_STRING*);
1837 BOOLEAN WINAPI RtlEqualLuid(const LUID*,const LUID*);
1838 BOOL WINAPI RtlEqualPrefixSid(PSID,PSID);
1839 BOOL WINAPI RtlEqualSid(PSID,PSID);
1840 BOOLEAN WINAPI RtlEqualString(const STRING*,const STRING*,BOOLEAN);
1841 BOOLEAN WINAPI RtlEqualUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
1842 NTSTATUS WINAPI RtlExpandEnvironmentStrings_U(PWSTR, const UNICODE_STRING*, UNICODE_STRING*, ULONG*);
1843 LONGLONG WINAPI RtlExtendedMagicDivide(LONGLONG,LONGLONG,INT);
1844 LONGLONG WINAPI RtlExtendedIntegerMultiply(LONGLONG,INT);
1845 LONGLONG WINAPI RtlExtendedLargeIntegerDivide(LONGLONG,INT,INT *);
1847 NTSTATUS WINAPI RtlFindCharInUnicodeString(int,const UNICODE_STRING*,const UNICODE_STRING*,USHORT*);
1848 ULONG WINAPI RtlFindClearBits(PCRTL_BITMAP,ULONG,ULONG);
1849 ULONG WINAPI RtlFindClearBitsAndSet(PRTL_BITMAP,ULONG,ULONG);
1850 ULONG WINAPI RtlFindClearRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
1851 ULONG WINAPI RtlFindLastBackwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
1852 ULONG WINAPI RtlFindLastBackwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
1853 CCHAR WINAPI RtlFindLeastSignificantBit(ULONGLONG);
1854 ULONG WINAPI RtlFindLongestRunSet(PCRTL_BITMAP,PULONG);
1855 ULONG WINAPI RtlFindLongestRunClear(PCRTL_BITMAP,PULONG);
1856 NTSTATUS WINAPI RtlFindMessage(HMODULE,ULONG,ULONG,ULONG,const MESSAGE_RESOURCE_ENTRY**);
1857 CCHAR WINAPI RtlFindMostSignificantBit(ULONGLONG);
1858 ULONG WINAPI RtlFindNextForwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
1859 ULONG WINAPI RtlFindNextForwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
1860 ULONG WINAPI RtlFindSetBits(PCRTL_BITMAP,ULONG,ULONG);
1861 ULONG WINAPI RtlFindSetBitsAndClear(PRTL_BITMAP,ULONG,ULONG);
1862 ULONG WINAPI RtlFindSetRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
1863 BOOLEAN WINAPI RtlFirstFreeAce(PACL,PACE_HEADER *);
1864 NTSTATUS WINAPI RtlFormatCurrentUserKeyPath(PUNICODE_STRING);
1865 NTSTATUS WINAPI RtlFormatMessage(LPWSTR,UCHAR,BOOLEAN,BOOLEAN,BOOLEAN,va_list *,LPWSTR,ULONG);
1866 void WINAPI RtlFreeAnsiString(PANSI_STRING);
1867 BOOLEAN WINAPI RtlFreeHandle(RTL_HANDLE_TABLE *,RTL_HANDLE *);
1868 BOOLEAN WINAPI RtlFreeHeap(HANDLE,ULONG,PVOID);
1869 void WINAPI RtlFreeOemString(POEM_STRING);
1870 DWORD WINAPI RtlFreeSid(PSID);
1871 void WINAPI RtlFreeUnicodeString(PUNICODE_STRING);
1873 NTSTATUS WINAPI RtlGetAce(PACL,DWORD,LPVOID *);
1874 NTSTATUS WINAPI RtlGetControlSecurityDescriptor(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL,LPDWORD);
1875 NTSTATUS WINAPI RtlGetCurrentDirectory_U(ULONG, LPWSTR);
1876 NTSTATUS WINAPI RtlGetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
1877 ULONG WINAPI RtlGetFullPathName_U(PCWSTR,ULONG,PWSTR,PWSTR*);
1878 NTSTATUS WINAPI RtlGetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
1879 NTSTATUS WINAPI RtlGetLastNtStatus(void);
1880 DWORD WINAPI RtlGetLastWin32Error(void);
1881 DWORD WINAPI RtlGetLongestNtPathLength(void);
1882 BOOLEAN WINAPI RtlGetNtProductType(LPDWORD);
1883 NTSTATUS WINAPI RtlGetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
1884 ULONG WINAPI RtlGetProcessHeaps(ULONG,HANDLE*);
1885 NTSTATUS WINAPI RtlGetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
1886 NTSTATUS WINAPI RtlGetVersion(RTL_OSVERSIONINFOEXW*);
1888 PSID_IDENTIFIER_AUTHORITY WINAPI RtlIdentifierAuthoritySid(PSID);
1889 PVOID WINAPI RtlImageDirectoryEntryToData(HMODULE,BOOL,WORD,ULONG *);
1890 PIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE);
1891 PIMAGE_SECTION_HEADER WINAPI RtlImageRvaToSection(const IMAGE_NT_HEADERS *,HMODULE,DWORD);
1892 PVOID WINAPI RtlImageRvaToVa(const IMAGE_NT_HEADERS *,HMODULE,DWORD,IMAGE_SECTION_HEADER **);
1893 NTSTATUS WINAPI RtlImpersonateSelf(SECURITY_IMPERSONATION_LEVEL);
1894 void WINAPI RtlInitString(PSTRING,PCSZ);
1895 void WINAPI RtlInitAnsiString(PANSI_STRING,PCSZ);
1896 void WINAPI RtlInitUnicodeString(PUNICODE_STRING,PCWSTR);
1897 NTSTATUS WINAPI RtlInitUnicodeStringEx(PUNICODE_STRING,PCWSTR);
1898 NTSTATUS WINAPI RtlInitializeCriticalSection(RTL_CRITICAL_SECTION *);
1899 NTSTATUS WINAPI RtlInitializeCriticalSectionAndSpinCount(RTL_CRITICAL_SECTION *,DWORD);
1900 void WINAPI RtlInitializeBitMap(PRTL_BITMAP,PULONG,ULONG);
1901 void WINAPI RtlInitializeHandleTable(ULONG,ULONG,RTL_HANDLE_TABLE *);
1902 void WINAPI RtlInitializeResource(LPRTL_RWLOCK);
1903 BOOL WINAPI RtlInitializeSid(PSID,PSID_IDENTIFIER_AUTHORITY,BYTE);
1905 NTSTATUS WINAPI RtlInt64ToUnicodeString(ULONGLONG,ULONG,UNICODE_STRING *);
1906 NTSTATUS WINAPI RtlIntegerToChar(ULONG,ULONG,ULONG,PCHAR);
1907 NTSTATUS WINAPI RtlIntegerToUnicodeString(ULONG,ULONG,UNICODE_STRING *);
1908 ULONG WINAPI RtlIsDosDeviceName_U(PCWSTR);
1909 BOOLEAN WINAPI RtlIsNameLegalDOS8Dot3(const UNICODE_STRING*,POEM_STRING,PBOOLEAN);
1910 BOOLEAN WINAPI RtlIsTextUnicode(LPCVOID,INT,INT *);
1911 BOOLEAN WINAPI RtlIsValidHandle(const RTL_HANDLE_TABLE *, const RTL_HANDLE *);
1912 BOOLEAN WINAPI RtlIsValidIndexHandle(const RTL_HANDLE_TABLE *, ULONG Index, RTL_HANDLE **);
1914 LONGLONG WINAPI RtlLargeIntegerAdd(LONGLONG,LONGLONG);
1915 LONGLONG WINAPI RtlLargeIntegerArithmeticShift(LONGLONG,INT);
1916 ULONGLONG WINAPI RtlLargeIntegerDivide( ULONGLONG,ULONGLONG,ULONGLONG *);
1917 LONGLONG WINAPI RtlLargeIntegerNegate(LONGLONG);
1918 LONGLONG WINAPI RtlLargeIntegerShiftLeft(LONGLONG,INT);
1919 LONGLONG WINAPI RtlLargeIntegerShiftRight(LONGLONG,INT);
1920 LONGLONG WINAPI RtlLargeIntegerSubtract(LONGLONG,LONGLONG);
1921 NTSTATUS WINAPI RtlLargeIntegerToChar(const ULONGLONG *,ULONG,ULONG,PCHAR);
1922 NTSTATUS WINAPI RtlLeaveCriticalSection(RTL_CRITICAL_SECTION *);
1923 DWORD WINAPI RtlLengthRequiredSid(DWORD);
1924 ULONG WINAPI RtlLengthSecurityDescriptor(PSECURITY_DESCRIPTOR);
1925 DWORD WINAPI RtlLengthSid(PSID);
1926 NTSTATUS WINAPI RtlLocalTimeToSystemTime(const LARGE_INTEGER*,PLARGE_INTEGER);
1927 BOOLEAN WINAPI RtlLockHeap(HANDLE);
1928 NTSTATUS WINAPI RtlLookupAtomInAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*);
1930 NTSTATUS WINAPI RtlMakeSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,LPDWORD);
1931 void WINAPI RtlMapGenericMask(PACCESS_MASK,const GENERIC_MAPPING*);
1932 NTSTATUS WINAPI RtlMultiByteToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
1933 NTSTATUS WINAPI RtlMultiByteToUnicodeSize(DWORD*,LPCSTR,UINT);
1935 DWORD WINAPI RtlNewSecurityObject(DWORD,DWORD,DWORD,DWORD,DWORD,DWORD);
1936 PRTL_USER_PROCESS_PARAMETERS WINAPI RtlNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*);
1937 ULONG WINAPI RtlNtStatusToDosError(NTSTATUS);
1938 ULONG WINAPI RtlNtStatusToDosErrorNoTeb(NTSTATUS);
1939 ULONG WINAPI RtlNumberOfSetBits(PCRTL_BITMAP);
1940 ULONG WINAPI RtlNumberOfClearBits(PCRTL_BITMAP);
1942 UINT WINAPI RtlOemStringToUnicodeSize(const STRING*);
1943 NTSTATUS WINAPI RtlOemStringToUnicodeString(UNICODE_STRING*,const STRING*,BOOLEAN);
1944 NTSTATUS WINAPI RtlOemToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
1945 DWORD WINAPI RtlOpenCurrentUser(ACCESS_MASK,PHANDLE);
1947 NTSTATUS WINAPI RtlPinAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
1948 BOOLEAN WINAPI RtlPrefixString(const STRING*,const STRING*,BOOLEAN);
1949 BOOLEAN WINAPI RtlPrefixUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
1951 NTSTATUS WINAPI RtlQueryAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM,ULONG*,ULONG*,WCHAR*,ULONG*);
1952 NTSTATUS WINAPI RtlQueryEnvironmentVariable_U(PWSTR,PUNICODE_STRING,PUNICODE_STRING);
1953 NTSTATUS WINAPI RtlQueryInformationAcl(PACL,LPVOID,DWORD,ACL_INFORMATION_CLASS);
1954 NTSTATUS WINAPI RtlQueryProcessDebugInformation(ULONG,ULONG,PDEBUG_BUFFER);
1955 NTSTATUS WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID);
1956 NTSTATUS WINAPI RtlQueryTimeZoneInformation(LPTIME_ZONE_INFORMATION);
1957 void WINAPI RtlRaiseException(PEXCEPTION_RECORD);
1958 void WINAPI RtlRaiseStatus(NTSTATUS);
1959 ULONG WINAPI RtlRandom(PULONG);
1960 PVOID WINAPI RtlReAllocateHeap(HANDLE,ULONG,PVOID,ULONG);
1961 void WINAPI RtlReleasePebLock(void);
1962 void WINAPI RtlReleaseResource(LPRTL_RWLOCK);
1963 ULONG WINAPI RtlRemoveVectoredExceptionHandler(PVOID);
1964 void WINAPI RtlRestoreLastWin32Error(DWORD);
1966 void WINAPI RtlSecondsSince1970ToTime(DWORD,LARGE_INTEGER *);
1967 void WINAPI RtlSecondsSince1980ToTime(DWORD,LARGE_INTEGER *);
1968 NTSTATUS WINAPI RtlSelfRelativeToAbsoluteSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,
1969 PDWORD,PACL,PDWORD,PACL,PDWORD,PSID,PDWORD,PSID,PDWORD);
1970 void WINAPI RtlSetAllBits(PRTL_BITMAP);
1971 void WINAPI RtlSetBits(PRTL_BITMAP,ULONG,ULONG);
1972 ULONG WINAPI RtlSetCriticalSectionSpinCount(RTL_CRITICAL_SECTION*,ULONG);
1973 NTSTATUS WINAPI RtlSetCurrentDirectory_U(const UNICODE_STRING*);
1974 void WINAPI RtlSetCurrentEnvironment(PWSTR, PWSTR*);
1975 NTSTATUS WINAPI RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
1976 NTSTATUS WINAPI RtlSetEnvironmentVariable(PWSTR*,PUNICODE_STRING,PUNICODE_STRING);
1977 NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
1978 NTSTATUS WINAPI RtlSetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
1979 void WINAPI RtlSetLastWin32Error(DWORD);
1980 void WINAPI RtlSetLastWin32ErrorAndNtStatusFromNtStatus(NTSTATUS);
1981 NTSTATUS WINAPI RtlSetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
1982 NTSTATUS WINAPI RtlSetTimeZoneInformation(const TIME_ZONE_INFORMATION*);
1983 ULONG WINAPI RtlSizeHeap(HANDLE,ULONG,PVOID);
1984 LPDWORD WINAPI RtlSubAuthoritySid(PSID,DWORD);
1985 LPBYTE WINAPI RtlSubAuthorityCountSid(PSID);
1986 NTSTATUS WINAPI RtlSystemTimeToLocalTime(const LARGE_INTEGER*,PLARGE_INTEGER);
1988 void WINAPI RtlTimeToTimeFields(const LARGE_INTEGER*,PTIME_FIELDS);
1989 BOOLEAN WINAPI RtlTimeFieldsToTime(PTIME_FIELDS,PLARGE_INTEGER);
1990 void WINAPI RtlTimeToElapsedTimeFields(const LARGE_INTEGER *,PTIME_FIELDS);
1991 BOOLEAN WINAPI RtlTimeToSecondsSince1970(const LARGE_INTEGER *,LPDWORD);
1992 BOOLEAN WINAPI RtlTimeToSecondsSince1980(const LARGE_INTEGER *,LPDWORD);
1993 BOOL WINAPI RtlTryEnterCriticalSection(RTL_CRITICAL_SECTION *);
1995 ULONGLONG __cdecl RtlUlonglongByteSwap(ULONGLONG);
1996 DWORD WINAPI RtlUnicodeStringToAnsiSize(const UNICODE_STRING*);
1997 NTSTATUS WINAPI RtlUnicodeStringToAnsiString(PANSI_STRING,PCUNICODE_STRING,BOOLEAN);
1998 NTSTATUS WINAPI RtlUnicodeStringToInteger(const UNICODE_STRING *,ULONG,ULONG *);
1999 DWORD WINAPI RtlUnicodeStringToOemSize(const UNICODE_STRING*);
2000 NTSTATUS WINAPI RtlUnicodeStringToOemString(POEM_STRING,PCUNICODE_STRING,BOOLEAN);
2001 NTSTATUS WINAPI RtlUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2002 NTSTATUS WINAPI RtlUnicodeToMultiByteSize(PULONG,PCWSTR,ULONG);
2003 NTSTATUS WINAPI RtlUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2004 ULONG WINAPI RtlUniform(PULONG);
2005 BOOLEAN WINAPI RtlUnlockHeap(HANDLE);
2006 void WINAPI RtlUnwind(PVOID,PVOID,PEXCEPTION_RECORD,PVOID);
2007 #ifdef __ia64__
2008 void WINAPI RtlUnwind2(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT);
2009 void WINAPI RtlUnwindEx(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT,PUNWIND_HISTORY_TABLE);
2010 #endif
2011 WCHAR WINAPI RtlUpcaseUnicodeChar(WCHAR);
2012 NTSTATUS WINAPI RtlUpcaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING *,BOOLEAN);
2013 NTSTATUS WINAPI RtlUpcaseUnicodeStringToAnsiString(STRING*,const UNICODE_STRING*,BOOLEAN);
2014 NTSTATUS WINAPI RtlUpcaseUnicodeStringToCountedOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
2015 NTSTATUS WINAPI RtlUpcaseUnicodeStringToOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
2016 NTSTATUS WINAPI RtlUpcaseUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2017 NTSTATUS WINAPI RtlUpcaseUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
2018 CHAR WINAPI RtlUpperChar(CHAR);
2019 void WINAPI RtlUpperString(STRING *,const STRING *);
2021 NTSTATUS WINAPI RtlValidSecurityDescriptor(PSECURITY_DESCRIPTOR);
2022 BOOLEAN WINAPI RtlValidAcl(PACL);
2023 BOOLEAN WINAPI RtlValidSid(PSID);
2024 BOOLEAN WINAPI RtlValidateHeap(HANDLE,ULONG,LPCVOID);
2025 NTSTATUS WINAPI RtlVerifyVersionInfo(const RTL_OSVERSIONINFOEXW*,DWORD,DWORDLONG);
2027 NTSTATUS WINAPI RtlWalkHeap(HANDLE,PVOID);
2029 NTSTATUS WINAPI RtlpWaitForCriticalSection(RTL_CRITICAL_SECTION *);
2030 NTSTATUS WINAPI RtlpUnWaitCriticalSection(RTL_CRITICAL_SECTION *);
2032 /* Wine internal functions */
2034 extern NTSTATUS wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRING *unix_name_ret,
2035 UINT disposition, BOOLEAN check_case );
2037 /***********************************************************************
2038 * Inline functions
2041 #define InitializeObjectAttributes(p,n,a,r,s) \
2042 do { \
2043 (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
2044 (p)->RootDirectory = r; \
2045 (p)->Attributes = a; \
2046 (p)->ObjectName = n; \
2047 (p)->SecurityDescriptor = s; \
2048 (p)->SecurityQualityOfService = NULL; \
2049 } while (0)
2051 #define NtCurrentProcess() ((HANDLE)-1)
2053 #define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length))
2054 #define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length))
2055 #define RtlStoreUlong(p,v) do { ULONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
2056 #define RtlStoreUlonglong(p,v) do { ULONGLONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
2057 #define RtlRetrieveUlong(p,s) memcpy((p), (s), sizeof(ULONG))
2058 #define RtlRetrieveUlonglong(p,s) memcpy((p), (s), sizeof(ULONGLONG))
2059 #define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))
2061 inline static BOOLEAN RtlCheckBit(PCRTL_BITMAP lpBits, ULONG ulBit)
2063 if (lpBits && ulBit < lpBits->SizeOfBitMap &&
2064 lpBits->Buffer[ulBit >> 5] & (1 << (ulBit & 31)))
2065 return TRUE;
2066 return FALSE;
2069 /* These are implemented as __fastcall, so we can't let Winelib apps link with them */
2070 inline static USHORT RtlUshortByteSwap(USHORT s)
2072 return (s >> 8) | (s << 8);
2074 inline static ULONG RtlUlongByteSwap(ULONG i)
2076 #if defined(__i386__) && defined(__GNUC__)
2077 ULONG ret;
2078 __asm__("bswap %0" : "=r" (ret) : "0" (i) );
2079 return ret;
2080 #else
2081 return ((ULONG)RtlUshortByteSwap((USHORT)i) << 16) | RtlUshortByteSwap((USHORT)(i >> 16));
2082 #endif
2085 /*************************************************************************
2086 * Loader functions and structures.
2088 * Those are not part of standard Winternl.h
2090 typedef struct _LDR_MODULE
2092 LIST_ENTRY InLoadOrderModuleList;
2093 LIST_ENTRY InMemoryOrderModuleList;
2094 LIST_ENTRY InInitializationOrderModuleList;
2095 void* BaseAddress;
2096 void* EntryPoint;
2097 ULONG SizeOfImage;
2098 UNICODE_STRING FullDllName;
2099 UNICODE_STRING BaseDllName;
2100 ULONG Flags;
2101 SHORT LoadCount;
2102 SHORT TlsIndex;
2103 HANDLE SectionHandle;
2104 ULONG CheckSum;
2105 ULONG TimeDateStamp;
2106 } LDR_MODULE, *PLDR_MODULE;
2108 /* those defines are (some of the) regular LDR_MODULE.Flags values */
2109 #define LDR_IMAGE_IS_DLL 0x00000004
2110 #define LDR_LOAD_IN_PROGRESS 0x00001000
2111 #define LDR_UNLOAD_IN_PROGRESS 0x00002000
2112 #define LDR_NO_DLL_CALLS 0x00040000
2113 #define LDR_PROCESS_ATTACHED 0x00080000
2114 #define LDR_MODULE_REBASED 0x00200000
2116 /* these ones is Wine specific */
2117 #define LDR_DONT_RESOLVE_REFS 0x40000000
2118 #define LDR_WINE_INTERNAL 0x80000000
2120 /* FIXME: to be checked */
2121 #define MAXIMUM_FILENAME_LENGTH 256
2123 typedef struct _SYSTEM_MODULE
2125 ULONG Reserved1;
2126 ULONG Reserved2;
2127 PVOID ImageBaseAddress;
2128 ULONG ImageSize;
2129 ULONG Flags;
2130 WORD Id;
2131 WORD Rank;
2132 WORD Unknown;
2133 WORD NameOffset;
2134 BYTE Name[MAXIMUM_FILENAME_LENGTH];
2135 } SYSTEM_MODULE, *PSYSTEM_MODULE;
2137 typedef struct _SYSTEM_MODULE_INFORMATION
2139 ULONG ModulesCount;
2140 SYSTEM_MODULE Modules[1]; /* FIXME: should be Modules[0] */
2141 } SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;
2143 NTSTATUS WINAPI LdrDisableThreadCalloutsForDll(HMODULE);
2144 NTSTATUS WINAPI LdrFindEntryForAddress(const void*, PLDR_MODULE*);
2145 NTSTATUS WINAPI LdrLockLoaderLock(ULONG,ULONG*,ULONG*);
2146 NTSTATUS WINAPI LdrQueryProcessModuleInformation(SYSTEM_MODULE_INFORMATION*, ULONG, ULONG*);
2147 NTSTATUS WINAPI LdrUnloadDll(HMODULE);
2148 NTSTATUS WINAPI LdrUnlockLoaderLock(ULONG,ULONG);
2150 /* list manipulation macros */
2151 #define InitializeListHead(le) (void)((le)->Flink = (le)->Blink = (le))
2152 #define InsertHeadList(le,e) do { PLIST_ENTRY f = (le)->Flink; (e)->Flink = f; (e)->Blink = (le); f->Blink = (e); (le)->Flink = (e); } while (0)
2153 #define InsertTailList(le,e) do { PLIST_ENTRY b = (le)->Blink; (e)->Flink = (le); (e)->Blink = b; b->Flink = (e); (le)->Blink = (e); } while (0)
2154 #define IsListEmpty(le) ((le)->Flink == (le))
2155 #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)
2156 static inline PLIST_ENTRY RemoveHeadList(PLIST_ENTRY le)
2158 PLIST_ENTRY f, b, e;
2160 e = le->Flink;
2161 f = le->Flink->Flink;
2162 b = le->Flink->Blink;
2163 f->Blink = b;
2164 b->Flink = f;
2166 if (e != le) e->Flink = e->Blink = NULL;
2167 return e;
2169 static inline PLIST_ENTRY RemoveTailList(PLIST_ENTRY le)
2171 PLIST_ENTRY f, b, e;
2173 e = le->Blink;
2174 f = le->Blink->Flink;
2175 b = le->Blink->Blink;
2176 f->Blink = b;
2177 b->Flink = f;
2179 if (e != le) e->Flink = e->Blink = NULL;
2180 return e;
2183 #ifdef __cplusplus
2184 } /* extern "C" */
2185 #endif /* defined(__cplusplus) */
2187 #endif /* __WINE_WINTERNL_H */