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_WINTERNAL_H
22 #define __WINE_WINTERNAL_H
30 #endif /* defined(__cplusplus) */
32 /***********************************************************************
43 /***********************************************************************
53 PVOID ReservedForOle; /* Windows 2000 only */
55 PVOID TlsExpansionSlots;
59 /**********************************************************************
60 * Fundamental types and data structures
63 typedef LONG NTSTATUS;
65 typedef CONST char *PCSZ;
68 typedef CSHORT *PCSHORT;
70 typedef struct _STRING {
76 typedef STRING ANSI_STRING;
77 typedef PSTRING PANSI_STRING;
78 typedef const STRING *PCANSI_STRING;
80 typedef STRING OEM_STRING;
81 typedef PSTRING POEM_STRING;
82 typedef const STRING *PCOEM_STRING;
84 typedef struct _UNICODE_STRING {
85 USHORT Length; /* bytes */
86 USHORT MaximumLength; /* bytes */
88 } UNICODE_STRING, *PUNICODE_STRING;
90 typedef const UNICODE_STRING *PCUNICODE_STRING;
92 typedef struct _CLIENT_ID
96 } CLIENT_ID, *PCLIENT_ID;
98 typedef struct _CURDIR
100 UNICODE_STRING DosPath;
104 /***********************************************************************
108 typedef enum _FILE_INFORMATION_CLASS {
109 FileDirectoryInformation = 1,
110 FileFullDirectoryInformation,
111 FileBothDirectoryInformation,
112 FileBasicInformation,
113 FileStandardInformation,
114 FileInternalInformation,
116 FileAccessInformation,
118 FileRenameInformation,
120 FileNamesInformation,
121 FileDispositionInformation,
122 FilePositionInformation,
123 FileFullEaInformation,
125 FileAlignmentInformation,
127 FileAllocationInformation,
128 FileEndOfFileInformation,
129 FileAlternateNameInformation,
130 FileStreamInformation,
132 FilePipeLocalInformation,
133 FilePipeRemoteInformation,
134 FileMailslotQueryInformation,
135 FileMailslotSetInformation,
136 FileCompressionInformation,
137 FileObjectIdInformation,
138 FileCompletionInformation,
139 FileMoveClusterInformation,
140 FileQuotaInformation,
141 FileReparsePointInformation,
142 FileNetworkOpenInformation,
143 FileAttributeTagInformation,
144 FileTrackingInformation,
145 FileMaximumInformation
146 } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
148 typedef struct _FILE_BASIC_INFORMATION {
149 LARGE_INTEGER CreationTime;
150 LARGE_INTEGER LastAccessTime;
151 LARGE_INTEGER LastWriteTime;
152 LARGE_INTEGER ChangeTime;
153 ULONG FileAttributes;
154 } FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
156 typedef struct _FILE_STANDARD_INFORMATION {
157 LARGE_INTEGER AllocationSize;
158 LARGE_INTEGER EndOfFile;
160 BOOLEAN DeletePending;
162 } FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;
164 typedef struct _FILE_POSITION_INFORMATION {
165 LARGE_INTEGER CurrentByteOffset;
166 } FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;
168 typedef struct _FILE_ALIGNMENT_INFORMATION {
169 ULONG AlignmentRequirement;
170 } FILE_ALIGNMENT_INFORMATION, *PFILE_ALIGNMENT_INFORMATION;
172 typedef struct _FILE_NETWORK_OPEN_INFORMATION {
173 LARGE_INTEGER CreationTime;
174 LARGE_INTEGER LastAccessTime;
175 LARGE_INTEGER LastWriteTime;
176 LARGE_INTEGER ChangeTime;
177 LARGE_INTEGER AllocationSize;
178 LARGE_INTEGER EndOfFile;
179 ULONG FileAttributes;
180 } FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;
182 typedef struct _FILE_FULL_EA_INFORMATION {
183 ULONG NextEntryOffset;
186 USHORT EaValueLength;
188 } FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
190 typedef struct _FILE_STREAM_INFORMATION
192 ULONG NextEntryOffset;
193 ULONG StreamNameLength;
194 LARGE_INTEGER StreamSize;
195 LARGE_INTEGER StreamAllocationSize;
197 } FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
199 struct _FILE_ATTRIBUTE_TAG_INFORMATION
201 ULONG FileAttributes;
203 } FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION;
205 typedef enum _FSINFOCLASS {
206 FileFsVolumeInformation = 1,
207 FileFsLabelInformation,
208 FileFsSizeInformation,
209 FileFsDeviceInformation,
210 FileFsAttributeInformation,
211 FileFsControlInformation,
212 FileFsFullSizeInformation,
213 FileFsObjectIdInformation,
214 FileFsMaximumInformation
215 } FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
217 typedef enum _KEY_INFORMATION_CLASS {
221 } KEY_INFORMATION_CLASS;
223 typedef enum _KEY_VALUE_INFORMATION_CLASS {
224 KeyValueBasicInformation,
225 KeyValueFullInformation,
226 KeyValuePartialInformation,
227 KeyValueFullInformationAlign64,
228 KeyValuePartialInformationAlign64
229 } KEY_VALUE_INFORMATION_CLASS;
231 typedef enum _OBJECT_INFORMATION_CLASS {
232 DunnoTheConstants1 /* FIXME */
233 } OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS;
235 typedef enum _PROCESSINFOCLASS {
236 ProcessBasicInformation = 0,
237 ProcessQuotaLimits = 1,
238 ProcessIoCounters = 2,
239 ProcessVmCounters = 3,
241 ProcessBasePriority = 5,
242 ProcessRaisePriority = 6,
243 ProcessDebugPort = 7,
244 ProcessExceptionPort = 8,
245 ProcessAccessToken = 9,
246 ProcessLdtInformation = 10,
248 ProcessDefaultHardErrorMode = 12,
249 ProcessIoPortHandlers = 13,
250 ProcessPooledUsageAndLimits = 14,
251 ProcessWorkingSetWatch = 15,
252 ProcessUserModeIOPL = 16,
253 ProcessEnableAlignmentFaultFixup = 17,
254 ProcessPriorityClass = 18,
255 ProcessWx86Information = 19,
256 ProcessHandleCount = 20,
257 ProcessAffinityMask = 21,
258 ProcessPriorityBoost = 22,
259 ProcessDeviceMap = 23,
260 ProcessSessionInformation = 24,
261 ProcessForegroundInformation = 25,
262 ProcessWow64Information = 26,
266 typedef enum _SECTION_INHERIT {
271 typedef enum SYSTEM_INFORMATION_CLASS {
272 SystemBasicInformation = 0,
274 SystemPerformanceInformation = 2,
275 SystemTimeOfDayInformation = 3, /* was SystemTimeInformation */
277 SystemProcessInformation = 5,
280 SystemProcessorPerformanceInformation = 8,
283 SystemDriverInformation,
293 SystemCacheInformation,
295 SystemInterruptInformation = 23,
296 SystemExceptionInformation = 33,
297 SystemRegistryQuotaInformation = 37,
298 SystemLookasideInformation = 45
299 } SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS;
301 typedef enum _TIMER_TYPE {
306 typedef enum _THREADINFOCLASS {
307 ThreadBasicInformation,
312 ThreadImpersonationToken,
313 ThreadDescriptorTableEntry,
314 ThreadEnableAlignmentFaultFixup,
315 ThreadEventPair_Reusable,
316 ThreadQuerySetWin32StartAddress,
318 ThreadPerformanceCount,
320 ThreadIdealProcessor,
322 ThreadSetTlsArrayAddress,
327 typedef enum _WINSTATIONINFOCLASS {
328 WinStationInformation = 8
329 } WINSTATIONINFOCLASS;
333 MemoryBasicInformation = 0
334 } MEMORY_INFORMATION_CLASS;
336 /* return type of RtlDetermineDosPathNameType_U (FIXME: not the correct names) */
340 UNC_PATH, /* "//foo" */
341 ABSOLUTE_DRIVE_PATH, /* "c:/foo" */
342 RELATIVE_DRIVE_PATH, /* "c:foo" */
343 ABSOLUTE_PATH, /* "/foo" */
344 RELATIVE_PATH, /* "foo" */
345 DEVICE_PATH, /* "//./foo" */
346 UNC_DOT_PATH /* "//." */
349 /***********************************************************************
350 * IA64 specific types and data structures
355 typedef struct _FRAME_POINTERS {
356 ULONGLONG MemoryStackFp;
357 ULONGLONG BackingStoreFp;
358 } FRAME_POINTERS, *PFRAME_POINTERS;
360 #define UNWIND_HISTORY_TABLE_SIZE 12
362 typedef struct _RUNTIME_FUNCTION {
365 ULONG UnwindInfoAddress;
366 } RUNTIME_FUNCTION, *PRUNTIME_FUNCTION;
368 typedef struct _UNWIND_HISTORY_TABLE_ENTRY {
371 PRUNTIME_FUNCTION FunctionEntry;
372 } UNWIND_HISTORY_TABLE_ENTRY, *PUNWIND_HISTORY_TABLE_ENTRY;
374 typedef struct _UNWIND_HISTORY_TABLE {
379 UNWIND_HISTORY_TABLE_ENTRY Entry[UNWIND_HISTORY_TABLE_SIZE];
380 } UNWIND_HISTORY_TABLE, *PUNWIND_HISTORY_TABLE;
382 #endif /* defined(__ia64__) */
384 /***********************************************************************
385 * Types and data structures
388 /* This is used by NtQuerySystemInformation */
389 /* FIXME: Isn't THREAD_INFO and THREADINFO the same structure? */
391 FILETIME ftCreationTime;
393 DWORD dwStartAddress;
396 DWORD dwCurrentPriority;
397 DWORD dwBasePriority;
398 DWORD dwContextSwitches;
402 } THREADINFO, *PTHREADINFO;
404 /* FIXME: Isn't THREAD_INFO and THREADINFO the same structure? */
405 typedef struct _THREAD_INFO{
412 } THREAD_INFO, PTHREAD_INFO;
414 /***********************************************************************
415 * Types and data structures
418 typedef struct _IO_STATUS_BLOCK {
424 ULONG_PTR Information;
425 } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
427 typedef void (WINAPI * PIO_APC_ROUTINE)(PVOID,PIO_STATUS_BLOCK,ULONG);
429 typedef struct _KEY_BASIC_INFORMATION {
430 LARGE_INTEGER LastWriteTime;
434 } KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
436 typedef struct _KEY_NODE_INFORMATION
438 LARGE_INTEGER LastWriteTime;
445 } KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
447 typedef struct _KEY_FULL_INFORMATION
449 LARGE_INTEGER LastWriteTime;
457 ULONG MaxValueNameLen;
458 ULONG MaxValueDataLen;
460 } KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
462 typedef struct _KEY_VALUE_ENTRY
464 PUNICODE_STRING ValueName;
468 } KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
470 typedef struct _KEY_VALUE_BASIC_INFORMATION {
475 } KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
477 typedef struct _KEY_VALUE_FULL_INFORMATION {
484 } KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
486 typedef struct _KEY_VALUE_PARTIAL_INFORMATION {
491 } KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
493 typedef struct _OBJECT_ATTRIBUTES {
495 HANDLE RootDirectory;
496 PUNICODE_STRING ObjectName;
498 PVOID SecurityDescriptor; /* type SECURITY_DESCRIPTOR */
499 PVOID SecurityQualityOfService; /* type SECURITY_QUALITY_OF_SERVICE */
500 } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
502 typedef struct _PROCESS_BASIC_INFORMATION {
505 DWORD PebBaseAddress;
508 ULONG UniqueProcessId;
509 ULONG InheritedFromUniqueProcessId;
514 ULONG_PTR UniqueProcessId;
517 } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
519 typedef struct _PROCESS_INFO {
520 DWORD Offset; /* 00 offset to next PROCESS_INFO ok*/
521 DWORD ThreadCount; /* 04 number of ThreadInfo member ok */
523 FILETIME CreationTime; /* 20 */
525 PWCHAR ProcessName; /* 3c ok */
527 DWORD ProcessID; /* 44 ok*/
528 DWORD ParentProcessID;
530 DWORD Unknown3[2]; /* 50 */
531 ULONG PeakVirtualSize;
533 ULONG PageFaultCount;
534 ULONG PeakWorkingSetSize;
535 ULONG WorkingSetSize;
536 ULONG QuotaPeakPagedPoolUsage;
537 ULONG QuotaPagedPoolUsage;
538 ULONG QuotaPeakNonPagedPoolUsage;
539 ULONG QuotaNonPagedPoolUsage;
541 ULONG PeakPagefileUsage;
544 THREAD_INFO ati[ANYSIZE_ARRAY]; /* 94 size=0x40*/
545 } PROCESS_INFO, PPROCESS_INFO;
547 typedef struct _RTL_HEAP_DEFINITION {
548 ULONG Length; /* = sizeof(RTL_HEAP_DEFINITION) */
551 } RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION;
553 typedef struct tagRTL_BITMAP {
554 ULONG SizeOfBitMap; /* Number of bits in the bitmap */
555 LPBYTE BitMapBuffer; /* Bitmap data, assumed sized to a DWORD boundary */
556 } RTL_BITMAP, *PRTL_BITMAP;
558 typedef const RTL_BITMAP *PCRTL_BITMAP;
560 typedef struct tagRTL_BITMAP_RUN {
561 ULONG StartOfRun; /* Bit position at which run starts - FIXME: Name? */
562 ULONG SizeOfRun; /* Size of the run in bits - FIXME: Name? */
563 } RTL_BITMAP_RUN, *PRTL_BITMAP_RUN;
565 typedef const RTL_BITMAP_RUN *PCRTL_BITMAP_RUN;
567 typedef struct _RTL_RWLOCK {
568 RTL_CRITICAL_SECTION rtlCS;
570 HANDLE hSharedReleaseSemaphore;
573 HANDLE hExclusiveReleaseSemaphore;
574 UINT uExclusiveWaiters;
577 HANDLE hOwningThreadId;
578 DWORD dwTimeoutBoost;
580 } RTL_RWLOCK, *LPRTL_RWLOCK;
582 /* System Information Class 0x00 */
583 typedef struct _SYSTEM_BASIC_INFORMATION {
586 ULONG uKeMaximumIncrement;
588 ULONG uMmNumberOfPhysicalPages;
589 ULONG uMmLowestPhysicalPage;
590 ULONG uMmHighestPhysicalPage;
591 ULONG uAllocationGranularity;
592 PVOID pLowestUserAddress;
593 PVOID pMmHighestUserAddress;
594 ULONG uKeActiveProcessors;
595 BYTE bKeNumberProcessors;
601 CCHAR NumberOfProcessors;
603 } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
605 /* System Information Class 0x15 */
609 ULONG PageFaultCount;
610 ULONG MinimumWorkingSet;
611 ULONG MaximumWorkingSet;
613 } SYSTEM_CACHE_INFORMATION;
615 typedef struct _SYSTEM_CONFIGURATION_INFO {
619 WORD ProcessorArchitecture;
624 PVOID MinimumApplicationAddress;
625 PVOID MaximumApplicationAddress;
626 ULONG ActiveProcessorMask;
627 ULONG NumberOfProcessors;
629 ULONG AllocationGranularity;
631 WORD ProcessorRevision;
632 } SYSTEM_CONFIGURATION_INFO, *PSYSTEM_CONFIGURATION_INFO;
634 /* System Information Class 0x0b */
641 char szName[MAX_PATH + 1];
642 } SYSTEM_DRIVER_INFORMATION;
644 typedef struct _SYSTEM_EXCEPTION_INFORMATION {
646 } SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION;
648 typedef struct _SYSTEM_LOOKASIDE_INFORMATION {
650 } SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION;
652 typedef struct _SYSTEM_INTERRUPT_INFORMATION {
654 } SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION;
656 /* System Information Class 0x10 */
659 USHORT dwCreatorBackTraceIndex;
661 BYTE bHandleAttributes;
662 USHORT usHandleOffset;
664 ULONG ulGrantedAccess;
665 } HANDLEINFO, *PHANDLEINFO; /* FIXME: SYSTEM_HANDLE_INFORMATION? */
667 typedef struct _SYSTEM_PERFORMANCE_INFORMATION {
669 } SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
671 /* System Information Class 0x02 */
672 typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION {
674 LARGE_INTEGER liIdleTime;
677 LARGE_INTEGER IdleTime;
678 LARGE_INTEGER KernelTime;
679 LARGE_INTEGER UserTime;
680 LARGE_INTEGER Reserved1[2];
683 } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
685 /* System Information Class 0x05 */
686 typedef struct _SYSTEM_PROCESS_INFORMATION {
691 FILETIME ftCreationTime;
693 WCHAR *pszProcessName;
694 DWORD dwBasePriority;
696 DWORD dwParentProcessID;
700 DWORD dwVirtualBytesPeak;
701 DWORD dwVirtualBytes;
703 DWORD dwWorkingSetPeak;
708 DWORD dwNonPagedPool;
709 DWORD dwPageFileBytesPeak;
710 DWORD dwPrivateBytes;
711 DWORD dwPageFileBytes;
715 ULONG NextEntryOffset;
718 HANDLE UniqueProcessId;
723 SIZE_T PeakPagefileUsage;
724 SIZE_T PrivatePageCount;
725 LARGE_INTEGER Reserved6[6];
727 } SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
729 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION {
730 ULONG RegistryQuotaAllowed;
731 ULONG RegistryQuotaUsed;
733 } SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION;
735 typedef struct _SYSTEM_TIME_ADJUSTMENT {
736 ULONG TimeAdjustment;
737 BOOLEAN TimeAdjustmentDisabled;
738 } SYSTEM_TIME_ADJUSTMENT, *PSYSTEM_TIME_ADJUSTMENT;
740 /* System Information Class 0x03 */
741 typedef struct _SYSTEM_TIMEOFDAY_INFORMATION {
743 LARGE_INTEGER liKeBootTime;
744 LARGE_INTEGER liKeSystemTime;
745 LARGE_INTEGER liExpTimeZoneBias;
746 ULONG uCurrentTimeZoneId;
751 } SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION; /* was SYSTEM_TIME_INFORMATION */
753 typedef struct _TIME_FIELDS
762 } TIME_FIELDS, *PTIME_FIELDS;
764 typedef struct _WINSTATIONINFORMATIONW {
767 BYTE Reserved3[1140];
768 } WINSTATIONINFORMATIONW, *PWINSTATIONINFORMATIONW;
770 typedef struct _VM_COUNTERS_ {
771 ULONG PeakVirtualSize;
773 ULONG PageFaultCount;
774 ULONG PeakWorkingSetSize;
775 ULONG WorkingSetSize;
776 ULONG QuotaPeakPagedPoolUsage;
777 ULONG QuotaPagedPoolUsage;
778 ULONG QuotaPeakNonPagedPoolUsage;
779 ULONG QuotaNonPagedPoolUsage;
781 ULONG PeakPagefileUsage;
782 } VM_COUNTERS, *PVM_COUNTERS;
784 typedef BOOLEAN (WINAPI * PWINSTATIONQUERYINFORMATIONW)(HANDLE,ULONG,WINSTATIONINFOCLASS,PVOID,ULONG,PULONG);
786 typedef struct _LDR_RESOURCE_INFO
791 } LDR_RESOURCE_INFO, *PLDR_RESOURCE_INFO;
793 /***********************************************************************
797 /* flags for NtCreateFile and NtOpenFile */
798 #define FILE_DIRECTORY_FLAG 0x00000001
799 #define FILE_WRITE_THROUGH 0x00000002
800 #define FILE_SEQUENTIAL_ONLY 0x00000004
801 #define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
802 #define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
803 #define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
804 #define FILE_NON_DIRECTORY_FILE 0x00000040
805 #define FILE_CREATE_TREE_CONNECTION 0x00000080
807 /* status for NtCreateFile or NtOpenFile */
808 #define FILE_SUPERSEDED 0x00000000
809 #define FILE_OPENED 0x00000001
810 #define FILE_CREATED 0x00000002
811 #define FILE_OVERWRITTEN 0x00000003
812 #define FILE_EXISTS 0x00000004
813 #define FILE_DOES_NOT_EXIST 0x00000005
815 #if (_WIN32_WINNT >= 0x0501)
816 #define INTERNAL_TS_ACTIVE_CONSOLE_ID ( *((volatile ULONG*)(0x7ffe02d8)) )
817 #endif /* (_WIN32_WINNT >= 0x0501) */
819 #define LOGONID_CURRENT ((ULONG)-1)
821 #define OBJ_INHERIT 0x00000002L
822 #define OBJ_PERMANENT 0x00000010L
823 #define OBJ_EXCLUSIVE 0x00000020L
824 #define OBJ_CASE_INSENSITIVE 0x00000040L
825 #define OBJ_OPENIF 0x00000080L
826 #define OBJ_OPENLINK 0x00000100L
827 #define OBJ_KERNEL_HANDLE 0x00000200L
828 #define OBJ_VALID_ATTRIBUTES 0x000003F2L
830 #define SERVERNAME_CURRENT ((HANDLE)NULL)
832 typedef void (CALLBACK *PNTAPCFUNC)(ULONG_PTR,ULONG_PTR,ULONG_PTR); /* FIXME: not the right name */
834 /***********************************************************************
835 * Function declarations
838 extern LPSTR _strlwr(LPSTR str); /* FIXME: Doesn't belong here */
839 extern LPSTR _strupr(LPSTR str); /* FIXME: Doesn't belong here */
841 #if defined(__i386__) && defined(__GNUC__)
842 static inline void WINAPI DbgBreakPoint(void) { __asm__ __volatile__("int3"); }
843 static inline void WINAPI DbgUserBreakPoint(void) { __asm__ __volatile__("int3"); }
844 #else /* __i386__ && __GNUC__ */
845 void WINAPI DbgBreakPoint(void);
846 void WINAPI DbgUserBreakPoint(void);
847 #endif /* __i386__ && __GNUC__ */
848 void WINAPIV DbgPrint(LPCSTR fmt, ...);
850 NTSTATUS WINAPI LdrAccessResource(HMODULE,const IMAGE_RESOURCE_DATA_ENTRY*,void**,PULONG);
851 NTSTATUS WINAPI LdrFindResourceDirectory_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DIRECTORY**);
852 NTSTATUS WINAPI LdrFindResource_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DATA_ENTRY**);
853 void WINAPI LdrShutdownProcess(void);
854 void WINAPI LdrShutdownThread(void);
855 NTSTATUS WINAPI NtAccessCheck(PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,PGENERIC_MAPPING,PPRIVILEGE_SET,PULONG,PULONG,PBOOLEAN);
856 NTSTATUS WINAPI NtAdjustPrivilegesToken(HANDLE,BOOLEAN,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD);
857 NTSTATUS WINAPI NtAllocateVirtualMemory(HANDLE,PVOID*,PVOID,ULONG*,ULONG,ULONG);
858 NTSTATUS WINAPI NtCancelTimer(HANDLE, BOOLEAN*);
859 NTSTATUS WINAPI NtClearEvent(HANDLE);
860 NTSTATUS WINAPI NtClose(HANDLE);
861 NTSTATUS WINAPI NtCreateEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *,BOOLEAN,BOOLEAN);
862 NTSTATUS WINAPI NtCreateFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,PLARGE_INTEGER,ULONG,ULONG,ULONG,ULONG,PVOID,ULONG);
863 NTSTATUS WINAPI NtCreateKey(PHKEY,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
864 NTSTATUS WINAPI NtCreateSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const LARGE_INTEGER*,ULONG,ULONG,HANDLE);
865 NTSTATUS WINAPI NtCreateSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,ULONG);
866 NTSTATUS WINAPI NtCreateTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*, TIMER_TYPE);
867 NTSTATUS WINAPI NtDeleteKey(HKEY);
868 NTSTATUS WINAPI NtDeleteValueKey(HKEY,const UNICODE_STRING *);
869 NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
870 NTSTATUS WINAPI NtDuplicateObject(HANDLE,HANDLE,HANDLE,PHANDLE,ACCESS_MASK,ULONG,ULONG);
871 NTSTATUS WINAPI NtEnumerateKey(HKEY,ULONG,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
872 NTSTATUS WINAPI NtEnumerateValueKey(HKEY,ULONG,KEY_VALUE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
873 NTSTATUS WINAPI NtFlushBuffersFile(HANDLE,IO_STATUS_BLOCK*);
874 NTSTATUS WINAPI NtFlushKey(HKEY);
875 NTSTATUS WINAPI NtFlushVirtualMemory(HANDLE,LPCVOID*,ULONG*,ULONG);
876 NTSTATUS WINAPI NtFreeVirtualMemory(HANDLE,PVOID*,ULONG*,ULONG);
877 NTSTATUS WINAPI NtGetContextThread(HANDLE,CONTEXT*);
878 NTSTATUS WINAPI NtLoadKey(const OBJECT_ATTRIBUTES *,const OBJECT_ATTRIBUTES *);
879 NTSTATUS WINAPI NtLockVirtualMemory(HANDLE,PVOID*,ULONG*,ULONG);
880 NTSTATUS WINAPI NtMapViewOfSection(HANDLE,HANDLE,PVOID*,ULONG,ULONG,const LARGE_INTEGER*,ULONG*,SECTION_INHERIT,ULONG,ULONG);
881 NTSTATUS WINAPI NtNotifyChangeKey(HKEY,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN);
882 NTSTATUS WINAPI NtOpenEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
883 NTSTATUS WINAPI NtOpenFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG);
884 NTSTATUS WINAPI NtOpenKey(PHKEY,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
885 NTSTATUS WINAPI NtOpenProcessToken(HANDLE,DWORD,HANDLE *);
886 NTSTATUS WINAPI NtOpenSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
887 NTSTATUS WINAPI NtOpenThread(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*);
888 NTSTATUS WINAPI NtOpenThreadToken(HANDLE,DWORD,BOOLEAN,HANDLE *);
889 NTSTATUS WINAPI NtOpenTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*);
890 NTSTATUS WINAPI NtProtectVirtualMemory(HANDLE,PVOID*,ULONG*,ULONG,ULONG*);
891 NTSTATUS WINAPI NtPulseEvent(HANDLE,PULONG);
892 NTSTATUS WINAPI NtQueueApcThread(HANDLE,PNTAPCFUNC,ULONG_PTR,ULONG_PTR,ULONG_PTR);
893 NTSTATUS WINAPI NtQueryDefaultLocale(BOOLEAN,LCID*);
894 NTSTATUS WINAPI NtQueryInformationProcess(HANDLE,PROCESSINFOCLASS,PVOID,ULONG,PULONG);
895 NTSTATUS WINAPI NtQueryInformationThread(HANDLE,THREADINFOCLASS,PVOID,ULONG,PULONG);
896 NTSTATUS WINAPI NtQueryInformationToken(HANDLE,DWORD,LPVOID,DWORD,LPDWORD);
897 NTSTATUS WINAPI NtQueryKey(HKEY,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
898 NTSTATUS WINAPI NtQueryMultipleValueKey(HKEY,PVALENTW,ULONG,PVOID,ULONG,PULONG);
899 NTSTATUS WINAPI NtQuerySecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,ULONG,PULONG);
900 NTSTATUS WINAPI NtQuerySystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG,PULONG);
901 NTSTATUS WINAPI NtQuerySystemTime(PLARGE_INTEGER);
902 NTSTATUS WINAPI NtQueryValueKey(HKEY,const UNICODE_STRING *,KEY_VALUE_INFORMATION_CLASS,void *,DWORD,DWORD *);
903 NTSTATUS WINAPI NtQueryVirtualMemory(HANDLE,LPCVOID,MEMORY_INFORMATION_CLASS,PVOID,ULONG,ULONG*);
904 void WINAPI NtRaiseException(PEXCEPTION_RECORD,PCONTEXT,BOOL);
905 NTSTATUS WINAPI NtReadFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,PLARGE_INTEGER,PULONG);
906 NTSTATUS WINAPI NtReleaseSemaphore(HANDLE,ULONG,PULONG);
907 NTSTATUS WINAPI NtReplaceKey(POBJECT_ATTRIBUTES,HKEY,POBJECT_ATTRIBUTES);
908 NTSTATUS WINAPI NtResetEvent(HANDLE,PULONG);
909 NTSTATUS WINAPI NtRestoreKey(HKEY,HANDLE,ULONG);
910 NTSTATUS WINAPI NtResumeThread(HANDLE,PULONG);
911 NTSTATUS WINAPI NtSaveKey(HKEY,HANDLE);
912 NTSTATUS WINAPI NtSetContextThread(HANDLE,const CONTEXT*);
913 NTSTATUS WINAPI NtSetDefaultLocale(BOOLEAN,LCID);
914 NTSTATUS WINAPI NtSetEvent(HANDLE,PULONG);
915 NTSTATUS WINAPI NtSetInformationKey(HKEY,const int,PVOID,ULONG);
916 NTSTATUS WINAPI NtSetSecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
917 NTSTATUS WINAPI NtSetSystemTime(const LARGE_INTEGER*,LARGE_INTEGER*);
918 NTSTATUS WINAPI NtSetTimer(HANDLE, const LARGE_INTEGER*, PTIMERAPCROUTINE, PVOID, BOOLEAN, ULONG, BOOLEAN*);
919 NTSTATUS WINAPI NtSetValueKey(HKEY,const UNICODE_STRING *,ULONG,ULONG,const void *,ULONG);
920 NTSTATUS WINAPI NtSuspendThread(HANDLE,PULONG);
921 NTSTATUS WINAPI NtTerminateProcess(HANDLE,LONG);
922 NTSTATUS WINAPI NtTerminateThread(HANDLE,LONG);
923 NTSTATUS WINAPI NtUnloadKey(HKEY);
924 NTSTATUS WINAPI NtUnlockVirtualMemory(HANDLE,PVOID*,ULONG*,ULONG);
925 NTSTATUS WINAPI NtUnmapViewOfSection(HANDLE,PVOID);
926 NTSTATUS WINAPI NtWaitForSingleObject(HANDLE,BOOLEAN,PLARGE_INTEGER);
927 NTSTATUS WINAPI NtWaitForMultipleObjects(ULONG,const HANDLE*,BOOLEAN,BOOLEAN,PLARGE_INTEGER);
929 void WINAPI RtlAcquirePebLock(void);
930 BYTE WINAPI RtlAcquireResourceExclusive(LPRTL_RWLOCK,BYTE);
931 BYTE WINAPI RtlAcquireResourceShared(LPRTL_RWLOCK,BYTE);
932 NTSTATUS WINAPI RtlAddAce(PACL,DWORD,DWORD,PACE_HEADER,DWORD);
933 NTSTATUS WINAPI RtlAddAccessAllowedAce(PACL,DWORD,DWORD,PSID);
934 BOOL WINAPI RtlAddAccessAllowedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
935 NTSTATUS WINAPI RtlAddAccessDeniedAce(PACL,DWORD,DWORD,PSID);
936 DWORD WINAPI RtlAdjustPrivilege(DWORD,DWORD,DWORD,DWORD);
937 BOOLEAN WINAPI RtlAllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PSID *);
938 PVOID WINAPI RtlAllocateHeap(HANDLE,ULONG,ULONG);
939 DWORD WINAPI RtlAnsiStringToUnicodeSize(const STRING *);
940 NTSTATUS WINAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING,PCANSI_STRING,BOOLEAN);
941 NTSTATUS WINAPI RtlAppendAsciizToString(STRING *,LPCSTR);
942 NTSTATUS WINAPI RtlAppendStringToString(STRING *,const STRING *);
943 NTSTATUS WINAPI RtlAppendUnicodeStringToString(UNICODE_STRING *,const UNICODE_STRING *);
944 NTSTATUS WINAPI RtlAppendUnicodeToString(UNICODE_STRING *,LPCWSTR);
945 BOOLEAN WINAPI RtlAreAllAccessesGranted(ACCESS_MASK,ACCESS_MASK);
946 BOOLEAN WINAPI RtlAreAnyAccessesGranted(ACCESS_MASK,ACCESS_MASK);
947 BOOLEAN WINAPI RtlAreBitsSet(PCRTL_BITMAP,ULONG,ULONG);
948 BOOLEAN WINAPI RtlAreBitsClear(PCRTL_BITMAP,ULONG,ULONG);
950 NTSTATUS WINAPI RtlCharToInteger(PCSZ,ULONG,PULONG);
951 void WINAPI RtlClearAllBits(PRTL_BITMAP);
952 void WINAPI RtlClearBits(PRTL_BITMAP,ULONG,ULONG);
953 ULONG WINAPI RtlCompactHeap(HANDLE,ULONG);
954 LONG WINAPI RtlCompareString(const STRING*,const STRING*,BOOLEAN);
955 LONG WINAPI RtlCompareUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
956 DWORD WINAPI RtlComputeCrc32(DWORD,PBYTE,INT);
957 NTSTATUS WINAPI RtlConvertSidToUnicodeString(PUNICODE_STRING,PSID,BOOLEAN);
958 LONGLONG WINAPI RtlConvertLongToLargeInteger(LONG);
959 ULONGLONG WINAPI RtlConvertUlongToLargeInteger(ULONG);
960 void WINAPI RtlCopyLuid(PLUID,const LUID*);
961 void WINAPI RtlCopyLuidAndAttributesArray(ULONG,const LUID_AND_ATTRIBUTES*,PLUID_AND_ATTRIBUTES);
962 DWORD WINAPI RtlCopySid(DWORD,PSID,PSID);
963 void WINAPI RtlCopyString(STRING*,const STRING*);
964 void WINAPI RtlCopyUnicodeString(UNICODE_STRING*,const UNICODE_STRING*);
965 NTSTATUS WINAPI RtlCreateAcl(PACL,DWORD,DWORD);
966 NTSTATUS WINAPI RtlCreateEnvironment(BOOLEAN, PWSTR*);
967 HANDLE WINAPI RtlCreateHeap(ULONG,PVOID,ULONG,ULONG,PVOID,PRTL_HEAP_DEFINITION);
968 NTSTATUS WINAPI RtlCreateSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD);
969 BOOLEAN WINAPI RtlCreateUnicodeString(PUNICODE_STRING,LPCWSTR);
970 BOOLEAN WINAPI RtlCreateUnicodeStringFromAsciiz(PUNICODE_STRING,LPCSTR);
972 NTSTATUS WINAPI RtlDeleteCriticalSection(RTL_CRITICAL_SECTION *);
973 void WINAPI RtlDeleteResource(LPRTL_RWLOCK);
974 DWORD WINAPI RtlDeleteSecurityObject(DWORD);
975 NTSTATUS WINAPI RtlDestroyEnvironment(PWSTR);
976 HANDLE WINAPI RtlDestroyHeap(HANDLE);
977 DOS_PATHNAME_TYPE WINAPI RtlDetermineDosPathNameType_U(PCWSTR);
978 BOOLEAN WINAPI RtlDosPathNameToNtPathName_U(LPWSTR,PUNICODE_STRING,PWSTR*,CURDIR*);
979 WCHAR WINAPI RtlDowncaseUnicodeChar(WCHAR);
980 NTSTATUS WINAPI RtlDowncaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
981 void WINAPI RtlDumpResource(LPRTL_RWLOCK);
982 NTSTATUS WINAPI RtlDuplicateUnicodeString(int,const UNICODE_STRING*,UNICODE_STRING*);
984 LONGLONG WINAPI RtlEnlargedIntegerMultiply(INT,INT);
985 ULONGLONG WINAPI RtlEnlargedUnsignedMultiply(UINT,UINT);
986 UINT WINAPI RtlEnlargedUnsignedDivide(ULONGLONG,UINT,UINT *);
987 NTSTATUS WINAPI RtlEnterCriticalSection(RTL_CRITICAL_SECTION *);
988 void WINAPI RtlEraseUnicodeString(UNICODE_STRING*);
989 NTSTATUS WINAPI RtlEqualComputerName(const UNICODE_STRING*,const UNICODE_STRING*);
990 NTSTATUS WINAPI RtlEqualDomainName(const UNICODE_STRING*,const UNICODE_STRING*);
991 BOOLEAN WINAPI RtlEqualLuid(const LUID*,const LUID*);
992 BOOL WINAPI RtlEqualPrefixSid(PSID,PSID);
993 BOOL WINAPI RtlEqualSid(PSID,PSID);
994 BOOLEAN WINAPI RtlEqualString(const STRING*,const STRING*,BOOLEAN);
995 BOOLEAN WINAPI RtlEqualUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
996 NTSTATUS WINAPI RtlExpandEnvironmentStrings_U(PWSTR, const UNICODE_STRING*, UNICODE_STRING*, ULONG*);
997 LONGLONG WINAPI RtlExtendedMagicDivide(LONGLONG,LONGLONG,INT);
998 LONGLONG WINAPI RtlExtendedIntegerMultiply(LONGLONG,INT);
999 LONGLONG WINAPI RtlExtendedLargeIntegerDivide(LONGLONG,INT,INT *);
1001 NTSTATUS WINAPI RtlFindCharInUnicodeString(int,const UNICODE_STRING*,const UNICODE_STRING*,USHORT*);
1002 ULONG WINAPI RtlFindClearBits(PCRTL_BITMAP,ULONG,ULONG);
1003 ULONG WINAPI RtlFindClearBitsAndSet(PRTL_BITMAP,ULONG,ULONG);
1004 ULONG WINAPI RtlFindClearRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
1005 ULONG WINAPI RtlFindLastBackwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
1006 ULONG WINAPI RtlFindLastBackwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
1007 CCHAR WINAPI RtlFindLeastSignificantBit(ULONGLONG);
1008 ULONG WINAPI RtlFindLongestRunSet(PCRTL_BITMAP,PULONG);
1009 ULONG WINAPI RtlFindLongestRunClear(PCRTL_BITMAP,PULONG);
1010 NTSTATUS WINAPI RtlFindMessage(HMODULE,ULONG,ULONG,ULONG,const MESSAGE_RESOURCE_ENTRY**);
1011 CCHAR WINAPI RtlFindMostSignificantBit(ULONGLONG);
1012 ULONG WINAPI RtlFindNextForwardRunSet(PCRTL_BITMAP,ULONG,PULONG);
1013 ULONG WINAPI RtlFindNextForwardRunClear(PCRTL_BITMAP,ULONG,PULONG);
1014 ULONG WINAPI RtlFindSetBits(PCRTL_BITMAP,ULONG,ULONG);
1015 ULONG WINAPI RtlFindSetBitsAndClear(PRTL_BITMAP,ULONG,ULONG);
1016 ULONG WINAPI RtlFindSetRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
1017 BOOLEAN WINAPI RtlFirstFreeAce(PACL,PACE_HEADER *);
1018 NTSTATUS WINAPI RtlFormatCurrentUserKeyPath(PUNICODE_STRING);
1019 void WINAPI RtlFreeAnsiString(PANSI_STRING);
1020 BOOLEAN WINAPI RtlFreeHeap(HANDLE,ULONG,PVOID);
1021 void WINAPI RtlFreeOemString(POEM_STRING);
1022 DWORD WINAPI RtlFreeSid(PSID);
1023 void WINAPI RtlFreeUnicodeString(PUNICODE_STRING);
1025 DWORD WINAPI RtlGetAce(PACL,DWORD,LPVOID *);
1026 NTSTATUS WINAPI RtlGetControlSecurityDescriptor(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL,LPDWORD);
1027 NTSTATUS WINAPI RtlGetCurrentDirectory_U(ULONG, LPWSTR);
1028 NTSTATUS WINAPI RtlGetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
1029 ULONG WINAPI RtlGetFullPathName_U(PCWSTR,ULONG,PWSTR,PWSTR*);
1030 NTSTATUS WINAPI RtlGetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
1031 DWORD WINAPI RtlGetLongestNtPathLength(void);
1032 BOOLEAN WINAPI RtlGetNtProductType(LPDWORD);
1033 NTSTATUS WINAPI RtlGetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN);
1034 ULONG WINAPI RtlGetProcessHeaps(ULONG,HANDLE*);
1035 NTSTATUS WINAPI RtlGetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN);
1037 PSID_IDENTIFIER_AUTHORITY WINAPI RtlIdentifierAuthoritySid(PSID);
1038 PVOID WINAPI RtlImageDirectoryEntryToData(HMODULE,BOOL,WORD,ULONG *);
1039 PIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE);
1040 PIMAGE_SECTION_HEADER WINAPI RtlImageRvaToSection(const IMAGE_NT_HEADERS *,HMODULE,DWORD);
1041 PVOID WINAPI RtlImageRvaToVa(const IMAGE_NT_HEADERS *,HMODULE,DWORD,IMAGE_SECTION_HEADER **);
1042 BOOL WINAPI RtlImpersonateSelf(SECURITY_IMPERSONATION_LEVEL);
1043 void WINAPI RtlInitString(PSTRING,PCSZ);
1044 void WINAPI RtlInitAnsiString(PANSI_STRING,PCSZ);
1045 void WINAPI RtlInitUnicodeString(PUNICODE_STRING,PCWSTR);
1046 NTSTATUS WINAPI RtlInitUnicodeStringEx(PUNICODE_STRING,PCWSTR);
1047 NTSTATUS WINAPI RtlInitializeCriticalSection(RTL_CRITICAL_SECTION *);
1048 NTSTATUS WINAPI RtlInitializeCriticalSectionAndSpinCount(RTL_CRITICAL_SECTION *,DWORD);
1049 void WINAPI RtlInitializeBitMap(PRTL_BITMAP,LPBYTE,ULONG);
1050 void WINAPI RtlInitializeResource(LPRTL_RWLOCK);
1051 BOOL WINAPI RtlInitializeSid(PSID,PSID_IDENTIFIER_AUTHORITY,BYTE);
1053 NTSTATUS WINAPI RtlInt64ToUnicodeString(ULONGLONG,ULONG,UNICODE_STRING *);
1054 NTSTATUS WINAPI RtlIntegerToChar(ULONG,ULONG,ULONG,PCHAR);
1055 NTSTATUS WINAPI RtlIntegerToUnicodeString(ULONG,ULONG,UNICODE_STRING *);
1056 ULONG WINAPI RtlIsDosDeviceName_U(PCWSTR);
1057 BOOLEAN WINAPI RtlIsNameLegalDOS8Dot3(const UNICODE_STRING*,POEM_STRING,PBOOLEAN);
1058 DWORD WINAPI RtlIsTextUnicode(LPVOID,DWORD,DWORD *);
1060 LONGLONG WINAPI RtlLargeIntegerAdd(LONGLONG,LONGLONG);
1061 LONGLONG WINAPI RtlLargeIntegerArithmeticShift(LONGLONG,INT);
1062 ULONGLONG WINAPI RtlLargeIntegerDivide( ULONGLONG,ULONGLONG,ULONGLONG *);
1063 LONGLONG WINAPI RtlLargeIntegerNegate(LONGLONG);
1064 LONGLONG WINAPI RtlLargeIntegerShiftLeft(LONGLONG,INT);
1065 LONGLONG WINAPI RtlLargeIntegerShiftRight(LONGLONG,INT);
1066 LONGLONG WINAPI RtlLargeIntegerSubtract(LONGLONG,LONGLONG);
1067 NTSTATUS WINAPI RtlLargeIntegerToChar(const ULONGLONG *,ULONG,ULONG,PCHAR);
1068 NTSTATUS WINAPI RtlLeaveCriticalSection(RTL_CRITICAL_SECTION *);
1069 DWORD WINAPI RtlLengthRequiredSid(DWORD);
1070 ULONG WINAPI RtlLengthSecurityDescriptor(PSECURITY_DESCRIPTOR);
1071 DWORD WINAPI RtlLengthSid(PSID);
1072 NTSTATUS WINAPI RtlLocalTimeToSystemTime(const LARGE_INTEGER*,PLARGE_INTEGER);
1073 BOOLEAN WINAPI RtlLockHeap(HANDLE);
1075 NTSTATUS WINAPI RtlMakeSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,LPDWORD);
1076 void WINAPI RtlMapGenericMask(PACCESS_MASK,const GENERIC_MAPPING*);
1077 NTSTATUS WINAPI RtlMultiByteToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
1078 NTSTATUS WINAPI RtlMultiByteToUnicodeSize(DWORD*,LPCSTR,UINT);
1080 DWORD WINAPI RtlNewSecurityObject(DWORD,DWORD,DWORD,DWORD,DWORD,DWORD);
1081 LPVOID WINAPI RtlNormalizeProcessParams(LPVOID);
1082 ULONG WINAPI RtlNtStatusToDosError(NTSTATUS);
1083 ULONG WINAPI RtlNumberOfSetBits(PCRTL_BITMAP);
1084 ULONG WINAPI RtlNumberOfClearBits(PCRTL_BITMAP);
1086 UINT WINAPI RtlOemStringToUnicodeSize(const STRING*);
1087 NTSTATUS WINAPI RtlOemStringToUnicodeString(UNICODE_STRING*,const STRING*,BOOLEAN);
1088 NTSTATUS WINAPI RtlOemToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
1089 DWORD WINAPI RtlOpenCurrentUser(ACCESS_MASK,PHKEY);
1091 BOOLEAN WINAPI RtlPrefixString(const STRING*,const STRING*,BOOLEAN);
1092 BOOLEAN WINAPI RtlPrefixUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
1094 NTSTATUS WINAPI RtlQueryEnvironmentVariable_U(PWSTR,PUNICODE_STRING,PUNICODE_STRING);
1095 NTSTATUS WINAPI RtlQueryTimeZoneInformation(LPTIME_ZONE_INFORMATION);
1097 void WINAPI RtlRaiseException(PEXCEPTION_RECORD);
1098 void WINAPI RtlRaiseStatus(NTSTATUS);
1099 ULONG WINAPI RtlRandom(PULONG);
1100 PVOID WINAPI RtlReAllocateHeap(HANDLE,ULONG,PVOID,ULONG);
1101 void WINAPI RtlReleasePebLock(void);
1102 void WINAPI RtlReleaseResource(LPRTL_RWLOCK);
1104 void WINAPI RtlSecondsSince1970ToTime(DWORD,LARGE_INTEGER *);
1105 void WINAPI RtlSecondsSince1980ToTime(DWORD,LARGE_INTEGER *);
1106 void WINAPI RtlSetAllBits(PRTL_BITMAP);
1107 void WINAPI RtlSetBits(PRTL_BITMAP,ULONG,ULONG);
1108 NTSTATUS WINAPI RtlSetCurrentDirectory_U(const UNICODE_STRING*);
1109 void WINAPI RtlSetCurrentEnvironment(PWSTR, PWSTR*);
1110 NTSTATUS WINAPI RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
1111 NTSTATUS WINAPI RtlSetEnvironmentVariable(PWSTR*,PUNICODE_STRING,PUNICODE_STRING);
1112 NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
1113 NTSTATUS WINAPI RtlSetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN);
1114 NTSTATUS WINAPI RtlSetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN);
1115 NTSTATUS WINAPI RtlSetTimeZoneInformation(const TIME_ZONE_INFORMATION*);
1116 ULONG WINAPI RtlSizeHeap(HANDLE,ULONG,PVOID);
1117 LPDWORD WINAPI RtlSubAuthoritySid(PSID,DWORD);
1118 LPBYTE WINAPI RtlSubAuthorityCountSid(PSID);
1119 NTSTATUS WINAPI RtlSystemTimeToLocalTime(const LARGE_INTEGER*,PLARGE_INTEGER);
1121 void WINAPI RtlTimeToTimeFields(const LARGE_INTEGER*,PTIME_FIELDS);
1122 BOOLEAN WINAPI RtlTimeFieldsToTime(PTIME_FIELDS,PLARGE_INTEGER);
1123 void WINAPI RtlTimeToElapsedTimeFields(const LARGE_INTEGER *,PTIME_FIELDS);
1124 BOOLEAN WINAPI RtlTimeToSecondsSince1970(const LARGE_INTEGER *,PULONG);
1125 BOOLEAN WINAPI RtlTimeToSecondsSince1980(const LARGE_INTEGER *,LPDWORD);
1126 BOOL WINAPI RtlTryEnterCriticalSection(RTL_CRITICAL_SECTION *);
1128 ULONGLONG __cdecl RtlUlonglongByteSwap(ULONGLONG);
1129 DWORD WINAPI RtlUnicodeStringToAnsiSize(const UNICODE_STRING*);
1130 NTSTATUS WINAPI RtlUnicodeStringToAnsiString(PANSI_STRING,PCUNICODE_STRING,BOOLEAN);
1131 NTSTATUS WINAPI RtlUnicodeStringToInteger(const UNICODE_STRING *,ULONG,ULONG *);
1132 DWORD WINAPI RtlUnicodeStringToOemSize(const UNICODE_STRING*);
1133 NTSTATUS WINAPI RtlUnicodeStringToOemString(POEM_STRING,PCUNICODE_STRING,BOOLEAN);
1134 NTSTATUS WINAPI RtlUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
1135 NTSTATUS WINAPI RtlUnicodeToMultiByteSize(PULONG,PCWSTR,ULONG);
1136 NTSTATUS WINAPI RtlUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
1137 ULONG WINAPI RtlUniform(PULONG);
1138 BOOLEAN WINAPI RtlUnlockHeap(HANDLE);
1139 void WINAPI RtlUnwind(PVOID,PVOID,PEXCEPTION_RECORD,PVOID);
1141 void WINAPI RtlUnwind2(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT);
1142 void WINAPI RtlUnwindEx(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT,PUNWIND_HISTORY_TABLE);
1144 WCHAR WINAPI RtlUpcaseUnicodeChar(WCHAR);
1145 NTSTATUS WINAPI RtlUpcaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING *,BOOLEAN);
1146 NTSTATUS WINAPI RtlUpcaseUnicodeStringToAnsiString(STRING*,const UNICODE_STRING*,BOOLEAN);
1147 NTSTATUS WINAPI RtlUpcaseUnicodeStringToCountedOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
1148 NTSTATUS WINAPI RtlUpcaseUnicodeStringToOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
1149 NTSTATUS WINAPI RtlUpcaseUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
1150 NTSTATUS WINAPI RtlUpcaseUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
1151 CHAR WINAPI RtlUpperChar(CHAR);
1152 void WINAPI RtlUpperString(STRING *,const STRING *);
1154 NTSTATUS WINAPI RtlValidSecurityDescriptor(PSECURITY_DESCRIPTOR);
1155 BOOLEAN WINAPI RtlValidAcl(PACL);
1156 BOOLEAN WINAPI RtlValidSid(PSID);
1157 BOOLEAN WINAPI RtlValidateHeap(HANDLE,ULONG,LPCVOID);
1159 NTSTATUS WINAPI RtlWalkHeap(HANDLE,PVOID);
1161 NTSTATUS WINAPI RtlpWaitForCriticalSection(RTL_CRITICAL_SECTION *);
1162 NTSTATUS WINAPI RtlpUnWaitCriticalSection(RTL_CRITICAL_SECTION *);
1164 /***********************************************************************
1168 #define InitializeObjectAttributes(p,n,a,r,s) \
1170 (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
1171 (p)->RootDirectory = r; \
1172 (p)->Attributes = a; \
1173 (p)->ObjectName = n; \
1174 (p)->SecurityDescriptor = s; \
1175 (p)->SecurityQualityOfService = NULL; \
1178 #define NtCurrentProcess() ((HANDLE)-1)
1180 #define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length))
1181 #define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length))
1182 #define RtlStoreUlong(p,v) do { ULONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
1183 #define RtlStoreUlonglong(p,v) do { ULONGLONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0)
1184 #define RtlRetrieveUlong(p,s) memcpy((p), (s), sizeof(ULONG))
1185 #define RtlRetrieveUlonglong(p,s) memcpy((p), (s), sizeof(ULONGLONG))
1186 #define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))
1188 inline static BOOLEAN RtlCheckBit(PCRTL_BITMAP lpBits, ULONG ulBit)
1190 if (lpBits && ulBit < lpBits->SizeOfBitMap &&
1191 lpBits->BitMapBuffer[ulBit >> 3] & (1 << (ulBit & 7)))
1196 #define RtlClearAllBits(p) \
1198 PRTL_BITMAP _p = (p); \
1199 memset(_p->BitMapBuffer,0,((_p->SizeOfBitMap + 31) & 0xffffffe0) >> 3); \
1202 #define RtlInitializeBitMap(p,b,s) \
1204 PRTL_BITMAP _p = (p); \
1205 _p->SizeOfBitMap = (s); \
1206 _p->BitMapBuffer = (b); \
1209 #define RtlSetAllBits(p) \
1211 PRTL_BITMAP _p = (p); \
1212 memset(_p->BitMapBuffer,0xff,((_p->SizeOfBitMap + 31) & 0xffffffe0) >> 3); \
1215 /* These are implemented as __fastcall, so we can't let Winelib apps link with them */
1216 inline static USHORT RtlUshortByteSwap(USHORT s)
1218 return (s >> 8) | (s << 8);
1220 inline static ULONG RtlUlongByteSwap(ULONG i)
1222 #if defined(__i386__) && defined(__GNUC__)
1224 __asm__("bswap %0" : "=r" (ret) : "0" (i) );
1227 return ((ULONG)RtlUshortByteSwap(i) << 16) | RtlUshortByteSwap(i >> 16);
1231 /*************************************************************************
1232 * Loader functions and structures.
1234 * Those are not part of standard Winternl.h
1236 typedef struct _LDR_MODULE
1238 LIST_ENTRY InLoadOrderModuleList;
1239 LIST_ENTRY InMemoryOrderModuleList;
1240 LIST_ENTRY InInitializationOrderModuleList;
1244 UNICODE_STRING FullDllName;
1245 UNICODE_STRING BaseDllName;
1249 HANDLE SectionHandle;
1251 ULONG TimeDateStamp;
1252 } LDR_MODULE, *PLDR_MODULE;
1254 /* those defines are (some of the) regular LDR_MODULE.Flags values */
1255 #define LDR_IMAGE_IS_DLL 0x00000004
1256 #define LDR_LOAD_IN_PROGRESS 0x00001000
1257 #define LDR_UNLOAD_IN_PROGRESS 0x00002000
1258 #define LDR_NO_DLL_CALLS 0x00040000
1259 #define LDR_PROCESS_ATTACHED 0x00080000
1260 #define LDR_MODULE_REBASED 0x00200000
1262 /* these ones is Wine specific */
1263 #define LDR_DONT_RESOLVE_REFS 0x40000000
1264 #define LDR_WINE_INTERNAL 0x80000000
1266 /* FIXME: to be checked */
1267 #define MAXIMUM_FILENAME_LENGTH 256
1269 typedef struct _SYSTEM_MODULE
1273 PVOID ImageBaseAddress;
1280 BYTE Name[MAXIMUM_FILENAME_LENGTH];
1281 } SYSTEM_MODULE, *PSYSTEM_MODULE;
1283 typedef struct _SYSTEM_MODULE_INFORMATION
1286 SYSTEM_MODULE Modules[1]; /* FIXME: should be Modules[0] */
1287 } SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;
1289 NTSTATUS WINAPI LdrDisableThreadCalloutsForDll(HMODULE);
1290 NTSTATUS WINAPI LdrFindEntryForAddress(const void*, PLDR_MODULE*);
1291 NTSTATUS WINAPI LdrGetDllHandle(ULONG, ULONG, PUNICODE_STRING, HMODULE*);
1292 NTSTATUS WINAPI LdrGetProcedureAddress(HMODULE, PANSI_STRING, ULONG, void**);
1293 NTSTATUS WINAPI LdrLoadDll(LPCWSTR, DWORD, PUNICODE_STRING, HMODULE*);
1294 NTSTATUS WINAPI LdrLockLoaderLock(ULONG,ULONG*,ULONG*);
1295 NTSTATUS WINAPI LdrQueryProcessModuleInformation(SYSTEM_MODULE_INFORMATION*, ULONG, ULONG*);
1296 NTSTATUS WINAPI LdrUnloadDll(HMODULE);
1297 NTSTATUS WINAPI LdrUnlockLoaderLock(ULONG,ULONG);
1301 #endif /* defined(__cplusplus) */
1303 #endif /* __WINE_WINTERNAL_H */