Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenwinternl.h
Go to the documentation of this file.
00001 /* 00002 * Internal NT APIs and data structures 00003 * 00004 * Copyright (C) the Wine project 00005 * 00006 * This library is free software; you can redistribute it and/or 00007 * modify it under the terms of the GNU Lesser General Public 00008 * License as published by the Free Software Foundation; either 00009 * version 2.1 of the License, or (at your option) any later version. 00010 * 00011 * This library is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 * Lesser General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU Lesser General Public 00017 * License along with this library; if not, write to the Free Software 00018 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00019 */ 00020 00021 #ifndef __WINE_WINTERNL_H 00022 #define __WINE_WINTERNL_H 00023 00024 #include <windef.h> 00025 00026 #ifdef __cplusplus 00027 extern "C" { 00028 #endif /* defined(__cplusplus) */ 00029 00030 00031 /********************************************************************** 00032 * Fundamental types and data structures 00033 */ 00034 00035 typedef LONG NTSTATUS, *PNTSTATUS; 00036 00037 typedef CONST char *PCSZ; 00038 00039 typedef short CSHORT; 00040 typedef CSHORT *PCSHORT; 00041 00042 typedef struct _STRING { 00043 USHORT Length; 00044 USHORT MaximumLength; 00045 PCHAR Buffer; 00046 } STRING, *PSTRING; 00047 00048 typedef STRING ANSI_STRING; 00049 typedef PSTRING PANSI_STRING; 00050 typedef const STRING *PCANSI_STRING; 00051 00052 typedef STRING OEM_STRING; 00053 typedef PSTRING POEM_STRING; 00054 typedef const STRING *PCOEM_STRING; 00055 00056 typedef struct _UNICODE_STRING { 00057 USHORT Length; /* bytes */ 00058 USHORT MaximumLength; /* bytes */ 00059 PWSTR Buffer; 00060 } UNICODE_STRING, *PUNICODE_STRING; 00061 00062 typedef const UNICODE_STRING *PCUNICODE_STRING; 00063 00064 #ifndef _FILETIME_ 00065 #define _FILETIME_ 00066 /* 64 bit number of 100 nanoseconds intervals since January 1, 1601 */ 00067 typedef struct _FILETIME 00068 { 00069 #ifdef WORDS_BIGENDIAN 00070 DWORD dwHighDateTime; 00071 DWORD dwLowDateTime; 00072 #else 00073 DWORD dwLowDateTime; 00074 DWORD dwHighDateTime; 00075 #endif 00076 } FILETIME, *PFILETIME, *LPFILETIME; 00077 #endif /* _FILETIME_ */ 00078 00079 /* 00080 * RTL_SYSTEM_TIME and RTL_TIME_ZONE_INFORMATION are the same as 00081 * the SYSTEMTIME and TIME_ZONE_INFORMATION structures defined 00082 * in winbase.h, however we need to define them seperately so 00083 * winternl.h doesn't depend on winbase.h. They are used by 00084 * RtlQueryTimeZoneInformation and RtlSetTimeZoneInformation. 00085 * The names are guessed; if anybody knows the real names, let me know. 00086 */ 00087 typedef struct _RTL_SYSTEM_TIME { 00088 WORD wYear; 00089 WORD wMonth; 00090 WORD wDayOfWeek; 00091 WORD wDay; 00092 WORD wHour; 00093 WORD wMinute; 00094 WORD wSecond; 00095 WORD wMilliseconds; 00096 } RTL_SYSTEM_TIME, *PRTL_SYSTEM_TIME; 00097 00098 typedef struct _RTL_TIME_ZONE_INFORMATION { 00099 LONG Bias; 00100 WCHAR StandardName[32]; 00101 RTL_SYSTEM_TIME StandardDate; 00102 LONG StandardBias; 00103 WCHAR DaylightName[32]; 00104 RTL_SYSTEM_TIME DaylightDate; 00105 LONG DaylightBias; 00106 } RTL_TIME_ZONE_INFORMATION, *PRTL_TIME_ZONE_INFORMATION; 00107 00108 typedef struct _CLIENT_ID 00109 { 00110 HANDLE UniqueProcess; 00111 HANDLE UniqueThread; 00112 } CLIENT_ID, *PCLIENT_ID; 00113 00114 typedef struct _CURDIR 00115 { 00116 UNICODE_STRING DosPath; 00117 PVOID Handle; 00118 } CURDIR, *PCURDIR; 00119 00120 typedef struct RTL_DRIVE_LETTER_CURDIR 00121 { 00122 USHORT Flags; 00123 USHORT Length; 00124 ULONG TimeStamp; 00125 UNICODE_STRING DosPath; 00126 } RTL_DRIVE_LETTER_CURDIR, *PRTL_DRIVE_LETTER_CURDIR; 00127 00128 typedef struct tagRTL_BITMAP { 00129 ULONG SizeOfBitMap; /* Number of bits in the bitmap */ 00130 PULONG Buffer; /* Bitmap data, assumed sized to a DWORD boundary */ 00131 } RTL_BITMAP, *PRTL_BITMAP; 00132 00133 typedef const RTL_BITMAP *PCRTL_BITMAP; 00134 00135 typedef struct tagRTL_BITMAP_RUN { 00136 ULONG StartingIndex; /* Bit position at which run starts */ 00137 ULONG NumberOfBits; /* Size of the run in bits */ 00138 } RTL_BITMAP_RUN, *PRTL_BITMAP_RUN; 00139 00140 typedef const RTL_BITMAP_RUN *PCRTL_BITMAP_RUN; 00141 00142 typedef struct _RTL_USER_PROCESS_PARAMETERS 00143 { 00144 ULONG AllocationSize; 00145 ULONG Size; 00146 ULONG Flags; 00147 ULONG DebugFlags; 00148 HANDLE ConsoleHandle; 00149 ULONG ConsoleFlags; 00150 HANDLE hStdInput; 00151 HANDLE hStdOutput; 00152 HANDLE hStdError; 00153 CURDIR CurrentDirectory; 00154 UNICODE_STRING DllPath; 00155 UNICODE_STRING ImagePathName; 00156 UNICODE_STRING CommandLine; 00157 PWSTR Environment; 00158 ULONG dwX; 00159 ULONG dwY; 00160 ULONG dwXSize; 00161 ULONG dwYSize; 00162 ULONG dwXCountChars; 00163 ULONG dwYCountChars; 00164 ULONG dwFillAttribute; 00165 ULONG dwFlags; 00166 ULONG wShowWindow; 00167 UNICODE_STRING WindowTitle; 00168 UNICODE_STRING Desktop; 00169 UNICODE_STRING ShellInfo; 00170 UNICODE_STRING RuntimeInfo; 00171 RTL_DRIVE_LETTER_CURDIR DLCurrentDirectory[0x20]; 00172 } RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS; 00173 00174 /* value for Flags field (FIXME: not the correct name) */ 00175 #define PROCESS_PARAMS_FLAG_NORMALIZED 1 00176 00177 typedef struct _PEB_LDR_DATA 00178 { 00179 ULONG Length; 00180 BOOLEAN Initialized; 00181 PVOID SsHandle; 00182 LIST_ENTRY InLoadOrderModuleList; 00183 LIST_ENTRY InMemoryOrderModuleList; 00184 LIST_ENTRY InInitializationOrderModuleList; 00185 } PEB_LDR_DATA, *PPEB_LDR_DATA; 00186 00187 typedef struct _GDI_TEB_BATCH 00188 { 00189 ULONG Offset; 00190 HANDLE HDC; 00191 ULONG Buffer[0x136]; 00192 } GDI_TEB_BATCH; 00193 00194 typedef struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME 00195 { 00196 struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME *Previous; 00197 struct _ACTIVATION_CONTEXT *ActivationContext; 00198 ULONG Flags; 00199 } RTL_ACTIVATION_CONTEXT_STACK_FRAME, *PRTL_ACTIVATION_CONTEXT_STACK_FRAME; 00200 00201 typedef struct _ACTIVATION_CONTEXT_STACK 00202 { 00203 ULONG Flags; 00204 ULONG NextCookieSequenceNumber; 00205 RTL_ACTIVATION_CONTEXT_STACK_FRAME *ActiveFrame; 00206 LIST_ENTRY FrameListCache; 00207 } ACTIVATION_CONTEXT_STACK, *PACTIVATION_CONTEXT_STACK; 00208 00209 /*********************************************************************** 00210 * PEB data structure 00211 */ 00212 typedef struct _PEB 00213 { 00214 BOOLEAN InheritedAddressSpace; /* 00 */ 00215 BOOLEAN ReadImageFileExecOptions; /* 01 */ 00216 BOOLEAN BeingDebugged; /* 02 */ 00217 BOOLEAN SpareBool; /* 03 */ 00218 HANDLE Mutant; /* 04 */ 00219 HMODULE ImageBaseAddress; /* 08 */ 00220 PPEB_LDR_DATA LdrData; /* 0c */ 00221 RTL_USER_PROCESS_PARAMETERS *ProcessParameters; /* 10 */ 00222 PVOID SubSystemData; /* 14 */ 00223 HANDLE ProcessHeap; /* 18 */ 00224 PRTL_CRITICAL_SECTION FastPebLock; /* 1c */ 00225 PVOID /*PPEBLOCKROUTINE*/ FastPebLockRoutine; /* 20 */ 00226 PVOID /*PPEBLOCKROUTINE*/ FastPebUnlockRoutine; /* 24 */ 00227 ULONG EnvironmentUpdateCount; /* 28 */ 00228 PVOID KernelCallbackTable; /* 2c */ 00229 PVOID EventLogSection; /* 30 */ 00230 PVOID EventLog; /* 34 */ 00231 PVOID /*PPEB_FREE_BLOCK*/ FreeList; /* 38 */ 00232 ULONG TlsExpansionCounter; /* 3c */ 00233 PRTL_BITMAP TlsBitmap; /* 40 */ 00234 ULONG TlsBitmapBits[2]; /* 44 */ 00235 PVOID ReadOnlySharedMemoryBase; /* 4c */ 00236 PVOID ReadOnlySharedMemoryHeap; /* 50 */ 00237 PVOID *ReadOnlyStaticServerData; /* 54 */ 00238 PVOID AnsiCodePageData; /* 58 */ 00239 PVOID OemCodePageData; /* 5c */ 00240 PVOID UnicodeCaseTableData; /* 60 */ 00241 ULONG NumberOfProcessors; /* 64 */ 00242 ULONG NtGlobalFlag; /* 68 */ 00243 BYTE Spare2[4]; /* 6c */ 00244 LARGE_INTEGER CriticalSectionTimeout; /* 70 */ 00245 ULONG HeapSegmentReserve; /* 78 */ 00246 ULONG HeapSegmentCommit; /* 7c */ 00247 ULONG HeapDeCommitTotalFreeThreshold; /* 80 */ 00248 ULONG HeapDeCommitFreeBlockThreshold; /* 84 */ 00249 ULONG NumberOfHeaps; /* 88 */ 00250 ULONG MaximumNumberOfHeaps; /* 8c */ 00251 PVOID *ProcessHeaps; /* 90 */ 00252 PVOID GdiSharedHandleTable; /* 94 */ 00253 PVOID ProcessStarterHelper; /* 98 */ 00254 PVOID GdiDCAttributeList; /* 9c */ 00255 PVOID LoaderLock; /* a0 */ 00256 ULONG OSMajorVersion; /* a4 */ 00257 ULONG OSMinorVersion; /* a8 */ 00258 ULONG OSBuildNumber; /* ac */ 00259 ULONG OSPlatformId; /* b0 */ 00260 ULONG ImageSubSystem; /* b4 */ 00261 ULONG ImageSubSystemMajorVersion; /* b8 */ 00262 ULONG ImageSubSystemMinorVersion; /* bc */ 00263 ULONG ImageProcessAffinityMask; /* c0 */ 00264 ULONG GdiHandleBuffer[34]; /* c4 */ 00265 ULONG PostProcessInitRoutine; /* 14c */ 00266 PRTL_BITMAP TlsExpansionBitmap; /* 150 */ 00267 ULONG TlsExpansionBitmapBits[32]; /* 154 */ 00268 ULONG SessionId; /* 1d4 */ 00269 } PEB, *PPEB; 00270 00271 00272 /*********************************************************************** 00273 * TEB data structure 00274 */ 00275 #ifndef WINE_NO_TEB /* don't define TEB if included from thread.h */ 00276 # ifndef WINE_TEB_DEFINED 00277 # define WINE_TEB_DEFINED 00278 typedef struct _TEB 00279 { 00280 NT_TIB Tib; /* 000 */ 00281 PVOID EnvironmentPointer; /* 01c */ 00282 CLIENT_ID ClientId; /* 020 */ 00283 PVOID ActiveRpcHandle; /* 028 */ 00284 PVOID ThreadLocalStoragePointer; /* 02c */ 00285 PPEB Peb; /* 030 */ 00286 ULONG LastErrorValue; /* 034 */ 00287 ULONG CountOfOwnedCriticalSections;/* 038 */ 00288 PVOID CsrClientThread; /* 03c */ 00289 PVOID Win32ThreadInfo; /* 040 */ 00290 ULONG Win32ClientInfo[31]; /* 044 used for user32 private data in Wine */ 00291 PVOID WOW32Reserved; /* 0c0 */ 00292 ULONG CurrentLocale; /* 0c4 */ 00293 ULONG FpSoftwareStatusRegister; /* 0c8 */ 00294 PVOID SystemReserved1[54]; /* 0cc used for kernel32 private data in Wine */ 00295 PVOID Spare1; /* 1a4 */ 00296 LONG ExceptionCode; /* 1a8 */ 00297 PACTIVATION_CONTEXT_STACK ActivationContextStackPointer; /* 1a8/02c8 */ 00298 BYTE SpareBytes1[36]; /* 1ac */ 00299 PVOID SystemReserved2[10]; /* 1d4 used for ntdll private data in Wine */ 00300 GDI_TEB_BATCH GdiTebBatch; /* 1fc */ 00301 ULONG gdiRgn; /* 6dc */ 00302 ULONG gdiPen; /* 6e0 */ 00303 ULONG gdiBrush; /* 6e4 */ 00304 CLIENT_ID RealClientId; /* 6e8 */ 00305 HANDLE GdiCachedProcessHandle; /* 6f0 */ 00306 ULONG GdiClientPID; /* 6f4 */ 00307 ULONG GdiClientTID; /* 6f8 */ 00308 PVOID GdiThreadLocaleInfo; /* 6fc */ 00309 PVOID UserReserved[5]; /* 700 */ 00310 PVOID glDispatchTable[280]; /* 714 */ 00311 ULONG glReserved1[26]; /* b74 */ 00312 PVOID glReserved2; /* bdc */ 00313 PVOID glSectionInfo; /* be0 */ 00314 PVOID glSection; /* be4 */ 00315 PVOID glTable; /* be8 */ 00316 PVOID glCurrentRC; /* bec */ 00317 PVOID glContext; /* bf0 */ 00318 ULONG LastStatusValue; /* bf4 */ 00319 UNICODE_STRING StaticUnicodeString; /* bf8 used by advapi32 */ 00320 WCHAR StaticUnicodeBuffer[261]; /* c00 used by advapi32 */ 00321 PVOID DeallocationStack; /* e0c */ 00322 PVOID TlsSlots[64]; /* e10 */ 00323 LIST_ENTRY TlsLinks; /* f10 */ 00324 PVOID Vdm; /* f18 */ 00325 PVOID ReservedForNtRpc; /* f1c */ 00326 PVOID DbgSsReserved[2]; /* f20 */ 00327 ULONG HardErrorDisabled; /* f28 */ 00328 PVOID Instrumentation[16]; /* f2c */ 00329 PVOID WinSockData; /* f6c */ 00330 ULONG GdiBatchCount; /* f70 */ 00331 ULONG Spare2; /* f74 */ 00332 ULONG Spare3; /* f78 */ 00333 ULONG Spare4; /* f7c */ 00334 PVOID ReservedForOle; /* f80 */ 00335 ULONG WaitingOnLoaderLock; /* f84 */ 00336 PVOID Reserved5[3]; /* f88 */ 00337 PVOID *TlsExpansionSlots; /* f94 */ 00338 } TEB, *PTEB; 00339 # endif /* WINE_TEB_DEFINED */ 00340 #endif /* WINE_NO_TEB */ 00341 00342 /*********************************************************************** 00343 * Enums 00344 */ 00345 00346 typedef enum _FILE_INFORMATION_CLASS { 00347 FileDirectoryInformation = 1, 00348 FileFullDirectoryInformation, 00349 FileBothDirectoryInformation, 00350 FileBasicInformation, 00351 FileStandardInformation, 00352 FileInternalInformation, 00353 FileEaInformation, 00354 FileAccessInformation, 00355 FileNameInformation, 00356 FileRenameInformation, 00357 FileLinkInformation, 00358 FileNamesInformation, 00359 FileDispositionInformation, 00360 FilePositionInformation, 00361 FileFullEaInformation, 00362 FileModeInformation, 00363 FileAlignmentInformation, 00364 FileAllInformation, 00365 FileAllocationInformation, 00366 FileEndOfFileInformation, 00367 FileAlternateNameInformation, 00368 FileStreamInformation, 00369 FilePipeInformation, 00370 FilePipeLocalInformation, 00371 FilePipeRemoteInformation, 00372 FileMailslotQueryInformation, 00373 FileMailslotSetInformation, 00374 FileCompressionInformation, 00375 FileObjectIdInformation, 00376 FileCompletionInformation, 00377 FileMoveClusterInformation, 00378 FileQuotaInformation, 00379 FileReparsePointInformation, 00380 FileNetworkOpenInformation, 00381 FileAttributeTagInformation, 00382 FileTrackingInformation, 00383 FileIdBothDirectoryInformation, 00384 FileIdFullDirectoryInformation, 00385 FileValidDataLengthInformation, 00386 FileShortNameInformation = 40, 00387 /* 41, 42, 43 undocumented */ 00388 FileSfioReserveInformation = 44, 00389 FileSfioVolumeInformation = 45, 00390 FileHardLinkInformation = 46, 00391 /* 47 undocumented */ 00392 FileNormalizedNameInformation = 48, 00393 /* 49 undocumented */ 00394 FileIdGlobalTxDirectoryInformation = 50, 00395 /* 51, 52, 53 undocumented */ 00396 FileStandardLinkInformation = 54, 00397 FileMaximumInformation 00398 } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS; 00399 00400 typedef struct _FILE_DIRECTORY_INFORMATION { 00401 ULONG NextEntryOffset; 00402 ULONG FileIndex; 00403 LARGE_INTEGER CreationTime; 00404 LARGE_INTEGER LastAccessTime; 00405 LARGE_INTEGER LastWriteTime; 00406 LARGE_INTEGER ChangeTime; 00407 LARGE_INTEGER EndOfFile; 00408 LARGE_INTEGER AllocationSize; 00409 ULONG FileAttributes; 00410 ULONG FileNameLength; 00411 WCHAR FileName[ANYSIZE_ARRAY]; 00412 } FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION; 00413 00414 typedef struct _FILE_FULL_DIRECTORY_INFORMATION { 00415 ULONG NextEntryOffset; 00416 ULONG FileIndex; 00417 LARGE_INTEGER CreationTime; 00418 LARGE_INTEGER LastAccessTime; 00419 LARGE_INTEGER LastWriteTime; 00420 LARGE_INTEGER ChangeTime; 00421 LARGE_INTEGER EndOfFile; 00422 LARGE_INTEGER AllocationSize; 00423 ULONG FileAttributes; 00424 ULONG FileNameLength; 00425 ULONG EaSize; 00426 WCHAR FileName[ANYSIZE_ARRAY]; 00427 } FILE_FULL_DIRECTORY_INFORMATION, *PFILE_FULL_DIRECTORY_INFORMATION, 00428 FILE_FULL_DIR_INFORMATION, *PFILE_FULL_DIR_INFORMATION; 00429 00430 typedef struct _FILE_ID_FULL_DIRECTORY_INFORMATION { 00431 ULONG NextEntryOffset; 00432 ULONG FileIndex; 00433 LARGE_INTEGER CreationTime; 00434 LARGE_INTEGER LastAccessTime; 00435 LARGE_INTEGER LastWriteTime; 00436 LARGE_INTEGER ChangeTime; 00437 LARGE_INTEGER EndOfFile; 00438 LARGE_INTEGER AllocationSize; 00439 ULONG FileAttributes; 00440 ULONG FileNameLength; 00441 ULONG EaSize; 00442 LARGE_INTEGER FileId; 00443 WCHAR FileName[ANYSIZE_ARRAY]; 00444 } FILE_ID_FULL_DIRECTORY_INFORMATION, *PFILE_ID_FULL_DIRECTORY_INFORMATION; 00445 00446 typedef struct _FILE_BOTH_DIRECTORY_INFORMATION { 00447 ULONG NextEntryOffset; 00448 ULONG FileIndex; 00449 LARGE_INTEGER CreationTime; 00450 LARGE_INTEGER LastAccessTime; 00451 LARGE_INTEGER LastWriteTime; 00452 LARGE_INTEGER ChangeTime; 00453 LARGE_INTEGER EndOfFile; 00454 LARGE_INTEGER AllocationSize; 00455 ULONG FileAttributes; 00456 ULONG FileNameLength; 00457 ULONG EaSize; 00458 CHAR ShortNameLength; 00459 WCHAR ShortName[12]; 00460 WCHAR FileName[ANYSIZE_ARRAY]; 00461 } FILE_BOTH_DIRECTORY_INFORMATION, *PFILE_BOTH_DIRECTORY_INFORMATION, 00462 FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION; 00463 00464 typedef struct _FILE_ID_BOTH_DIRECTORY_INFORMATION { 00465 ULONG NextEntryOffset; 00466 ULONG FileIndex; 00467 LARGE_INTEGER CreationTime; 00468 LARGE_INTEGER LastAccessTime; 00469 LARGE_INTEGER LastWriteTime; 00470 LARGE_INTEGER ChangeTime; 00471 LARGE_INTEGER EndOfFile; 00472 LARGE_INTEGER AllocationSize; 00473 ULONG FileAttributes; 00474 ULONG FileNameLength; 00475 ULONG EaSize; 00476 CHAR ShortNameLength; 00477 WCHAR ShortName[12]; 00478 LARGE_INTEGER FileId; 00479 WCHAR FileName[ANYSIZE_ARRAY]; 00480 } FILE_ID_BOTH_DIRECTORY_INFORMATION, *PFILE_ID_BOTH_DIRECTORY_INFORMATION; 00481 00482 typedef struct _FILE_BASIC_INFORMATION { 00483 LARGE_INTEGER CreationTime; 00484 LARGE_INTEGER LastAccessTime; 00485 LARGE_INTEGER LastWriteTime; 00486 LARGE_INTEGER ChangeTime; 00487 ULONG FileAttributes; 00488 } FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION; 00489 00490 typedef struct _FILE_STANDARD_INFORMATION { 00491 LARGE_INTEGER AllocationSize; 00492 LARGE_INTEGER EndOfFile; 00493 ULONG NumberOfLinks; 00494 BOOLEAN DeletePending; 00495 BOOLEAN Directory; 00496 } FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION; 00497 00498 typedef struct _FILE_INTERNAL_INFORMATION { 00499 LARGE_INTEGER IndexNumber; 00500 } FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION; 00501 00502 typedef struct _FILE_EA_INFORMATION { 00503 ULONG EaSize; 00504 } FILE_EA_INFORMATION, *PFILE_EA_INFORMATION; 00505 00506 typedef struct _FILE_ACCESS_INFORMATION { 00507 ACCESS_MASK AccessFlags; 00508 } FILE_ACCESS_INFORMATION, *PFILE_ACCESS_INFORMATION; 00509 00510 typedef struct _FILE_NAME_INFORMATION { 00511 ULONG FileNameLength; 00512 WCHAR FileName[1]; 00513 } FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION; 00514 00515 typedef struct _FILE_RENAME_INFORMATION { 00516 BOOLEAN Replace; 00517 HANDLE RootDir; 00518 ULONG FileNameLength; 00519 WCHAR FileName[1]; 00520 } FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION; 00521 00522 typedef struct _FILE_NAMES_INFORMATION { 00523 ULONG NextEntryOffset; 00524 ULONG FileIndex; 00525 ULONG FileNameLength; 00526 WCHAR FileName[1]; 00527 } FILE_NAMES_INFORMATION, *PFILE_NAMES_INFORMATION; 00528 00529 typedef struct _FILE_DISPOSITION_INFORMATION { 00530 BOOLEAN DoDeleteFile; 00531 } FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION; 00532 00533 typedef struct _FILE_POSITION_INFORMATION { 00534 LARGE_INTEGER CurrentByteOffset; 00535 } FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION; 00536 00537 typedef struct _FILE_ALIGNMENT_INFORMATION { 00538 ULONG AlignmentRequirement; 00539 } FILE_ALIGNMENT_INFORMATION, *PFILE_ALIGNMENT_INFORMATION; 00540 00541 typedef struct _FILE_ALLOCATION_INFORMATION { 00542 LARGE_INTEGER AllocationSize; 00543 } FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION; 00544 00545 typedef struct _FILE_END_OF_FILE_INFORMATION { 00546 LARGE_INTEGER EndOfFile; 00547 } FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION; 00548 00549 typedef struct _FILE_NETWORK_OPEN_INFORMATION { 00550 LARGE_INTEGER CreationTime; 00551 LARGE_INTEGER LastAccessTime; 00552 LARGE_INTEGER LastWriteTime; 00553 LARGE_INTEGER ChangeTime; 00554 LARGE_INTEGER AllocationSize; 00555 LARGE_INTEGER EndOfFile; 00556 ULONG FileAttributes; 00557 } FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION; 00558 00559 typedef struct _FILE_FULL_EA_INFORMATION { 00560 ULONG NextEntryOffset; 00561 UCHAR Flags; 00562 UCHAR EaNameLength; 00563 USHORT EaValueLength; 00564 CHAR EaName[1]; 00565 } FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION; 00566 00567 typedef struct _FILE_MODE_INFORMATION { 00568 ULONG Mode; 00569 } FILE_MODE_INFORMATION, *PFILE_MODE_INFORMATION; 00570 00571 typedef struct _FILE_STREAM_INFORMATION 00572 { 00573 ULONG NextEntryOffset; 00574 ULONG StreamNameLength; 00575 LARGE_INTEGER StreamSize; 00576 LARGE_INTEGER StreamAllocationSize; 00577 WCHAR StreamName[1]; 00578 } FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION; 00579 00580 typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION 00581 { 00582 ULONG FileAttributes; 00583 ULONG ReparseTag; 00584 } FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION; 00585 00586 typedef struct _FILE_MAILSLOT_QUERY_INFORMATION { 00587 ULONG MaximumMessageSize; 00588 ULONG MailslotQuota; 00589 ULONG NextMessageSize; 00590 ULONG MessagesAvailable; 00591 LARGE_INTEGER ReadTimeout; 00592 } FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION; 00593 00594 typedef struct _FILE_MAILSLOT_SET_INFORMATION { 00595 LARGE_INTEGER ReadTimeout; 00596 } FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION; 00597 00598 typedef struct _FILE_PIPE_LOCAL_INFORMATION { 00599 ULONG NamedPipeType; 00600 ULONG NamedPipeConfiguration; 00601 ULONG MaximumInstances; 00602 ULONG CurrentInstances; 00603 ULONG InboundQuota; 00604 ULONG ReadDataAvailable; 00605 ULONG OutboundQuota; 00606 ULONG WriteQuotaAvailable; 00607 ULONG NamedPipeState; 00608 ULONG NamedPipeEnd; 00609 } FILE_PIPE_LOCAL_INFORMATION, *PFILE_PIPE_LOCAL_INFORMATION; 00610 00611 typedef struct _FILE_ALL_INFORMATION { 00612 FILE_BASIC_INFORMATION BasicInformation; 00613 FILE_STANDARD_INFORMATION StandardInformation; 00614 FILE_INTERNAL_INFORMATION InternalInformation; 00615 FILE_EA_INFORMATION EaInformation; 00616 FILE_ACCESS_INFORMATION AccessInformation; 00617 FILE_POSITION_INFORMATION PositionInformation; 00618 FILE_MODE_INFORMATION ModeInformation; 00619 FILE_ALIGNMENT_INFORMATION AlignmentInformation; 00620 FILE_NAME_INFORMATION NameInformation; 00621 } FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION; 00622 00623 typedef enum _FSINFOCLASS { 00624 FileFsVolumeInformation = 1, 00625 FileFsLabelInformation, 00626 FileFsSizeInformation, 00627 FileFsDeviceInformation, 00628 FileFsAttributeInformation, 00629 FileFsControlInformation, 00630 FileFsFullSizeInformation, 00631 FileFsObjectIdInformation, 00632 FileFsMaximumInformation 00633 } FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS; 00634 00635 typedef enum _KEY_INFORMATION_CLASS { 00636 KeyBasicInformation, 00637 KeyNodeInformation, 00638 KeyFullInformation 00639 } KEY_INFORMATION_CLASS; 00640 00641 typedef enum _KEY_VALUE_INFORMATION_CLASS { 00642 KeyValueBasicInformation, 00643 KeyValueFullInformation, 00644 KeyValuePartialInformation, 00645 KeyValueFullInformationAlign64, 00646 KeyValuePartialInformationAlign64 00647 } KEY_VALUE_INFORMATION_CLASS; 00648 00649 typedef enum _OBJECT_INFORMATION_CLASS { 00650 ObjectBasicInformation, 00651 ObjectNameInformation, 00652 ObjectTypeInformation, 00653 ObjectAllInformation, 00654 ObjectDataInformation 00655 } OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS; 00656 00657 typedef enum _PROCESSINFOCLASS { 00658 ProcessBasicInformation = 0, 00659 ProcessQuotaLimits = 1, 00660 ProcessIoCounters = 2, 00661 ProcessVmCounters = 3, 00662 ProcessTimes = 4, 00663 ProcessBasePriority = 5, 00664 ProcessRaisePriority = 6, 00665 ProcessDebugPort = 7, 00666 ProcessExceptionPort = 8, 00667 ProcessAccessToken = 9, 00668 ProcessLdtInformation = 10, 00669 ProcessLdtSize = 11, 00670 ProcessDefaultHardErrorMode = 12, 00671 ProcessIoPortHandlers = 13, 00672 ProcessPooledUsageAndLimits = 14, 00673 ProcessWorkingSetWatch = 15, 00674 ProcessUserModeIOPL = 16, 00675 ProcessEnableAlignmentFaultFixup = 17, 00676 ProcessPriorityClass = 18, 00677 ProcessWx86Information = 19, 00678 ProcessHandleCount = 20, 00679 ProcessAffinityMask = 21, 00680 ProcessPriorityBoost = 22, 00681 ProcessDeviceMap = 23, 00682 ProcessSessionInformation = 24, 00683 ProcessForegroundInformation = 25, 00684 ProcessWow64Information = 26, 00685 ProcessImageFileName = 27, 00686 ProcessLUIDDeviceMapsEnabled = 28, 00687 ProcessBreakOnTermination = 29, 00688 ProcessDebugObjectHandle = 30, 00689 ProcessDebugFlags = 31, 00690 ProcessHandleTracing = 32, 00691 ProcessExecuteFlags = 34, 00692 MaxProcessInfoClass 00693 } PROCESSINFOCLASS, PROCESS_INFORMATION_CLASS; 00694 00695 #define MEM_EXECUTE_OPTION_DISABLE 0x01 00696 #define MEM_EXECUTE_OPTION_ENABLE 0x02 00697 #define MEM_EXECUTE_OPTION_PERMANENT 0x08 00698 00699 typedef enum _SECTION_INHERIT { 00700 ViewShare = 1, 00701 ViewUnmap = 2 00702 } SECTION_INHERIT; 00703 00704 typedef enum _SYSTEM_INFORMATION_CLASS { 00705 SystemBasicInformation = 0, 00706 SystemCpuInformation = 1, 00707 SystemPerformanceInformation = 2, 00708 SystemTimeOfDayInformation = 3, /* was SystemTimeInformation */ 00709 Unknown4, 00710 SystemProcessInformation = 5, 00711 Unknown6, 00712 Unknown7, 00713 SystemProcessorPerformanceInformation = 8, 00714 Unknown9, 00715 Unknown10, 00716 SystemModuleInformation = 11, 00717 Unknown12, 00718 Unknown13, 00719 Unknown14, 00720 Unknown15, 00721 SystemHandleInformation = 16, 00722 Unknown17, 00723 SystemPageFileInformation = 18, 00724 Unknown19, 00725 Unknown20, 00726 SystemCacheInformation = 21, 00727 Unknown22, 00728 SystemInterruptInformation = 23, 00729 SystemDpcBehaviourInformation = 24, 00730 SystemFullMemoryInformation = 25, 00731 SystemNotImplemented6 = 25, 00732 SystemLoadImage = 26, 00733 SystemUnloadImage = 27, 00734 SystemTimeAdjustmentInformation = 28, 00735 SystemTimeAdjustment = 28, 00736 SystemSummaryMemoryInformation = 29, 00737 SystemNotImplemented7 = 29, 00738 SystemNextEventIdInformation = 30, 00739 SystemNotImplemented8 = 30, 00740 SystemEventIdsInformation = 31, 00741 SystemCrashDumpInformation = 32, 00742 SystemExceptionInformation = 33, 00743 SystemCrashDumpStateInformation = 34, 00744 SystemKernelDebuggerInformation = 35, 00745 SystemContextSwitchInformation = 36, 00746 SystemRegistryQuotaInformation = 37, 00747 SystemCurrentTimeZoneInformation = 44, 00748 SystemTimeZoneInformation = 44, 00749 SystemLookasideInformation = 45, 00750 SystemSetTimeSlipEvent = 46, 00751 SystemCreateSession = 47, 00752 SystemDeleteSession = 48, 00753 SystemInvalidInfoClass4 = 49, 00754 SystemRangeStartInformation = 50, 00755 SystemVerifierInformation = 51, 00756 SystemAddVerifier = 52, 00757 SystemSessionProcessesInformation = 53, 00758 SystemInformationClassMax 00759 } SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS; 00760 00761 typedef enum _TIMER_TYPE { 00762 NotificationTimer, 00763 SynchronizationTimer 00764 } TIMER_TYPE; 00765 00766 typedef enum _THREADINFOCLASS { 00767 ThreadBasicInformation, 00768 ThreadTimes, 00769 ThreadPriority, 00770 ThreadBasePriority, 00771 ThreadAffinityMask, 00772 ThreadImpersonationToken, 00773 ThreadDescriptorTableEntry, 00774 ThreadEnableAlignmentFaultFixup, 00775 ThreadEventPair_Reusable, 00776 ThreadQuerySetWin32StartAddress, 00777 ThreadZeroTlsCell, 00778 ThreadPerformanceCount, 00779 ThreadAmILastThread, 00780 ThreadIdealProcessor, 00781 ThreadPriorityBoost, 00782 ThreadSetTlsArrayAddress, 00783 ThreadIsIoPending, 00784 MaxThreadInfoClass 00785 } THREADINFOCLASS; 00786 00787 typedef struct _THREAD_BASIC_INFORMATION 00788 { 00789 NTSTATUS ExitStatus; 00790 PVOID TebBaseAddress; 00791 CLIENT_ID ClientId; 00792 ULONG_PTR AffinityMask; 00793 LONG Priority; 00794 LONG BasePriority; 00795 } THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION; 00796 00797 typedef struct _KERNEL_USER_TIMES { 00798 LARGE_INTEGER CreateTime; 00799 LARGE_INTEGER ExitTime; 00800 LARGE_INTEGER KernelTime; 00801 LARGE_INTEGER UserTime; 00802 } KERNEL_USER_TIMES, *PKERNEL_USER_TIMES; 00803 00804 typedef enum _WINSTATIONINFOCLASS { 00805 WinStationInformation = 8 00806 } WINSTATIONINFOCLASS; 00807 00808 typedef enum _MEMORY_INFORMATION_CLASS { 00809 MemoryBasicInformation, 00810 MemoryWorkingSetList, 00811 MemorySectionName, 00812 MemoryBasicVlmInformation 00813 } MEMORY_INFORMATION_CLASS; 00814 00815 typedef enum _MUTANT_INFORMATION_CLASS 00816 { 00817 MutantBasicInformation 00818 } MUTANT_INFORMATION_CLASS, *PMUTANT_INFORMATION_CLASS; 00819 00820 typedef struct _MUTANT_BASIC_INFORMATION { 00821 LONG CurrentCount; 00822 BOOLEAN OwnedByCaller; 00823 BOOLEAN AbandonedState; 00824 } MUTANT_BASIC_INFORMATION, *PMUTANT_BASIC_INFORMATION; 00825 00826 typedef enum _TIMER_INFORMATION_CLASS 00827 { 00828 TimerBasicInformation = 0 00829 } TIMER_INFORMATION_CLASS; 00830 00831 typedef struct _TIMER_BASIC_INFORMATION 00832 { 00833 LARGE_INTEGER RemainingTime; 00834 BOOLEAN TimerState; 00835 } TIMER_BASIC_INFORMATION, *PTIMER_BASIC_INFORMATION; 00836 00837 00838 /* return type of RtlDetermineDosPathNameType_U (FIXME: not the correct names) */ 00839 typedef enum 00840 { 00841 INVALID_PATH = 0, 00842 UNC_PATH, /* "//foo" */ 00843 ABSOLUTE_DRIVE_PATH, /* "c:/foo" */ 00844 RELATIVE_DRIVE_PATH, /* "c:foo" */ 00845 ABSOLUTE_PATH, /* "/foo" */ 00846 RELATIVE_PATH, /* "foo" */ 00847 DEVICE_PATH, /* "//./foo" */ 00848 UNC_DOT_PATH /* "//." */ 00849 } DOS_PATHNAME_TYPE; 00850 00851 /*********************************************************************** 00852 * IA64 specific types and data structures 00853 */ 00854 00855 #ifdef __ia64__ 00856 00857 typedef struct _FRAME_POINTERS { 00858 ULONGLONG MemoryStackFp; 00859 ULONGLONG BackingStoreFp; 00860 } FRAME_POINTERS, *PFRAME_POINTERS; 00861 00862 #define UNWIND_HISTORY_TABLE_SIZE 12 00863 00864 typedef struct _RUNTIME_FUNCTION { 00865 ULONG BeginAddress; 00866 ULONG EndAddress; 00867 ULONG UnwindInfoAddress; 00868 } RUNTIME_FUNCTION, *PRUNTIME_FUNCTION; 00869 00870 typedef struct _UNWIND_HISTORY_TABLE_ENTRY { 00871 ULONG64 ImageBase; 00872 ULONG64 Gp; 00873 PRUNTIME_FUNCTION FunctionEntry; 00874 } UNWIND_HISTORY_TABLE_ENTRY, *PUNWIND_HISTORY_TABLE_ENTRY; 00875 00876 typedef struct _UNWIND_HISTORY_TABLE { 00877 ULONG Count; 00878 UCHAR Search; 00879 ULONG64 LowAddress; 00880 ULONG64 HighAddress; 00881 UNWIND_HISTORY_TABLE_ENTRY Entry[UNWIND_HISTORY_TABLE_SIZE]; 00882 } UNWIND_HISTORY_TABLE, *PUNWIND_HISTORY_TABLE; 00883 00884 #endif /* defined(__ia64__) */ 00885 00886 /*********************************************************************** 00887 * Types and data structures 00888 */ 00889 00890 /* This is used by NtQuerySystemInformation */ 00891 typedef struct _SYSTEM_THREAD_INFORMATION 00892 { /* win32/win64 */ 00893 LARGE_INTEGER KernelTime; /* 00/00 */ 00894 LARGE_INTEGER UserTime; /* 08/08 */ 00895 LARGE_INTEGER CreateTime; /* 10/10 */ 00896 DWORD dwTickCount; /* 18/18 */ 00897 LPVOID StartAddress; /* 1c/20 */ 00898 CLIENT_ID ClientId; /* 20/28 */ 00899 DWORD dwCurrentPriority; /* 28/38 */ 00900 DWORD dwBasePriority; /* 2c/3c */ 00901 DWORD dwContextSwitches; /* 30/40 */ 00902 DWORD dwThreadState; /* 34/44 */ 00903 DWORD dwWaitReason; /* 38/48 */ 00904 DWORD dwUnknown; /* 3c/4c */ 00905 } SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION; 00906 00907 typedef struct _IO_STATUS_BLOCK { 00908 union { 00909 NTSTATUS Status; 00910 PVOID Pointer; 00911 } DUMMYUNIONNAME; 00912 00913 ULONG_PTR Information; 00914 } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK; 00915 00916 typedef void (WINAPI * PIO_APC_ROUTINE)(PVOID,PIO_STATUS_BLOCK,ULONG); 00917 00918 typedef struct _KEY_BASIC_INFORMATION { 00919 LARGE_INTEGER LastWriteTime; 00920 ULONG TitleIndex; 00921 ULONG NameLength; 00922 WCHAR Name[1]; 00923 } KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION; 00924 00925 typedef struct _KEY_NODE_INFORMATION 00926 { 00927 LARGE_INTEGER LastWriteTime; 00928 ULONG TitleIndex; 00929 ULONG ClassOffset; 00930 ULONG ClassLength; 00931 ULONG NameLength; 00932 WCHAR Name[1]; 00933 /* Class[1]; */ 00934 } KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION; 00935 00936 typedef struct _KEY_FULL_INFORMATION 00937 { 00938 LARGE_INTEGER LastWriteTime; 00939 ULONG TitleIndex; 00940 ULONG ClassOffset; 00941 ULONG ClassLength; 00942 ULONG SubKeys; 00943 ULONG MaxNameLen; 00944 ULONG MaxClassLen; 00945 ULONG Values; 00946 ULONG MaxValueNameLen; 00947 ULONG MaxValueDataLen; 00948 WCHAR Class[1]; 00949 } KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION; 00950 00951 typedef struct _KEY_VALUE_ENTRY 00952 { 00953 PUNICODE_STRING ValueName; 00954 ULONG DataLength; 00955 ULONG DataOffset; 00956 ULONG Type; 00957 } KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY; 00958 00959 typedef struct _KEY_VALUE_BASIC_INFORMATION { 00960 ULONG TitleIndex; 00961 ULONG Type; 00962 ULONG NameLength; 00963 WCHAR Name[1]; 00964 } KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION; 00965 00966 typedef struct _KEY_VALUE_FULL_INFORMATION { 00967 ULONG TitleIndex; 00968 ULONG Type; 00969 ULONG DataOffset; 00970 ULONG DataLength; 00971 ULONG NameLength; 00972 WCHAR Name[1]; 00973 } KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION; 00974 00975 typedef struct _KEY_VALUE_PARTIAL_INFORMATION { 00976 ULONG TitleIndex; 00977 ULONG Type; 00978 ULONG DataLength; 00979 UCHAR Data[1]; 00980 } KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION; 00981 00982 typedef struct _OBJECT_ATTRIBUTES { 00983 ULONG Length; 00984 HANDLE RootDirectory; 00985 PUNICODE_STRING ObjectName; 00986 ULONG Attributes; 00987 PVOID SecurityDescriptor; /* type SECURITY_DESCRIPTOR */ 00988 PVOID SecurityQualityOfService; /* type SECURITY_QUALITY_OF_SERVICE */ 00989 } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES; 00990 00991 typedef struct _OBJECT_DATA_INFORMATION { 00992 BOOLEAN InheritHandle; 00993 BOOLEAN ProtectFromClose; 00994 } OBJECT_DATA_INFORMATION, *POBJECT_DATA_INFORMATION; 00995 00996 typedef struct _OBJECT_BASIC_INFORMATION { 00997 ULONG Attributes; 00998 ACCESS_MASK GrantedAccess; 00999 ULONG HandleCount; 01000 ULONG PointerCount; 01001 ULONG PagedPoolUsage; 01002 ULONG NonPagedPoolUsage; 01003 ULONG Reserved[3]; 01004 ULONG NameInformationLength; 01005 ULONG TypeInformationLength; 01006 ULONG SecurityDescriptorLength; 01007 LARGE_INTEGER CreateTime; 01008 } OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION; 01009 01010 typedef struct _OBJECT_NAME_INFORMATION { 01011 UNICODE_STRING Name; 01012 } OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION; 01013 01014 typedef struct __OBJECT_TYPE_INFORMATION { 01015 UNICODE_STRING TypeName; 01016 ULONG Reserved [22]; 01017 } OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION; 01018 01019 typedef struct _PROCESS_BASIC_INFORMATION { 01020 #ifdef __WINESRC__ 01021 DWORD_PTR ExitStatus; 01022 PPEB PebBaseAddress; 01023 DWORD_PTR AffinityMask; 01024 DWORD_PTR BasePriority; 01025 ULONG_PTR UniqueProcessId; 01026 ULONG_PTR InheritedFromUniqueProcessId; 01027 #else 01028 PVOID Reserved1; 01029 PPEB PebBaseAddress; 01030 PVOID Reserved2[2]; 01031 ULONG_PTR UniqueProcessId; 01032 PVOID Reserved3; 01033 #endif 01034 } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION; 01035 01036 typedef struct _RTL_HEAP_DEFINITION { 01037 ULONG Length; /* = sizeof(RTL_HEAP_DEFINITION) */ 01038 01039 ULONG Unknown[11]; 01040 } RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION; 01041 01042 typedef struct _RTL_RWLOCK { 01043 RTL_CRITICAL_SECTION rtlCS; 01044 01045 HANDLE hSharedReleaseSemaphore; 01046 UINT uSharedWaiters; 01047 01048 HANDLE hExclusiveReleaseSemaphore; 01049 UINT uExclusiveWaiters; 01050 01051 INT iNumberActive; 01052 HANDLE hOwningThreadId; 01053 DWORD dwTimeoutBoost; 01054 PVOID pDebugInfo; 01055 } RTL_RWLOCK, *LPRTL_RWLOCK; 01056 01057 /* System Information Class 0x00 */ 01058 01059 typedef struct _SYSTEM_BASIC_INFORMATION { 01060 #ifdef __WINESRC__ 01061 DWORD dwUnknown1; 01062 ULONG uKeMaximumIncrement; 01063 ULONG uPageSize; 01064 ULONG uMmNumberOfPhysicalPages; 01065 ULONG uMmLowestPhysicalPage; 01066 ULONG uMmHighestPhysicalPage; 01067 ULONG uAllocationGranularity; 01068 PVOID pLowestUserAddress; 01069 PVOID pMmHighestUserAddress; 01070 ULONG uKeActiveProcessors; 01071 BYTE bKeNumberProcessors; 01072 BYTE bUnknown2; 01073 WORD wUnknown3; 01074 #else 01075 BYTE Reserved1[24]; 01076 PVOID Reserved2[4]; 01077 CCHAR NumberOfProcessors; 01078 #endif 01079 } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION; 01080 01081 /* System Information Class 0x01 */ 01082 01083 typedef struct _SYSTEM_CPU_INFORMATION { 01084 WORD Architecture; 01085 WORD Level; 01086 WORD Revision; /* combination of CPU model and stepping */ 01087 WORD Reserved; /* always zero */ 01088 DWORD FeatureSet; /* see bit flags below */ 01089 } SYSTEM_CPU_INFORMATION, *PSYSTEM_CPU_INFORMATION; 01090 01091 /* definitions of bits in the Feature set for the x86 processors */ 01092 #define CPU_FEATURE_VME 0x00000005 /* Virtual 86 Mode Extensions */ 01093 #define CPU_FEATURE_TSC 0x00000002 /* Time Stamp Counter available */ 01094 #define CPU_FEATURE_CMOV 0x00000008 /* Conditional Move instruction*/ 01095 #define CPU_FEATURE_PGE 0x00000014 /* Page table Entry Global bit */ 01096 #define CPU_FEATURE_PSE 0x00000024 /* Page Size Extension */ 01097 #define CPU_FEATURE_MTRR 0x00000040 /* Memory Type Range Registers */ 01098 #define CPU_FEATURE_CX8 0x00000080 /* Compare and eXchange 8 byte instr. */ 01099 #define CPU_FEATURE_MMX 0x00000100 /* Multi Media eXtensions */ 01100 #define CPU_FEATURE_X86 0x00000200 /* seems to be alway ON, on the '86 */ 01101 #define CPU_FEATURE_PAT 0x00000400 /* Page Attribute Table */ 01102 #define CPU_FEATURE_FXSR 0x00000800 /* FXSAVE and FXSTORE instructions */ 01103 #define CPU_FEATURE_SEP 0x00001000 /* SYSENTER and SYSEXIT instructions */ 01104 #define CPU_FEATURE_SSE 0x00002000 /* SSE extenstions (ext. MMX) */ 01105 #define CPU_FEATURE_3DNOW 0x00008000 /* 3DNOW instructions available 01106 (FIXME: needs to be confirmed) */ 01107 #define CPU_FEATURE_SSE2 0x00010000 /* SSE2 extensions (XMMI64) */ 01108 #define CPU_FEATURE_DS 0x00020000 /* Debug Store */ 01109 #define CPU_FEATURE_HTT 0x00040000 /* Hyper Threading Technology */ 01110 01111 /* System Information Class 0x02 */ 01112 01113 typedef struct _SYSTEM_PERFORMANCE_INFORMATION { 01114 BYTE Reserved1[312]; 01115 } SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION; 01116 01117 /* System Information Class 0x03 */ 01118 01119 typedef struct _SYSTEM_TIMEOFDAY_INFORMATION { 01120 #ifdef __WINESRC__ 01121 LARGE_INTEGER liKeBootTime; 01122 LARGE_INTEGER liKeSystemTime; 01123 LARGE_INTEGER liExpTimeZoneBias; 01124 ULONG uCurrentTimeZoneId; 01125 DWORD dwUnknown1[5]; 01126 #else 01127 BYTE Reserved1[48]; 01128 #endif 01129 } SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION; /* was SYSTEM_TIME_INFORMATION */ 01130 01131 /* System Information Class 0x08 */ 01132 01133 typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION { 01134 #ifdef __WINESRC__ 01135 LARGE_INTEGER liIdleTime; 01136 LARGE_INTEGER liKernelTime; 01137 LARGE_INTEGER liUserTime; 01138 DWORD dwSpare[5]; 01139 #else 01140 LARGE_INTEGER IdleTime; 01141 LARGE_INTEGER KernelTime; 01142 LARGE_INTEGER UserTime; 01143 LARGE_INTEGER Reserved1[2]; 01144 ULONG Reserved2; 01145 #endif 01146 } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION; 01147 01148 /* System Information Class 0x0b */ 01149 01150 typedef struct _SYSTEM_DRIVER_INFORMATION { 01151 PVOID pvAddress; 01152 DWORD dwUnknown1; 01153 DWORD dwUnknown2; 01154 DWORD dwEntryIndex; 01155 DWORD dwUnknown3; 01156 char szName[MAX_PATH + 1]; 01157 } SYSTEM_DRIVER_INFORMATION, *PSYSTEM_DRIVER_INFORMATION; 01158 01159 /* System Information Class 0x10 */ 01160 01161 typedef struct _SYSTEM_HANDLE_ENTRY { 01162 ULONG OwnerPid; 01163 BYTE ObjectType; 01164 BYTE HandleFlags; 01165 USHORT HandleValue; 01166 PVOID ObjectPointer; 01167 ULONG AccessMask; 01168 } SYSTEM_HANDLE_ENTRY, *PSYSTEM_HANDLE_ENTRY; 01169 01170 typedef struct _SYSTEM_HANDLE_INFORMATION { 01171 ULONG Count; 01172 SYSTEM_HANDLE_ENTRY Handle[1]; 01173 } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION; 01174 01175 /* System Information Class 0x15 */ 01176 01177 typedef struct _SYSTEM_CACHE_INFORMATION { 01178 ULONG CurrentSize; 01179 ULONG PeakSize; 01180 ULONG PageFaultCount; 01181 ULONG MinimumWorkingSet; 01182 ULONG MaximumWorkingSet; 01183 ULONG unused[4]; 01184 } SYSTEM_CACHE_INFORMATION, *PSYSTEM_CACHE_INFORMATION; 01185 01186 /* System Information Class 0x17 */ 01187 01188 typedef struct _SYSTEM_INTERRUPT_INFORMATION { 01189 BYTE Reserved1[24]; 01190 } SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION; 01191 01192 typedef struct _SYSTEM_CONFIGURATION_INFO { 01193 union { 01194 ULONG OemId; 01195 struct { 01196 WORD ProcessorArchitecture; 01197 WORD Reserved; 01198 } tag1; 01199 } tag2; 01200 ULONG PageSize; 01201 PVOID MinimumApplicationAddress; 01202 PVOID MaximumApplicationAddress; 01203 ULONG ActiveProcessorMask; 01204 ULONG NumberOfProcessors; 01205 ULONG ProcessorType; 01206 ULONG AllocationGranularity; 01207 WORD ProcessorLevel; 01208 WORD ProcessorRevision; 01209 } SYSTEM_CONFIGURATION_INFO, *PSYSTEM_CONFIGURATION_INFO; 01210 01211 typedef struct _SYSTEM_EXCEPTION_INFORMATION { 01212 BYTE Reserved1[16]; 01213 } SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION; 01214 01215 typedef struct _SYSTEM_LOOKASIDE_INFORMATION { 01216 BYTE Reserved1[32]; 01217 } SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION; 01218 01219 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION { 01220 BOOLEAN DebuggerEnabled; 01221 BOOLEAN DebuggerNotPresent; 01222 } SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION; 01223 01224 /* System Information Class 0x05 */ 01225 01226 typedef struct _VM_COUNTERS_ { 01227 SIZE_T PeakVirtualSize; 01228 SIZE_T VirtualSize; 01229 ULONG PageFaultCount; 01230 SIZE_T PeakWorkingSetSize; 01231 SIZE_T WorkingSetSize; 01232 SIZE_T QuotaPeakPagedPoolUsage; 01233 SIZE_T QuotaPagedPoolUsage; 01234 SIZE_T QuotaPeakNonPagedPoolUsage; 01235 SIZE_T QuotaNonPagedPoolUsage; 01236 SIZE_T PagefileUsage; 01237 SIZE_T PeakPagefileUsage; 01238 SIZE_T PrivatePageCount; 01239 } VM_COUNTERS, *PVM_COUNTERS; 01240 01241 typedef struct _SYSTEM_PROCESS_INFORMATION { 01242 #ifdef __WINESRC__ /* win32/win64 */ 01243 ULONG NextEntryOffset; /* 00/00 */ 01244 DWORD dwThreadCount; /* 04/04 */ 01245 DWORD dwUnknown1[6]; /* 08/08 */ 01246 LARGE_INTEGER CreationTime; /* 20/20 */ 01247 LARGE_INTEGER UserTime; /* 28/28 */ 01248 LARGE_INTEGER KernelTime; /* 30/30 */ 01249 UNICODE_STRING ProcessName; /* 38/38 */ 01250 DWORD dwBasePriority; /* 40/48 */ 01251 HANDLE UniqueProcessId; /* 44/50 */ 01252 HANDLE ParentProcessId; /* 48/58 */ 01253 ULONG HandleCount; /* 4c/60 */ 01254 DWORD dwUnknown3; /* 50/64 */ 01255 DWORD dwUnknown4; /* 54/68 */ 01256 VM_COUNTERS vmCounters; /* 58/70 */ 01257 IO_COUNTERS ioCounters; /* 88/d0 */ 01258 SYSTEM_THREAD_INFORMATION ti[1]; /* b8/100 */ 01259 #else 01260 ULONG NextEntryOffset; /* 00/00 */ 01261 BYTE Reserved1[52]; /* 04/04 */ 01262 PVOID Reserved2[3]; /* 38/38 */ 01263 HANDLE UniqueProcessId; /* 44/50 */ 01264 PVOID Reserved3; /* 48/58 */ 01265 ULONG HandleCount; /* 4c/60 */ 01266 BYTE Reserved4[4]; /* 50/64 */ 01267 PVOID Reserved5[11]; /* 54/68 */ 01268 SIZE_T PeakPagefileUsage; /* 80/c0 */ 01269 SIZE_T PrivatePageCount; /* 84/c8 */ 01270 LARGE_INTEGER Reserved6[6]; /* 88/d0 */ 01271 #endif 01272 } SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION; 01273 01274 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION { 01275 ULONG RegistryQuotaAllowed; 01276 ULONG RegistryQuotaUsed; 01277 PVOID Reserved1; 01278 } SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION; 01279 01280 typedef struct _SYSTEM_TIME_ADJUSTMENT { 01281 ULONG TimeAdjustment; 01282 BOOLEAN TimeAdjustmentDisabled; 01283 } SYSTEM_TIME_ADJUSTMENT, *PSYSTEM_TIME_ADJUSTMENT; 01284 01285 typedef struct _TIME_FIELDS 01286 { CSHORT Year; 01287 CSHORT Month; 01288 CSHORT Day; 01289 CSHORT Hour; 01290 CSHORT Minute; 01291 CSHORT Second; 01292 CSHORT Milliseconds; 01293 CSHORT Weekday; 01294 } TIME_FIELDS, *PTIME_FIELDS; 01295 01296 typedef struct _WINSTATIONINFORMATIONW { 01297 BYTE Reserved2[70]; 01298 ULONG LogonId; 01299 BYTE Reserved3[1140]; 01300 } WINSTATIONINFORMATIONW, *PWINSTATIONINFORMATIONW; 01301 01302 typedef BOOLEAN (WINAPI * PWINSTATIONQUERYINFORMATIONW)(HANDLE,ULONG,WINSTATIONINFOCLASS,PVOID,ULONG,PULONG); 01303 01304 typedef struct _LDR_RESOURCE_INFO 01305 { 01306 ULONG Type; 01307 ULONG Name; 01308 ULONG Language; 01309 } LDR_RESOURCE_INFO, *PLDR_RESOURCE_INFO; 01310 01311 01312 /* debug buffer definitions */ 01313 01314 typedef struct _DEBUG_BUFFER { 01315 HANDLE SectionHandle; 01316 PVOID SectionBase; 01317 PVOID RemoteSectionBase; 01318 ULONG SectionBaseDelta; 01319 HANDLE EventPairHandle; 01320 ULONG Unknown[2]; 01321 HANDLE RemoteThreadHandle; 01322 ULONG InfoClassMask; 01323 ULONG SizeOfInfo; 01324 ULONG AllocatedSize; 01325 ULONG SectionSize; 01326 PVOID ModuleInformation; 01327 PVOID BackTraceInformation; 01328 PVOID HeapInformation; 01329 PVOID LockInformation; 01330 PVOID Reserved[8]; 01331 } DEBUG_BUFFER, *PDEBUG_BUFFER; 01332 01333 #define PDI_MODULES 0x01 01334 #define PDI_BACKTRACE 0x02 01335 #define PDI_HEAPS 0x04 01336 #define PDI_HEAP_TAGS 0x08 01337 #define PDI_HEAP_BLOCKS 0x10 01338 #define PDI_LOCKS 0x20 01339 01340 typedef struct _DEBUG_MODULE_INFORMATION { 01341 ULONG Reserved[2]; 01342 ULONG Base; 01343 ULONG Size; 01344 ULONG Flags; 01345 USHORT Index; 01346 USHORT Unknown; 01347 USHORT LoadCount; 01348 USHORT ModuleNameOffset; 01349 CHAR ImageName[256]; 01350 } DEBUG_MODULE_INFORMATION, *PDEBUG_MODULE_INFORMATION; 01351 01352 typedef struct _DEBUG_HEAP_INFORMATION { 01353 ULONG Base; 01354 ULONG Flags; 01355 USHORT Granularity; 01356 USHORT Unknown; 01357 ULONG Allocated; 01358 ULONG Committed; 01359 ULONG TagCount; 01360 ULONG BlockCount; 01361 ULONG Reserved[7]; 01362 PVOID Tags; 01363 PVOID Blocks; 01364 } DEBUG_HEAP_INFORMATION, *PDEBUG_HEAP_INFORMATION; 01365 01366 typedef struct _DEBUG_LOCK_INFORMATION { 01367 PVOID Address; 01368 USHORT Type; 01369 USHORT CreatorBackTraceIndex; 01370 ULONG OwnerThreadId; 01371 ULONG ActiveCount; 01372 ULONG ContentionCount; 01373 ULONG EntryCount; 01374 ULONG RecursionCount; 01375 ULONG NumberOfSharedWaiters; 01376 ULONG NumberOfExclusiveWaiters; 01377 } DEBUG_LOCK_INFORMATION, *PDEBUG_LOCK_INFORMATION; 01378 01379 typedef struct _PORT_MESSAGE_HEADER { 01380 USHORT DataSize; 01381 USHORT MessageSize; 01382 USHORT MessageType; 01383 USHORT VirtualRangesOffset; 01384 CLIENT_ID ClientId; 01385 ULONG MessageId; 01386 ULONG SectionSize; 01387 } PORT_MESSAGE_HEADER, *PPORT_MESSAGE_HEADER, PORT_MESSAGE, *PPORT_MESSAGE; 01388 01389 typedef unsigned short RTL_ATOM, *PRTL_ATOM; 01390 01391 /* Wine doesn't implement atom table as NT does: 01392 * - in NT, atom tables are user space tables, which ntdll directly accesses 01393 * - on Wine, (even local) atom tables are wineserver object, hence a HANDLE 01394 */ 01395 typedef struct atom_table *RTL_ATOM_TABLE, **PRTL_ATOM_TABLE; 01396 01397 typedef enum _ATOM_INFORMATION_CLASS { 01398 AtomBasicInformation = 0, 01399 AtomTableInformation = 1, 01400 } ATOM_INFORMATION_CLASS; 01401 01402 typedef struct _ATOM_BASIC_INFORMATION { 01403 USHORT ReferenceCount; 01404 USHORT Pinned; 01405 USHORT NameLength; 01406 WCHAR Name[1]; 01407 } ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION; 01408 01409 /* FIXME: names probably not correct */ 01410 typedef struct _RTL_HANDLE 01411 { 01412 struct _RTL_HANDLE * Next; 01413 } RTL_HANDLE; 01414 01415 /* FIXME: names probably not correct */ 01416 typedef struct _RTL_HANDLE_TABLE 01417 { 01418 ULONG MaxHandleCount; /* 0x00 */ 01419 ULONG HandleSize; /* 0x04 */ 01420 ULONG Unused[2]; /* 0x08-0x0c */ 01421 PVOID NextFree; /* 0x10 */ 01422 PVOID FirstHandle; /* 0x14 */ 01423 PVOID ReservedMemory; /* 0x18 */ 01424 PVOID MaxHandle; /* 0x1c */ 01425 } RTL_HANDLE_TABLE; 01426 01427 /*********************************************************************** 01428 * Defines 01429 */ 01430 01431 /* flags for NtCreateFile and NtOpenFile */ 01432 #define FILE_DIRECTORY_FILE 0x00000001 01433 #define FILE_WRITE_THROUGH 0x00000002 01434 #define FILE_SEQUENTIAL_ONLY 0x00000004 01435 #define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008 01436 #define FILE_SYNCHRONOUS_IO_ALERT 0x00000010 01437 #define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020 01438 #define FILE_NON_DIRECTORY_FILE 0x00000040 01439 #define FILE_CREATE_TREE_CONNECTION 0x00000080 01440 #define FILE_COMPLETE_IF_OPLOCKED 0x00000100 01441 #define FILE_NO_EA_KNOWLEDGE 0x00000200 01442 #define FILE_OPEN_REMOTE_INSTANCE 0x00000400 01443 #define FILE_RANDOM_ACCESS 0x00000800 01444 #define FILE_DELETE_ON_CLOSE 0x00001000 01445 #define FILE_OPEN_BY_FILE_ID 0x00002000 01446 #define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000 01447 #define FILE_NO_COMPRESSION 0x00008000 01448 #define FILE_RESERVE_OPFILTER 0x00100000 01449 #define FILE_TRANSACTED_MODE 0x00200000 01450 #define FILE_OPEN_OFFLINE_FILE 0x00400000 01451 #define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000 01452 01453 #define FILE_ATTRIBUTE_VALID_FLAGS 0x00007fb7 01454 #define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7 01455 01456 /* status for NtCreateFile or NtOpenFile */ 01457 #define FILE_SUPERSEDED 0 01458 #define FILE_OPENED 1 01459 #define FILE_CREATED 2 01460 #define FILE_OVERWRITTEN 3 01461 #define FILE_EXISTS 4 01462 #define FILE_DOES_NOT_EXIST 5 01463 01464 /* disposition for NtCreateFile */ 01465 #define FILE_SUPERSEDE 0 01466 #define FILE_OPEN 1 01467 #define FILE_CREATE 2 01468 #define FILE_OPEN_IF 3 01469 #define FILE_OVERWRITE 4 01470 #define FILE_OVERWRITE_IF 5 01471 #define FILE_MAXIMUM_DISPOSITION 5 01472 01473 /* Characteristics of a File System */ 01474 #define FILE_REMOVABLE_MEDIA 0x00000001 01475 #define FILE_READ_ONLY_DEVICE 0x00000002 01476 #define FILE_FLOPPY_DISKETTE 0x00000004 01477 #define FILE_WRITE_ONE_MEDIA 0x00000008 01478 #define FILE_REMOTE_DEVICE 0x00000010 01479 #define FILE_DEVICE_IS_MOUNTED 0x00000020 01480 #define FILE_VIRTUAL_VOLUME 0x00000040 01481 #define FILE_AUTOGENERATED_DEVICE_NAME 0x00000080 01482 #define FILE_DEVICE_SECURE_OPEN 0x00000100 01483 01484 /* options for NtCreateNamedPipeFile */ 01485 #define FILE_PIPE_INBOUND 0x00000000 01486 #define FILE_PIPE_OUTBOUND 0x00000001 01487 #define FILE_PIPE_FULL_DUPLEX 0x00000002 01488 01489 #if (_WIN32_WINNT >= 0x0501) 01490 #define INTERNAL_TS_ACTIVE_CONSOLE_ID ( *((volatile ULONG*)(0x7ffe02d8)) ) 01491 #endif /* (_WIN32_WINNT >= 0x0501) */ 01492 01493 #define LOGONID_CURRENT ((ULONG)-1) 01494 01495 #define OBJ_INHERIT 0x00000002L 01496 #define OBJ_PERMANENT 0x00000010L 01497 #define OBJ_EXCLUSIVE 0x00000020L 01498 #define OBJ_CASE_INSENSITIVE 0x00000040L 01499 #define OBJ_OPENIF 0x00000080L 01500 #define OBJ_OPENLINK 0x00000100L 01501 #define OBJ_KERNEL_HANDLE 0x00000200L 01502 #define OBJ_VALID_ATTRIBUTES 0x000003F2L 01503 01504 #define SERVERNAME_CURRENT ((HANDLE)NULL) 01505 01506 typedef void (CALLBACK *PNTAPCFUNC)(ULONG_PTR,ULONG_PTR,ULONG_PTR); /* FIXME: not the right name */ 01507 typedef void (CALLBACK *PRTL_THREAD_START_ROUTINE)(LPVOID); /* FIXME: not the right name */ 01508 01509 01510 /* DbgPrintEx default levels */ 01511 #define DPFLTR_ERROR_LEVEL 0 01512 #define DPFLTR_WARNING_LEVEL 1 01513 #define DPFLTR_TRACE_LEVEL 2 01514 #define DPFLTR_INFO_LEVEL 3 01515 #define DPFLTR_MASK 0x8000000 01516 01517 /* Well-known LUID values */ 01518 #define SE_MIN_WELL_KNOWN_PRIVILEGE 2L 01519 #define SE_CREATE_TOKEN_PRIVILEGE 2L 01520 #define SE_ASSIGNPRIMARYTOKEN_PRIVILEGE 3L 01521 #define SE_LOCK_MEMORY_PRIVILEGE 4L 01522 #define SE_INCREASE_QUOTA_PRIVILEGE 5L 01523 #define SE_UNSOLICITED_INPUT_PRIVILEGE 6L /* obsolete */ 01524 #define SE_MACHINE_ACCOUNT_PRIVILEGE 6L 01525 #define SE_TCB_PRIVILEGE 7L 01526 #define SE_SECURITY_PRIVILEGE 8L 01527 #define SE_TAKE_OWNERSHIP_PRIVILEGE 9L 01528 #define SE_LOAD_DRIVER_PRIVILEGE 10L 01529 #define SE_SYSTEM_PROFILE_PRIVILEGE 11L 01530 #define SE_SYSTEMTIME_PRIVILEGE 12L 01531 #define SE_PROF_SINGLE_PROCESS_PRIVILEGE 13L 01532 #define SE_INC_BASE_PRIORITY_PRIVILEGE 14L 01533 #define SE_CREATE_PAGEFILE_PRIVILEGE 15L 01534 #define SE_CREATE_PERMANENT_PRIVILEGE 16L 01535 #define SE_BACKUP_PRIVILEGE 17L 01536 #define SE_RESTORE_PRIVILEGE 18L 01537 #define SE_SHUTDOWN_PRIVILEGE 19L 01538 #define SE_DEBUG_PRIVILEGE 20L 01539 #define SE_AUDIT_PRIVILEGE 21L 01540 #define SE_SYSTEM_ENVIRONMENT_PRIVILEGE 22L 01541 #define SE_CHANGE_NOTIFY_PRIVILLEGE 23L 01542 #define SE_REMOTE_SHUTDOWN_PRIVILEGE 24L 01543 #define SE_UNDOCK_PRIVILEGE 25L 01544 #define SE_SYNC_AGENT_PRIVILEGE 26L 01545 #define SE_ENABLE_DELEGATION_PRIVILEGE 27L 01546 #define SE_MANAGE_VOLUME_PRIVILEGE 28L 01547 #define SE_IMPERSONATE_PRIVILEGE 29L 01548 #define SE_CREATE_GLOBAL_PRIVILEGE 30L 01549 #define SE_MAX_WELL_KNOWN_PRIVILEGE SE_CREATE_GLOBAL_PRIVILEGE 01550 01551 /* NtGlobalFlag bits */ 01552 #define FLG_STOP_ON_EXCEPTION 0x00000001 01553 #define FLG_SHOW_LDR_SNAPS 0x00000002 01554 #define FLG_DEBUG_INITIAL_COMMAND 0x00000004 01555 #define FLG_STOP_ON_HUNG_GUI 0x00000008 01556 #define FLG_HEAP_ENABLE_TAIL_CHECK 0x00000010 01557 #define FLG_HEAP_ENABLE_FREE_CHECK 0x00000020 01558 #define FLG_HEAP_VALIDATE_PARAMETERS 0x00000040 01559 #define FLG_HEAP_VALIDATE_ALL 0x00000080 01560 #define FLG_APPLICATION_VERIFIER 0x00000100 01561 #define FLG_POOL_ENABLE_TAGGING 0x00000400 01562 #define FLG_HEAP_ENABLE_TAGGING 0x00000800 01563 #define FLG_USER_STACK_TRACE_DB 0x00001000 01564 #define FLG_KERNEL_STACK_TRACE_DB 0x00002000 01565 #define FLG_MAINTAIN_OBJECT_TYPELIST 0x00004000 01566 #define FLG_HEAP_ENABLE_TAG_BY_DLL 0x00008000 01567 #define FLG_DISABLE_STACK_EXTENSION 0x00010000 01568 #define FLG_ENABLE_CSRDEBUG 0x00020000 01569 #define FLG_ENABLE_KDEBUG_SYMBOL_LOAD 0x00040000 01570 #define FLG_DISABLE_PAGE_KERNEL_STACKS 0x00080000 01571 #define FLG_ENABLE_SYSTEM_CRIT_BREAKS 0x00100000 01572 #define FLG_HEAP_DISABLE_COALESCING 0x00200000 01573 #define FLG_ENABLE_CLOSE_EXCEPTIONS 0x00400000 01574 #define FLG_ENABLE_EXCEPTION_LOGGING 0x00800000 01575 #define FLG_ENABLE_HANDLE_TYPE_TAGGING 0x01000000 01576 #define FLG_HEAP_PAGE_ALLOCS 0x02000000 01577 #define FLG_DEBUG_INITIAL_COMMAND_EX 0x04000000 01578 #define FLG_DISABLE_DBGPRINT 0x08000000 01579 #define FLG_CRITSEC_EVENT_CREATION 0x10000000 01580 #define FLG_LDR_TOP_DOWN 0x20000000 01581 #define FLG_ENABLE_HANDLE_EXCEPTIONS 0x40000000 01582 #define FLG_DISABLE_PROTDLLS 0x80000000 01583 01584 /* Rtl*Registry* functions structs and defines */ 01585 #define RTL_REGISTRY_ABSOLUTE 0 01586 #define RTL_REGISTRY_SERVICES 1 01587 #define RTL_REGISTRY_CONTROL 2 01588 #define RTL_REGISTRY_WINDOWS_NT 3 01589 #define RTL_REGISTRY_DEVICEMAP 4 01590 #define RTL_REGISTRY_USER 5 01591 01592 #define RTL_REGISTRY_HANDLE 0x40000000 01593 #define RTL_REGISTRY_OPTIONAL 0x80000000 01594 01595 #define RTL_QUERY_REGISTRY_SUBKEY 0x00000001 01596 #define RTL_QUERY_REGISTRY_TOPKEY 0x00000002 01597 #define RTL_QUERY_REGISTRY_REQUIRED 0x00000004 01598 #define RTL_QUERY_REGISTRY_NOVALUE 0x00000008 01599 #define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010 01600 #define RTL_QUERY_REGISTRY_DIRECT 0x00000020 01601 #define RTL_QUERY_REGISTRY_DELETE 0x00000040 01602 01603 typedef NTSTATUS (WINAPI *PRTL_QUERY_REGISTRY_ROUTINE)( PCWSTR ValueName, 01604 ULONG ValueType, 01605 PVOID ValueData, 01606 ULONG ValueLength, 01607 PVOID Context, 01608 PVOID EntryContext); 01609 01610 typedef struct _RTL_QUERY_REGISTRY_TABLE 01611 { 01612 PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine; 01613 ULONG Flags; 01614 PWSTR Name; 01615 PVOID EntryContext; 01616 ULONG DefaultType; 01617 PVOID DefaultData; 01618 ULONG DefaultLength; 01619 } RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE; 01620 01621 typedef struct _KEY_MULTIPLE_VALUE_INFORMATION 01622 { 01623 PUNICODE_STRING ValueName; 01624 ULONG DataLength; 01625 ULONG DataOffset; 01626 ULONG Type; 01627 } KEY_MULTIPLE_VALUE_INFORMATION, *PKEY_MULTIPLE_VALUE_INFORMATION; 01628 01629 typedef VOID (CALLBACK *PTIMER_APC_ROUTINE) ( PVOID, ULONG, LONG ); 01630 01631 typedef enum _EVENT_TYPE { 01632 NotificationEvent, 01633 SynchronizationEvent 01634 } EVENT_TYPE, *PEVENT_TYPE; 01635 01636 typedef enum _EVENT_INFORMATION_CLASS { 01637 EventBasicInformation 01638 } EVENT_INFORMATION_CLASS, *PEVENT_INFORMATION_CLASS; 01639 01640 typedef struct _EVENT_BASIC_INFORMATION { 01641 EVENT_TYPE EventType; 01642 LONG EventState; 01643 } EVENT_BASIC_INFORMATION, *PEVENT_BASIC_INFORMATION; 01644 01645 typedef enum _SEMAPHORE_INFORMATION_CLASS { 01646 SemaphoreBasicInformation 01647 } SEMAPHORE_INFORMATION_CLASS, *PSEMAPHORE_INFORMATION_CLASS; 01648 01649 typedef struct _SEMAPHORE_BASIC_INFORMATION { 01650 ULONG CurrentCount; 01651 ULONG MaximumCount; 01652 } SEMAPHORE_BASIC_INFORMATION, *PSEMAPHORE_BASIC_INFORMATION; 01653 01654 typedef enum _SECTION_INFORMATION_CLASS 01655 { 01656 SectionBasicInformation, 01657 SectionImageInformation, 01658 } SECTION_INFORMATION_CLASS; 01659 01660 typedef struct _SECTION_BASIC_INFORMATION { 01661 ULONG BaseAddress; 01662 ULONG Attributes; 01663 LARGE_INTEGER Size; 01664 } SECTION_BASIC_INFORMATION, *PSECTION_BASIC_INFORMATION; 01665 01666 typedef struct _SECTION_IMAGE_INFORMATION { 01667 PVOID EntryPoint; 01668 ULONG StackZeroBits; 01669 ULONG StackReserved; 01670 ULONG StackCommit; 01671 ULONG ImageSubsystem; 01672 WORD SubsystemVersionLow; 01673 WORD SubsystemVersionHigh; 01674 ULONG Unknown1; 01675 ULONG ImageCharacteristics; 01676 ULONG ImageMachineType; 01677 ULONG Unknown2[3]; 01678 } SECTION_IMAGE_INFORMATION, *PSECTION_IMAGE_INFORMATION; 01679 01680 typedef struct _LPC_SECTION_WRITE { 01681 ULONG Length; 01682 HANDLE SectionHandle; 01683 ULONG SectionOffset; 01684 ULONG ViewSize; 01685 PVOID ViewBase; 01686 PVOID TargetViewBase; 01687 } LPC_SECTION_WRITE, *PLPC_SECTION_WRITE; 01688 01689 typedef struct _LPC_SECTION_READ { 01690 ULONG Length; 01691 ULONG ViewSize; 01692 PVOID ViewBase; 01693 } LPC_SECTION_READ, *PLPC_SECTION_READ; 01694 01695 typedef struct _LPC_MESSAGE { 01696 USHORT DataSize; 01697 USHORT MessageSize; 01698 USHORT MessageType; 01699 USHORT VirtualRangesOffset; 01700 CLIENT_ID ClientId; 01701 ULONG MessageId; 01702 ULONG SectionSize; 01703 UCHAR Data[ANYSIZE_ARRAY]; 01704 } LPC_MESSAGE, *PLPC_MESSAGE; 01705 01706 typedef enum _SHUTDOWN_ACTION { 01707 ShutdownNoReboot, 01708 ShutdownReboot, 01709 ShutdownPowerOff 01710 } SHUTDOWN_ACTION, *PSHUTDOWN_ACTION; 01711 01712 typedef enum _KPROFILE_SOURCE { 01713 ProfileTime, 01714 ProfileAlignmentFixup, 01715 ProfileTotalIssues, 01716 ProfilePipelineDry, 01717 ProfileLoadInstructions, 01718 ProfilePipelineFrozen, 01719 ProfileBranchInstructions, 01720 ProfileTotalNonissues, 01721 ProfileDcacheMisses, 01722 ProfileIcacheMisses, 01723 ProfileCacheMisses, 01724 ProfileBranchMispredictions, 01725 ProfileStoreInstructions, 01726 ProfileFpInstructions, 01727 ProfileIntegerInstructions, 01728 Profile2Issue, 01729 Profile3Issue, 01730 Profile4Issue, 01731 ProfileSpecialInstructions, 01732 ProfileTotalCycles, 01733 ProfileIcacheIssues, 01734 ProfileDcacheAccesses, 01735 ProfileMemoryBarrierCycles, 01736 ProfileLoadLinkedIssues, 01737 ProfileMaximum 01738 } KPROFILE_SOURCE, *PKPROFILE_SOURCE; 01739 01740 typedef struct _OBJDIR_INFORMATION { 01741 UNICODE_STRING ObjectName; 01742 UNICODE_STRING ObjectTypeName; 01743 BYTE Data[1]; 01744 } OBJDIR_INFORMATION, *POBJDIR_INFORMATION; 01745 01746 typedef struct _INITIAL_TEB { 01747 PVOID StackBase; 01748 PVOID StackLimit; 01749 PVOID StackCommit; 01750 PVOID StackCommitMax; 01751 PVOID StackReserved; 01752 } INITIAL_TEB, *PINITIAL_TEB; 01753 01754 typedef enum _PORT_INFORMATION_CLASS { 01755 PortNoInformation 01756 } PORT_INFORMATION_CLASS, *PPORT_INFORMATION_CLASS; 01757 01758 typedef enum _IO_COMPLETION_INFORMATION_CLASS { 01759 IoCompletionBasicInformation 01760 } IO_COMPLETION_INFORMATION_CLASS, *PIO_COMPLETION_INFORMATION_CLASS; 01761 01762 typedef struct _FILE_COMPLETION_INFORMATION { 01763 HANDLE CompletionPort; 01764 ULONG_PTR CompletionKey; 01765 } FILE_COMPLETION_INFORMATION, *PFILE_COMPLETION_INFORMATION; 01766 01767 typedef enum _HARDERROR_RESPONSE_OPTION { 01768 OptionAbortRetryIgnore, 01769 OptionOk, 01770 OptionOkCancel, 01771 OptionRetryCancel, 01772 OptionYesNo, 01773 OptionYesNoCancel, 01774 OptionShutdownSystem 01775 } HARDERROR_RESPONSE_OPTION, *PHARDERROR_RESPONSE_OPTION; 01776 01777 typedef enum _HARDERROR_RESPONSE { 01778 ResponseReturnToCaller, 01779 ResponseNotHandled, 01780 ResponseAbort, 01781 ResponseCancel, 01782 ResponseIgnore, 01783 ResponseNo, 01784 ResponseOk, 01785 ResponseRetry, 01786 ResponseYes 01787 } HARDERROR_RESPONSE, *PHARDERROR_RESPONSE; 01788 01789 typedef enum _SYSDBG_COMMAND { 01790 SysDbgQueryModuleInformation, 01791 SysDbgQueryTraceInformation, 01792 SysDbgSetTracepoint, 01793 SysDbgSetSpecialCall, 01794 SysDbgClearSpecialCalls, 01795 SysDbgQuerySpecialCalls 01796 } SYSDBG_COMMAND, *PSYSDBG_COMMAND; 01797 01798 /*********************************************************************** 01799 * Function declarations 01800 */ 01801 01802 #if defined(__i386__) && defined(__GNUC__) 01803 static inline void WINAPI DbgBreakPoint(void) { __asm__ __volatile__("int3"); } 01804 static inline void WINAPI DbgUserBreakPoint(void) { __asm__ __volatile__("int3"); } 01805 #else /* __i386__ && __GNUC__ */ 01806 void WINAPI DbgBreakPoint(void); 01807 void WINAPI DbgUserBreakPoint(void); 01808 #endif /* __i386__ && __GNUC__ */ 01809 //NTSTATUS WINAPIV DbgPrint(LPCSTR fmt, ...); 01810 NTSTATUS WINAPIV DbgPrintEx(ULONG iComponentId, ULONG Level, LPCSTR fmt, ...); 01811 01812 NTSTATUS WINAPI LdrAccessResource(HMODULE,const IMAGE_RESOURCE_DATA_ENTRY*,void**,PULONG); 01813 NTSTATUS WINAPI LdrFindResourceDirectory_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DIRECTORY**); 01814 NTSTATUS WINAPI LdrFindResource_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DATA_ENTRY**); 01815 NTSTATUS WINAPI LdrGetDllHandle(ULONG, ULONG, const UNICODE_STRING*, HMODULE*); 01816 NTSTATUS WINAPI LdrGetDllHandleEx(ULONG,PWSTR,PULONG,PUNICODE_STRING,PVOID); 01817 NTSTATUS WINAPI LdrGetProcedureAddress(HMODULE, const ANSI_STRING*, ULONG, void**); 01818 void WINAPI LdrInitializeThunk(HANDLE,ULONG,ULONG,ULONG); 01819 NTSTATUS WINAPI LdrLoadDll(LPCWSTR, DWORD, const UNICODE_STRING*, HMODULE*); 01820 void WINAPI LdrShutdownProcess(void); 01821 void WINAPI LdrShutdownThread(void); 01822 NTSTATUS WINAPI NtAcceptConnectPort(PHANDLE,ULONG,PLPC_MESSAGE,BOOLEAN,PLPC_SECTION_WRITE,PLPC_SECTION_READ); 01823 NTSTATUS WINAPI NtAccessCheck(PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,PGENERIC_MAPPING,PPRIVILEGE_SET,PULONG,PULONG,NTSTATUS*); 01824 NTSTATUS WINAPI NtAccessCheckAndAuditAlarm(PUNICODE_STRING,HANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,ACCESS_MASK,PGENERIC_MAPPING,BOOLEAN,PULONG,PULONG,PBOOLEAN); 01825 NTSTATUS WINAPI NtAddAtom(const WCHAR*,ULONG,RTL_ATOM*); 01826 NTSTATUS WINAPI NtAdjustGroupsToken(HANDLE,BOOLEAN,PTOKEN_GROUPS,ULONG,PTOKEN_GROUPS,PULONG); 01827 NTSTATUS WINAPI NtAdjustPrivilegesToken(HANDLE,BOOLEAN,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD); 01828 NTSTATUS WINAPI NtAlertResumeThread(HANDLE,PULONG); 01829 NTSTATUS WINAPI NtAlertThread(HANDLE ThreadHandle); 01830 NTSTATUS WINAPI NtAllocateLocallyUniqueId(PLUID lpLuid); 01831 NTSTATUS WINAPI NtAllocateUuids(PULARGE_INTEGER,PULONG,PULONG); 01832 NTSTATUS WINAPI NtAllocateVirtualMemory(HANDLE,PVOID*,ULONG,SIZE_T*,ULONG,ULONG); 01833 NTSTATUS WINAPI NtCallbackReturn(PVOID,ULONG,NTSTATUS); 01834 NTSTATUS WINAPI NtCancelIoFile(HANDLE,PIO_STATUS_BLOCK); 01835 NTSTATUS WINAPI NtCancelTimer(HANDLE, BOOLEAN*); 01836 NTSTATUS WINAPI NtClearEvent(HANDLE); 01837 NTSTATUS WINAPI NtClose(HANDLE); 01838 NTSTATUS WINAPI NtCloseObjectAuditAlarm(PUNICODE_STRING,HANDLE,BOOLEAN); 01839 NTSTATUS WINAPI NtCompleteConnectPort(HANDLE); 01840 NTSTATUS WINAPI NtConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PLPC_SECTION_READ,PULONG,PVOID,PULONG); 01841 NTSTATUS WINAPI NtContinue(PCONTEXT,BOOLEAN); 01842 NTSTATUS WINAPI NtCreateDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES); 01843 NTSTATUS WINAPI NtCreateEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *,BOOLEAN,BOOLEAN); 01844 NTSTATUS WINAPI NtCreateEventPair(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES); 01845 NTSTATUS WINAPI NtCreateFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,PLARGE_INTEGER,ULONG,ULONG,ULONG,ULONG,PVOID,ULONG); 01846 NTSTATUS WINAPI NtCreateIoCompletion(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,ULONG); 01847 NTSTATUS WINAPI NtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG); 01848 NTSTATUS WINAPI NtCreateMailslotFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,PLARGE_INTEGER); 01849 NTSTATUS WINAPI NtCreateMutant(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,BOOLEAN); 01850 NTSTATUS WINAPI NtCreateNamedPipeFile(PHANDLE,ULONG,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,PLARGE_INTEGER); 01851 NTSTATUS WINAPI NtCreatePagingFile(PUNICODE_STRING,PLARGE_INTEGER,PLARGE_INTEGER,PLARGE_INTEGER); 01852 NTSTATUS WINAPI NtCreatePort(PHANDLE,POBJECT_ATTRIBUTES,ULONG,ULONG,PULONG); 01853 NTSTATUS WINAPI NtCreateProcess(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,HANDLE,BOOLEAN,HANDLE,HANDLE,HANDLE); 01854 //NTSTATUS WINAPI NtCreateProfile(PHANDLE,HANDLE,PVOID,ULONG,ULONG,PVOID,ULONG,KPROFILE_SOURCE,KAFFINITY); 01855 NTSTATUS WINAPI NtCreateSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const LARGE_INTEGER*,ULONG,ULONG,HANDLE); 01856 NTSTATUS WINAPI NtCreateSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,LONG,LONG); 01857 NTSTATUS WINAPI NtCreateSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PUNICODE_STRING); 01858 NTSTATUS WINAPI NtCreateThread(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,HANDLE,PCLIENT_ID,PCONTEXT,PINITIAL_TEB,BOOLEAN); 01859 NTSTATUS WINAPI NtCreateTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*, TIMER_TYPE); 01860 NTSTATUS WINAPI NtCreateToken(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,TOKEN_TYPE,PLUID,PLARGE_INTEGER,PTOKEN_USER,PTOKEN_GROUPS,PTOKEN_PRIVILEGES,PTOKEN_OWNER,PTOKEN_PRIMARY_GROUP,PTOKEN_DEFAULT_DACL,PTOKEN_SOURCE); 01861 NTSTATUS WINAPI NtDelayExecution(BOOLEAN,const LARGE_INTEGER*); 01862 NTSTATUS WINAPI NtDeleteAtom(RTL_ATOM); 01863 NTSTATUS WINAPI NtDeleteFile(POBJECT_ATTRIBUTES); 01864 NTSTATUS WINAPI NtDeleteKey(HANDLE); 01865 NTSTATUS WINAPI NtDeleteValueKey(HANDLE,const UNICODE_STRING *); 01866 NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG); 01867 NTSTATUS WINAPI NtDisplayString(PUNICODE_STRING); 01868 NTSTATUS WINAPI NtDuplicateObject(HANDLE,HANDLE,HANDLE,PHANDLE,ACCESS_MASK,ULONG,ULONG); 01869 NTSTATUS WINAPI NtDuplicateToken(HANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,PHANDLE); 01870 NTSTATUS WINAPI NtEnumerateKey(HANDLE,ULONG,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *); 01871 NTSTATUS WINAPI NtEnumerateValueKey(HANDLE,ULONG,KEY_VALUE_INFORMATION_CLASS,PVOID,ULONG,PULONG); 01872 NTSTATUS WINAPI NtExtendSection(HANDLE,PLARGE_INTEGER); 01873 NTSTATUS WINAPI NtFindAtom(const WCHAR*,ULONG,RTL_ATOM*); 01874 NTSTATUS WINAPI NtFlushBuffersFile(HANDLE,IO_STATUS_BLOCK*); 01875 NTSTATUS WINAPI NtFlushInstructionCache(HANDLE,LPCVOID,SIZE_T); 01876 NTSTATUS WINAPI NtFlushKey(HANDLE); 01877 NTSTATUS WINAPI NtFlushVirtualMemory(HANDLE,LPCVOID*,SIZE_T*,PIO_STATUS_BLOCK); 01878 NTSTATUS WINAPI NtFlushWriteBuffer(VOID); 01879 NTSTATUS WINAPI NtFreeVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG); 01880 NTSTATUS WINAPI NtFsControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG); 01881 NTSTATUS WINAPI NtGetContextThread(HANDLE,CONTEXT*); 01882 NTSTATUS WINAPI NtGetPlugPlayEvent(ULONG,ULONG,PVOID,ULONG); 01883 ULONG WINAPI NtGetTickCount(VOID); 01884 NTSTATUS WINAPI NtImpersonateAnonymousToken(HANDLE); 01885 NTSTATUS WINAPI NtImpersonateClientOfPort(HANDLE,PPORT_MESSAGE); 01886 NTSTATUS WINAPI NtImpersonateThread(HANDLE,HANDLE,PSECURITY_QUALITY_OF_SERVICE); 01887 NTSTATUS WINAPI NtInitializeRegistry(BOOLEAN); 01888 NTSTATUS WINAPI NtInitiatePowerAction(POWER_ACTION,SYSTEM_POWER_STATE,ULONG,BOOLEAN); 01889 NTSTATUS WINAPI NtListenPort(HANDLE,PLPC_MESSAGE); 01890 NTSTATUS WINAPI NtLoadDriver(const UNICODE_STRING *); 01891 NTSTATUS WINAPI NtLoadKey(const OBJECT_ATTRIBUTES *,OBJECT_ATTRIBUTES *); 01892 NTSTATUS WINAPI NtLockFile(HANDLE,HANDLE,PIO_APC_ROUTINE,void*,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,ULONG*,BOOLEAN,BOOLEAN); 01893 NTSTATUS WINAPI NtLockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG); 01894 NTSTATUS WINAPI NtMakeTemporaryObject(HANDLE); 01895 NTSTATUS WINAPI NtMapViewOfSection(HANDLE,HANDLE,PVOID*,ULONG,SIZE_T,const LARGE_INTEGER*,SIZE_T*,SECTION_INHERIT,ULONG,ULONG); 01896 NTSTATUS WINAPI NtNotifyChangeDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,ULONG,BOOLEAN); 01897 NTSTATUS WINAPI NtNotifyChangeKey(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN); 01898 NTSTATUS WINAPI NtOpenDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES); 01899 NTSTATUS WINAPI NtOpenEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *); 01900 NTSTATUS WINAPI NtOpenEventPair(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES); 01901 NTSTATUS WINAPI NtOpenFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG); 01902 NTSTATUS WINAPI NtOpenIoCompletion(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES); 01903 NTSTATUS WINAPI NtOpenKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *); 01904 NTSTATUS WINAPI NtOpenMutant(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*); 01905 NTSTATUS WINAPI NtOpenObjectAuditAlarm(PUNICODE_STRING,PHANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,ACCESS_MASK,PPRIVILEGE_SET,BOOLEAN,BOOLEAN,PBOOLEAN); 01906 NTSTATUS WINAPI NtOpenProcess(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*); 01907 NTSTATUS WINAPI NtOpenProcessToken(HANDLE,DWORD,HANDLE *); 01908 NTSTATUS WINAPI NtOpenSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*); 01909 NTSTATUS WINAPI NtOpenSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*); 01910 NTSTATUS WINAPI NtOpenSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES); 01911 NTSTATUS WINAPI NtOpenThread(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,const CLIENT_ID*); 01912 NTSTATUS WINAPI NtOpenThreadToken(HANDLE,DWORD,BOOLEAN,HANDLE *); 01913 NTSTATUS WINAPI NtOpenTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*); 01914 NTSTATUS WINAPI NtPowerInformation(POWER_INFORMATION_LEVEL,PVOID,ULONG,PVOID,ULONG); 01915 NTSTATUS WINAPI NtPrivilegeCheck(HANDLE,PPRIVILEGE_SET,PBOOLEAN); 01916 NTSTATUS WINAPI NtPrivilegeObjectAuditAlarm(PUNICODE_STRING,HANDLE,HANDLE,ULONG,PPRIVILEGE_SET,BOOLEAN); 01917 NTSTATUS WINAPI NtPrivilegedServiceAuditAlarm(PUNICODE_STRING,PUNICODE_STRING,HANDLE,PPRIVILEGE_SET,BOOLEAN); 01918 NTSTATUS WINAPI NtProtectVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG,ULONG*); 01919 NTSTATUS WINAPI NtPulseEvent(HANDLE,PULONG); 01920 NTSTATUS WINAPI NtQueueApcThread(HANDLE,PNTAPCFUNC,ULONG_PTR,ULONG_PTR,ULONG_PTR); 01921 NTSTATUS WINAPI NtQueryAttributesFile(const OBJECT_ATTRIBUTES*,FILE_BASIC_INFORMATION*); 01922 NTSTATUS WINAPI NtQueryDefaultLocale(BOOLEAN,LCID*); 01923 NTSTATUS WINAPI NtQueryDefaultUILanguage(LANGID*); 01924 NTSTATUS WINAPI NtQueryDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS,BOOLEAN,PUNICODE_STRING,BOOLEAN); 01925 NTSTATUS WINAPI NtQueryDirectoryObject(HANDLE,POBJDIR_INFORMATION,ULONG,BOOLEAN,BOOLEAN,PULONG,PULONG); 01926 NTSTATUS WINAPI NtQueryEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,BOOLEAN,PVOID,ULONG,PVOID,BOOLEAN); 01927 NTSTATUS WINAPI NtQueryEvent(HANDLE,EVENT_INFORMATION_CLASS,PVOID,ULONG,PULONG); 01928 NTSTATUS WINAPI NtQueryFullAttributesFile(const OBJECT_ATTRIBUTES*,FILE_NETWORK_OPEN_INFORMATION*); 01929 NTSTATUS WINAPI NtQueryInformationAtom(RTL_ATOM,ATOM_INFORMATION_CLASS,RTL_ATOM_TABLE,ULONG,ULONG*); 01930 NTSTATUS WINAPI NtQueryInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,LONG,FILE_INFORMATION_CLASS); 01931 NTSTATUS WINAPI NtQueryInformationPort(HANDLE,PORT_INFORMATION_CLASS,PVOID,ULONG,PULONG); 01932 NTSTATUS WINAPI NtQueryInformationProcess(HANDLE,PROCESSINFOCLASS,PVOID,ULONG,PULONG); 01933 NTSTATUS WINAPI NtQueryInformationThread(HANDLE,THREADINFOCLASS,PVOID,ULONG,PULONG); 01934 NTSTATUS WINAPI NtQueryInformationToken(HANDLE,DWORD,LPVOID,DWORD,LPDWORD); 01935 NTSTATUS WINAPI NtQueryInstallUILanguage(LANGID*); 01936 NTSTATUS WINAPI NtQueryIntervalProfile(KPROFILE_SOURCE,PULONG); 01937 NTSTATUS WINAPI NtQueryIoCompletion(HANDLE,IO_COMPLETION_INFORMATION_CLASS,PVOID,ULONG,PULONG); 01938 NTSTATUS WINAPI NtQueryKey(HANDLE,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *); 01939 NTSTATUS WINAPI NtQueryMultipleValueKey(HANDLE,PKEY_MULTIPLE_VALUE_INFORMATION,ULONG,PVOID,ULONG,PULONG); 01940 NTSTATUS WINAPI NtQueryMutant(HANDLE,MUTANT_INFORMATION_CLASS,PVOID,ULONG,PULONG); 01941 NTSTATUS WINAPI NtQueryObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG, PULONG); 01942 NTSTATUS WINAPI NtQueryOpenSubKeys(POBJECT_ATTRIBUTES,PULONG); 01943 NTSTATUS WINAPI NtQueryPerformanceCounter(PLARGE_INTEGER, PLARGE_INTEGER); 01944 NTSTATUS WINAPI NtQuerySecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,ULONG,PULONG); 01945 NTSTATUS WINAPI NtQuerySection(HANDLE,SECTION_INFORMATION_CLASS,PVOID,ULONG,PULONG); 01946 NTSTATUS WINAPI NtQuerySemaphore(HANDLE,SEMAPHORE_INFORMATION_CLASS,PVOID,ULONG,PULONG); 01947 NTSTATUS WINAPI NtQuerySymbolicLinkObject(HANDLE,PUNICODE_STRING,PULONG); 01948 NTSTATUS WINAPI NtQuerySystemEnvironmentValue(PUNICODE_STRING,PWCHAR,ULONG,PULONG); 01949 NTSTATUS WINAPI NtQuerySystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG,PULONG); 01950 NTSTATUS WINAPI NtQuerySystemTime(PLARGE_INTEGER); 01951 NTSTATUS WINAPI NtQueryTimer(HANDLE,TIMER_INFORMATION_CLASS,PVOID,ULONG,PULONG); 01952 NTSTATUS WINAPI NtQueryTimerResolution(PULONG,PULONG,PULONG); 01953 NTSTATUS WINAPI NtQueryValueKey(HANDLE,const UNICODE_STRING *,KEY_VALUE_INFORMATION_CLASS,void *,DWORD,DWORD *); 01954 NTSTATUS WINAPI NtQueryVirtualMemory(HANDLE,LPCVOID,MEMORY_INFORMATION_CLASS,PVOID,SIZE_T,SIZE_T*); 01955 NTSTATUS WINAPI NtQueryVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS); 01956 void WINAPI NtRaiseException(PEXCEPTION_RECORD,PCONTEXT,BOOL); 01957 NTSTATUS WINAPI NtRaiseHardError(NTSTATUS,ULONG,PUNICODE_STRING,PVOID*,HARDERROR_RESPONSE_OPTION,PHARDERROR_RESPONSE); 01958 NTSTATUS WINAPI NtReadFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,PLARGE_INTEGER,PULONG); 01959 NTSTATUS WINAPI NtReadFileScatter(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,FILE_SEGMENT_ELEMENT,ULONG,PLARGE_INTEGER,PULONG); 01960 NTSTATUS WINAPI NtReadRequestData(HANDLE,PLPC_MESSAGE,ULONG,PVOID,ULONG,PULONG); 01961 NTSTATUS WINAPI NtReadVirtualMemory(HANDLE,const void*,void*,SIZE_T,SIZE_T*); 01962 NTSTATUS WINAPI NtRegisterThreadTerminatePort(HANDLE); 01963 NTSTATUS WINAPI NtReleaseMutant(HANDLE,PLONG); 01964 NTSTATUS WINAPI NtReleaseSemaphore(HANDLE,ULONG,PULONG); 01965 NTSTATUS WINAPI NtRemoveIoCompletion(HANDLE,PULONG,PULONG,PIO_STATUS_BLOCK,PLARGE_INTEGER); 01966 NTSTATUS WINAPI NtReplaceKey(POBJECT_ATTRIBUTES,HANDLE,POBJECT_ATTRIBUTES); 01967 NTSTATUS WINAPI NtReplyPort(HANDLE,PLPC_MESSAGE); 01968 NTSTATUS WINAPI NtReplyWaitReceivePort(HANDLE,PULONG,PLPC_MESSAGE,PLPC_MESSAGE); 01969 NTSTATUS WINAPI NtReplyWaitReceivePortEx(HANDLE,PVOID*,PPORT_MESSAGE,PPORT_MESSAGE,PLARGE_INTEGER); 01970 NTSTATUS WINAPI NtReplyWaitReplyPort(HANDLE,PLPC_MESSAGE); 01971 NTSTATUS WINAPI NtRequestPort(HANDLE,PLPC_MESSAGE); 01972 NTSTATUS WINAPI NtRequestWaitReplyPort(HANDLE,PLPC_MESSAGE,PLPC_MESSAGE); 01973 NTSTATUS WINAPI NtResetEvent(HANDLE,PULONG); 01974 NTSTATUS WINAPI NtRestoreKey(HANDLE,HANDLE,ULONG); 01975 NTSTATUS WINAPI NtResumeThread(HANDLE,PULONG); 01976 NTSTATUS WINAPI NtSaveKey(HANDLE,HANDLE); 01977 NTSTATUS WINAPI NtSecureConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PSID,PLPC_SECTION_READ,PULONG,PVOID,PULONG); 01978 NTSTATUS WINAPI NtSetContextThread(HANDLE,const CONTEXT*); 01979 NTSTATUS WINAPI NtSetDefaultHardErrorPort(HANDLE); 01980 NTSTATUS WINAPI NtSetDefaultLocale(BOOLEAN,LCID); 01981 NTSTATUS WINAPI NtSetDefaultUILanguage(LANGID); 01982 NTSTATUS WINAPI NtSetEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG); 01983 NTSTATUS WINAPI NtSetEvent(HANDLE,PULONG); 01984 NTSTATUS WINAPI NtSetHighEventPair(HANDLE); 01985 NTSTATUS WINAPI NtSetHighWaitLowEventPair(HANDLE); 01986 NTSTATUS WINAPI NtSetHighWaitLowThread(VOID); 01987 NTSTATUS WINAPI NtSetInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS); 01988 NTSTATUS WINAPI NtSetInformationKey(HANDLE,const int,PVOID,ULONG); 01989 NTSTATUS WINAPI NtSetInformationObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG); 01990 NTSTATUS WINAPI NtSetInformationProcess(HANDLE,PROCESS_INFORMATION_CLASS,PVOID,ULONG); 01991 NTSTATUS WINAPI NtSetInformationThread(HANDLE,THREADINFOCLASS,LPCVOID,ULONG); 01992 NTSTATUS WINAPI NtSetInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG); 01993 NTSTATUS WINAPI NtSetIntervalProfile(ULONG,KPROFILE_SOURCE); 01994 NTSTATUS WINAPI NtSetIoCompletion(HANDLE,ULONG,ULONG,NTSTATUS,ULONG); 01995 NTSTATUS WINAPI NtSetLdtEntries(ULONG,LDT_ENTRY,ULONG,LDT_ENTRY); 01996 NTSTATUS WINAPI NtSetLowEventPair(HANDLE); 01997 NTSTATUS WINAPI NtSetLowWaitHighEventPair(HANDLE); 01998 NTSTATUS WINAPI NtSetLowWaitHighThread(VOID); 01999 NTSTATUS WINAPI NtSetSecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR); 02000 NTSTATUS WINAPI NtSetSystemEnvironmentValue(PUNICODE_STRING,PUNICODE_STRING); 02001 NTSTATUS WINAPI NtSetSystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG); 02002 NTSTATUS WINAPI NtSetSystemPowerState(POWER_ACTION,SYSTEM_POWER_STATE,ULONG); 02003 NTSTATUS WINAPI NtSetSystemTime(const LARGE_INTEGER*,LARGE_INTEGER*); 02004 NTSTATUS WINAPI NtSetTimer(HANDLE, const LARGE_INTEGER*, PTIMER_APC_ROUTINE, PVOID, BOOLEAN, ULONG, BOOLEAN*); 02005 NTSTATUS WINAPI NtSetTimerResolution(ULONG,BOOLEAN,PULONG); 02006 NTSTATUS WINAPI NtSetValueKey(HANDLE,const UNICODE_STRING *,ULONG,ULONG,const void *,ULONG); 02007 NTSTATUS WINAPI NtSetVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS); 02008 NTSTATUS WINAPI NtSignalAndWaitForSingleObject(HANDLE,HANDLE,BOOLEAN,const LARGE_INTEGER*); 02009 NTSTATUS WINAPI NtShutdownSystem(SHUTDOWN_ACTION); 02010 NTSTATUS WINAPI NtStartProfile(HANDLE); 02011 NTSTATUS WINAPI NtStopProfile(HANDLE); 02012 NTSTATUS WINAPI NtSuspendThread(HANDLE,PULONG); 02013 NTSTATUS WINAPI NtSystemDebugControl(SYSDBG_COMMAND,PVOID,ULONG,PVOID,ULONG,PULONG); 02014 NTSTATUS WINAPI NtTerminateProcess(HANDLE,LONG); 02015 NTSTATUS WINAPI NtTerminateThread(HANDLE,LONG); 02016 NTSTATUS WINAPI NtTestAlert(VOID); 02017 NTSTATUS WINAPI NtUnloadDriver(const UNICODE_STRING *); 02018 NTSTATUS WINAPI NtUnloadKey(HANDLE); 02019 NTSTATUS WINAPI NtUnloadKeyEx(POBJECT_ATTRIBUTES,HANDLE); 02020 NTSTATUS WINAPI NtUnlockFile(HANDLE,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,PULONG); 02021 NTSTATUS WINAPI NtUnlockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG); 02022 NTSTATUS WINAPI NtUnmapViewOfSection(HANDLE,PVOID); 02023 NTSTATUS WINAPI NtVdmControl(ULONG,PVOID); 02024 NTSTATUS WINAPI NtWaitForSingleObject(HANDLE,BOOLEAN,const LARGE_INTEGER*); 02025 NTSTATUS WINAPI NtWaitForMultipleObjects(ULONG,const HANDLE*,BOOLEAN,BOOLEAN,const LARGE_INTEGER*); 02026 NTSTATUS WINAPI NtWaitHighEventPair(HANDLE); 02027 NTSTATUS WINAPI NtWaitLowEventPair(HANDLE); 02028 NTSTATUS WINAPI NtWriteFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,const void*,ULONG,PLARGE_INTEGER,PULONG); 02029 NTSTATUS WINAPI NtWriteFileGather(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,FILE_SEGMENT_ELEMENT,ULONG,PLARGE_INTEGER,PULONG); 02030 NTSTATUS WINAPI NtWriteRequestData(HANDLE,PLPC_MESSAGE,ULONG,PVOID,ULONG,PULONG); 02031 NTSTATUS WINAPI NtWriteVirtualMemory(HANDLE,void*,const void*,SIZE_T,SIZE_T*); 02032 NTSTATUS WINAPI NtYieldExecution(void); 02033 02034 void WINAPI RtlAcquirePebLock(void); 02035 BYTE WINAPI RtlAcquireResourceExclusive(LPRTL_RWLOCK,BYTE); 02036 BYTE WINAPI RtlAcquireResourceShared(LPRTL_RWLOCK,BYTE); 02037 NTSTATUS WINAPI RtlAddAce(PACL,DWORD,DWORD,PACE_HEADER,DWORD); 02038 NTSTATUS WINAPI RtlAddAccessAllowedAce(PACL,DWORD,DWORD,PSID); 02039 NTSTATUS WINAPI RtlAddAccessAllowedAceEx(PACL,DWORD,DWORD,DWORD,PSID); 02040 NTSTATUS WINAPI RtlAddAccessDeniedAce(PACL,DWORD,DWORD,PSID); 02041 NTSTATUS WINAPI RtlAddAccessDeniedAceEx(PACL,DWORD,DWORD,DWORD,PSID); 02042 NTSTATUS WINAPI RtlAddAtomToAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*); 02043 NTSTATUS WINAPI RtlAddAuditAccessAce(PACL,DWORD,DWORD,PSID,BOOL,BOOL); 02044 PVOID WINAPI RtlAddVectoredExceptionHandler(ULONG,PVECTORED_EXCEPTION_HANDLER); 02045 NTSTATUS WINAPI RtlAdjustPrivilege(ULONG,BOOLEAN,BOOLEAN,PBOOLEAN); 02046 NTSTATUS WINAPI RtlAllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PSID *); 02047 RTL_HANDLE * WINAPI RtlAllocateHandle(RTL_HANDLE_TABLE *,ULONG *); 02048 PVOID WINAPI RtlAllocateHeap(HANDLE,ULONG,SIZE_T); 02049 WCHAR WINAPI RtlAnsiCharToUnicodeChar(LPSTR *); 02050 DWORD WINAPI RtlAnsiStringToUnicodeSize(const STRING *); 02051 NTSTATUS WINAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING,PCANSI_STRING,BOOLEAN); 02052 NTSTATUS WINAPI RtlAppendAsciizToString(STRING *,LPCSTR); 02053 NTSTATUS WINAPI RtlAppendStringToString(STRING *,const STRING *); 02054 NTSTATUS WINAPI RtlAppendUnicodeStringToString(UNICODE_STRING *,const UNICODE_STRING *); 02055 NTSTATUS WINAPI RtlAppendUnicodeToString(UNICODE_STRING *,LPCWSTR); 02056 BOOLEAN WINAPI RtlAreAllAccessesGranted(ACCESS_MASK,ACCESS_MASK); 02057 BOOLEAN WINAPI RtlAreAnyAccessesGranted(ACCESS_MASK,ACCESS_MASK); 02058 BOOLEAN WINAPI RtlAreBitsSet(PCRTL_BITMAP,ULONG,ULONG); 02059 BOOLEAN WINAPI RtlAreBitsClear(PCRTL_BITMAP,ULONG,ULONG); 02060 02061 NTSTATUS WINAPI RtlCharToInteger(PCSZ,ULONG,PULONG); 02062 NTSTATUS WINAPI RtlCheckRegistryKey(ULONG, PWSTR); 02063 void WINAPI RtlClearAllBits(PRTL_BITMAP); 02064 void WINAPI RtlClearBits(PRTL_BITMAP,ULONG,ULONG); 02065 PDEBUG_BUFFER WINAPI RtlCreateQueryDebugBuffer(ULONG,BOOLEAN); 02066 ULONG WINAPI RtlCompactHeap(HANDLE,ULONG); 02067 LONG WINAPI RtlCompareString(const STRING*,const STRING*,BOOLEAN); 02068 LONG WINAPI RtlCompareUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN); 02069 DWORD WINAPI RtlComputeCrc32(DWORD,PBYTE,INT); 02070 NTSTATUS WINAPI RtlConvertSidToUnicodeString(PUNICODE_STRING,PSID,BOOLEAN); 02071 LONGLONG WINAPI RtlConvertLongToLargeInteger(LONG); 02072 ULONGLONG WINAPI RtlConvertUlongToLargeInteger(ULONG); 02073 void WINAPI RtlCopyLuid(PLUID,const LUID*); 02074 void WINAPI RtlCopyLuidAndAttributesArray(ULONG,const LUID_AND_ATTRIBUTES*,PLUID_AND_ATTRIBUTES); 02075 BOOLEAN WINAPI RtlCopySid(DWORD,PSID,PSID); 02076 NTSTATUS WINAPI RtlCopySecurityDescriptor(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR); 02077 void WINAPI RtlCopyString(STRING*,const STRING*); 02078 void WINAPI RtlCopyUnicodeString(UNICODE_STRING*,const UNICODE_STRING*); 02079 NTSTATUS WINAPI RtlCreateAcl(PACL,DWORD,DWORD); 02080 NTSTATUS WINAPI RtlCreateAtomTable(ULONG,RTL_ATOM_TABLE*); 02081 NTSTATUS WINAPI RtlCreateEnvironment(BOOLEAN, PWSTR*); 02082 HANDLE WINAPI RtlCreateHeap(ULONG,PVOID,SIZE_T,SIZE_T,PVOID,PRTL_HEAP_DEFINITION); 02083 NTSTATUS WINAPI RtlCreateProcessParameters(RTL_USER_PROCESS_PARAMETERS**,const UNICODE_STRING*, 02084 const UNICODE_STRING*,const UNICODE_STRING*, 02085 const UNICODE_STRING*,PWSTR,const UNICODE_STRING*, 02086 const UNICODE_STRING*,const UNICODE_STRING*, 02087 const UNICODE_STRING*); 02088 NTSTATUS WINAPI RtlCreateSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD); 02089 BOOLEAN WINAPI RtlCreateUnicodeString(PUNICODE_STRING,LPCWSTR); 02090 BOOLEAN WINAPI RtlCreateUnicodeStringFromAsciiz(PUNICODE_STRING,LPCSTR); 02091 NTSTATUS WINAPI RtlCreateUserThread(HANDLE,const SECURITY_DESCRIPTOR*,BOOLEAN,PVOID,SIZE_T,SIZE_T,PRTL_THREAD_START_ROUTINE,void*,HANDLE*,CLIENT_ID*); 02092 02093 NTSTATUS WINAPI RtlDeleteAce(PACL,DWORD); 02094 NTSTATUS WINAPI RtlDeleteAtomFromAtomTable(RTL_ATOM_TABLE,RTL_ATOM); 02095 NTSTATUS WINAPI RtlDeleteCriticalSection(RTL_CRITICAL_SECTION *); 02096 NTSTATUS WINAPI RtlDeleteRegistryValue(ULONG, PCWSTR, PCWSTR); 02097 void WINAPI RtlDeleteResource(LPRTL_RWLOCK); 02098 DWORD WINAPI RtlDeleteSecurityObject(DWORD); 02099 PRTL_USER_PROCESS_PARAMETERS WINAPI RtlDeNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*); 02100 NTSTATUS WINAPI RtlDestroyAtomTable(RTL_ATOM_TABLE); 02101 NTSTATUS WINAPI RtlDestroyEnvironment(PWSTR); 02102 NTSTATUS WINAPI RtlDestroyHandleTable(RTL_HANDLE_TABLE *); 02103 HANDLE WINAPI RtlDestroyHeap(HANDLE); 02104 void WINAPI RtlDestroyProcessParameters(RTL_USER_PROCESS_PARAMETERS*); 02105 NTSTATUS WINAPI RtlDestroyQueryDebugBuffer(PDEBUG_BUFFER); 02106 DOS_PATHNAME_TYPE WINAPI RtlDetermineDosPathNameType_U(PCWSTR); 02107 BOOLEAN WINAPI RtlDoesFileExists_U(LPCWSTR); 02108 BOOLEAN WINAPI RtlDosPathNameToNtPathName_U(PCWSTR,PUNICODE_STRING,PCWSTR*,CURDIR*); 02109 ULONG WINAPI RtlDosSearchPath_U(LPCWSTR, LPCWSTR, LPCWSTR, ULONG, LPWSTR, LPWSTR*); 02110 WCHAR WINAPI RtlDowncaseUnicodeChar(WCHAR); 02111 NTSTATUS WINAPI RtlDowncaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN); 02112 void WINAPI RtlDumpResource(LPRTL_RWLOCK); 02113 NTSTATUS WINAPI RtlDuplicateUnicodeString(int,const UNICODE_STRING*,UNICODE_STRING*); 02114 02115 NTSTATUS WINAPI RtlEmptyAtomTable(RTL_ATOM_TABLE,BOOLEAN); 02116 LONGLONG WINAPI RtlEnlargedIntegerMultiply(INT,INT); 02117 ULONGLONG WINAPI RtlEnlargedUnsignedMultiply(UINT,UINT); 02118 UINT WINAPI RtlEnlargedUnsignedDivide(ULONGLONG,UINT,UINT *); 02119 NTSTATUS WINAPI RtlEnterCriticalSection(RTL_CRITICAL_SECTION *); 02120 void WINAPI RtlEraseUnicodeString(UNICODE_STRING*); 02121 NTSTATUS WINAPI RtlEqualComputerName(const UNICODE_STRING*,const UNICODE_STRING*); 02122 NTSTATUS WINAPI RtlEqualDomainName(const UNICODE_STRING*,const UNICODE_STRING*); 02123 BOOLEAN WINAPI RtlEqualLuid(const LUID*,const LUID*); 02124 BOOL WINAPI RtlEqualPrefixSid(PSID,PSID); 02125 BOOL WINAPI RtlEqualSid(PSID,PSID); 02126 BOOLEAN WINAPI RtlEqualString(const STRING*,const STRING*,BOOLEAN); 02127 BOOLEAN WINAPI RtlEqualUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN); 02128 DECLSPEC_NORETURN void WINAPI RtlExitUserThread(ULONG); 02129 NTSTATUS WINAPI RtlExpandEnvironmentStrings_U(PWSTR, const UNICODE_STRING*, UNICODE_STRING*, ULONG*); 02130 LONGLONG WINAPI RtlExtendedMagicDivide(LONGLONG,LONGLONG,INT); 02131 LONGLONG WINAPI RtlExtendedIntegerMultiply(LONGLONG,INT); 02132 LONGLONG WINAPI RtlExtendedLargeIntegerDivide(LONGLONG,INT,INT *); 02133 02134 NTSTATUS WINAPI RtlFindCharInUnicodeString(int,const UNICODE_STRING*,const UNICODE_STRING*,USHORT*); 02135 ULONG WINAPI RtlFindClearBits(PCRTL_BITMAP,ULONG,ULONG); 02136 ULONG WINAPI RtlFindClearBitsAndSet(PRTL_BITMAP,ULONG,ULONG); 02137 ULONG WINAPI RtlFindClearRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN); 02138 ULONG WINAPI RtlFindLastBackwardRunSet(PCRTL_BITMAP,ULONG,PULONG); 02139 ULONG WINAPI RtlFindLastBackwardRunClear(PCRTL_BITMAP,ULONG,PULONG); 02140 CCHAR WINAPI RtlFindLeastSignificantBit(ULONGLONG); 02141 ULONG WINAPI RtlFindLongestRunSet(PCRTL_BITMAP,PULONG); 02142 ULONG WINAPI RtlFindLongestRunClear(PCRTL_BITMAP,PULONG); 02143 NTSTATUS WINAPI RtlFindMessage(HMODULE,ULONG,ULONG,ULONG,const MESSAGE_RESOURCE_ENTRY**); 02144 CCHAR WINAPI RtlFindMostSignificantBit(ULONGLONG); 02145 ULONG WINAPI RtlFindNextForwardRunSet(PCRTL_BITMAP,ULONG,PULONG); 02146 ULONG WINAPI RtlFindNextForwardRunClear(PCRTL_BITMAP,ULONG,PULONG); 02147 ULONG WINAPI RtlFindSetBits(PCRTL_BITMAP,ULONG,ULONG); 02148 ULONG WINAPI RtlFindSetBitsAndClear(PRTL_BITMAP,ULONG,ULONG); 02149 ULONG WINAPI RtlFindSetRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN); 02150 BOOLEAN WINAPI RtlFirstFreeAce(PACL,PACE_HEADER *); 02151 NTSTATUS WINAPI RtlFormatCurrentUserKeyPath(PUNICODE_STRING); 02152 NTSTATUS WINAPI RtlFormatMessage(LPWSTR,UCHAR,BOOLEAN,BOOLEAN,BOOLEAN,va_list *,LPWSTR,ULONG); 02153 void WINAPI RtlFreeAnsiString(PANSI_STRING); 02154 BOOLEAN WINAPI RtlFreeHandle(RTL_HANDLE_TABLE *,RTL_HANDLE *); 02155 BOOLEAN WINAPI RtlFreeHeap(HANDLE,ULONG,PVOID); 02156 void WINAPI RtlFreeOemString(POEM_STRING); 02157 DWORD WINAPI RtlFreeSid(PSID); 02158 void WINAPI RtlFreeUnicodeString(PUNICODE_STRING); 02159 02160 NTSTATUS WINAPI RtlGetAce(PACL,DWORD,LPVOID *); 02161 NTSTATUS WINAPI RtlGetControlSecurityDescriptor(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL,LPDWORD); 02162 NTSTATUS WINAPI RtlGetCurrentDirectory_U(ULONG, LPWSTR); 02163 PEB * WINAPI RtlGetCurrentPeb(void); 02164 NTSTATUS WINAPI RtlGetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN); 02165 ULONG WINAPI RtlGetFullPathName_U(PCWSTR,ULONG,PWSTR,PWSTR*); 02166 NTSTATUS WINAPI RtlGetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN); 02167 NTSTATUS WINAPI RtlGetLastNtStatus(void); 02168 DWORD WINAPI RtlGetLastWin32Error(void); 02169 DWORD WINAPI RtlGetLongestNtPathLength(void); 02170 BOOLEAN WINAPI RtlGetNtProductType(LPDWORD); 02171 NTSTATUS WINAPI RtlGetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN); 02172 ULONG WINAPI RtlGetProcessHeaps(ULONG,HANDLE*); 02173 NTSTATUS WINAPI RtlGetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN); 02174 //NTSTATUS WINAPI RtlGetVersion(RTL_OSVERSIONINFOEXW*); 02175 NTSTATUS WINAPI RtlGUIDFromString(PUNICODE_STRING,GUID*); 02176 02177 PSID_IDENTIFIER_AUTHORITY WINAPI RtlIdentifierAuthoritySid(PSID); 02178 PVOID WINAPI RtlImageDirectoryEntryToData(HMODULE,BOOL,WORD,ULONG *); 02179 PIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE); 02180 PIMAGE_SECTION_HEADER WINAPI RtlImageRvaToSection(const IMAGE_NT_HEADERS *,HMODULE,DWORD); 02181 PVOID WINAPI RtlImageRvaToVa(const IMAGE_NT_HEADERS *,HMODULE,DWORD,IMAGE_SECTION_HEADER **); 02182 NTSTATUS WINAPI RtlImpersonateSelf(SECURITY_IMPERSONATION_LEVEL); 02183 void WINAPI RtlInitString(PSTRING,PCSZ); 02184 void WINAPI RtlInitAnsiString(PANSI_STRING,PCSZ); 02185 void WINAPI RtlInitUnicodeString(PUNICODE_STRING,PCWSTR); 02186 NTSTATUS WINAPI RtlInitUnicodeStringEx(PUNICODE_STRING,PCWSTR); 02187 NTSTATUS WINAPI RtlInitializeCriticalSection(RTL_CRITICAL_SECTION *); 02188 NTSTATUS WINAPI RtlInitializeCriticalSectionAndSpinCount(RTL_CRITICAL_SECTION *,DWORD); 02189 void WINAPI RtlInitializeBitMap(PRTL_BITMAP,PULONG,ULONG); 02190 void WINAPI RtlInitializeHandleTable(ULONG,ULONG,RTL_HANDLE_TABLE *); 02191 void WINAPI RtlInitializeResource(LPRTL_RWLOCK); 02192 BOOL WINAPI RtlInitializeSid(PSID,PSID_IDENTIFIER_AUTHORITY,BYTE); 02193 02194 NTSTATUS WINAPI RtlInt64ToUnicodeString(ULONGLONG,ULONG,UNICODE_STRING *); 02195 NTSTATUS WINAPI RtlIntegerToChar(ULONG,ULONG,ULONG,PCHAR); 02196 NTSTATUS WINAPI RtlIntegerToUnicodeString(ULONG,ULONG,UNICODE_STRING *); 02197 ULONG WINAPI RtlIsDosDeviceName_U(PCWSTR); 02198 BOOLEAN WINAPI RtlIsNameLegalDOS8Dot3(const UNICODE_STRING*,POEM_STRING,PBOOLEAN); 02199 BOOLEAN WINAPI RtlIsTextUnicode(LPCVOID,INT,INT *); 02200 BOOLEAN WINAPI RtlIsValidHandle(const RTL_HANDLE_TABLE *, const RTL_HANDLE *); 02201 BOOLEAN WINAPI RtlIsValidIndexHandle(const RTL_HANDLE_TABLE *, ULONG Index, RTL_HANDLE **); 02202 02203 LONGLONG WINAPI RtlLargeIntegerAdd(LONGLONG,LONGLONG); 02204 LONGLONG WINAPI RtlLargeIntegerArithmeticShift(LONGLONG,INT); 02205 ULONGLONG WINAPI RtlLargeIntegerDivide( ULONGLONG,ULONGLONG,ULONGLONG *); 02206 LONGLONG WINAPI RtlLargeIntegerNegate(LONGLONG); 02207 LONGLONG WINAPI RtlLargeIntegerShiftLeft(LONGLONG,INT); 02208 LONGLONG WINAPI RtlLargeIntegerShiftRight(LONGLONG,INT); 02209 LONGLONG WINAPI RtlLargeIntegerSubtract(LONGLONG,LONGLONG); 02210 NTSTATUS WINAPI RtlLargeIntegerToChar(const ULONGLONG *,ULONG,ULONG,PCHAR); 02211 NTSTATUS WINAPI RtlLeaveCriticalSection(RTL_CRITICAL_SECTION *); 02212 DWORD WINAPI RtlLengthRequiredSid(DWORD); 02213 ULONG WINAPI RtlLengthSecurityDescriptor(PSECURITY_DESCRIPTOR); 02214 DWORD WINAPI RtlLengthSid(PSID); 02215 NTSTATUS WINAPI RtlLocalTimeToSystemTime(const LARGE_INTEGER*,PLARGE_INTEGER); 02216 BOOLEAN WINAPI RtlLockHeap(HANDLE); 02217 NTSTATUS WINAPI RtlLookupAtomInAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*); 02218 02219 NTSTATUS WINAPI RtlMakeSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,LPDWORD); 02220 void WINAPI RtlMapGenericMask(PACCESS_MASK,const GENERIC_MAPPING*); 02221 NTSTATUS WINAPI RtlMultiByteToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD); 02222 NTSTATUS WINAPI RtlMultiByteToUnicodeSize(DWORD*,LPCSTR,UINT); 02223 02224 DWORD WINAPI RtlNewSecurityObject(DWORD,DWORD,DWORD,DWORD,DWORD,DWORD); 02225 PRTL_USER_PROCESS_PARAMETERS WINAPI RtlNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*); 02226 ULONG WINAPI RtlNtStatusToDosError(NTSTATUS); 02227 ULONG WINAPI RtlNtStatusToDosErrorNoTeb(NTSTATUS); 02228 ULONG WINAPI RtlNumberOfSetBits(PCRTL_BITMAP); 02229 ULONG WINAPI RtlNumberOfClearBits(PCRTL_BITMAP); 02230 02231 UINT WINAPI RtlOemStringToUnicodeSize(const STRING*); 02232 NTSTATUS WINAPI RtlOemStringToUnicodeString(UNICODE_STRING*,const STRING*,BOOLEAN); 02233 NTSTATUS WINAPI RtlOemToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD); 02234 DWORD WINAPI RtlOpenCurrentUser(ACCESS_MASK,PHANDLE); 02235 02236 NTSTATUS WINAPI RtlPinAtomInAtomTable(PRTL_ATOM_TABLE,RTL_ATOM); 02237 BOOLEAN WINAPI RtlPrefixString(const STRING*,const STRING*,BOOLEAN); 02238 BOOLEAN WINAPI RtlPrefixUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN); 02239 02240 NTSTATUS WINAPI RtlQueryAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM,ULONG*,ULONG*,WCHAR*,ULONG*); 02241 NTSTATUS WINAPI RtlQueryEnvironmentVariable_U(PWSTR,PUNICODE_STRING,PUNICODE_STRING); 02242 NTSTATUS WINAPI RtlQueryInformationAcl(PACL,LPVOID,DWORD,ACL_INFORMATION_CLASS); 02243 NTSTATUS WINAPI RtlQueryProcessDebugInformation(ULONG,ULONG,PDEBUG_BUFFER); 02244 NTSTATUS WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID); 02245 NTSTATUS WINAPI RtlQueryTimeZoneInformation(RTL_TIME_ZONE_INFORMATION*); 02246 void WINAPI RtlRaiseException(PEXCEPTION_RECORD); 02247 void WINAPI RtlRaiseStatus(NTSTATUS); 02248 ULONG WINAPI RtlRandom(PULONG); 02249 PVOID WINAPI RtlReAllocateHeap(HANDLE,ULONG,PVOID,SIZE_T); 02250 void WINAPI RtlReleasePebLock(void); 02251 void WINAPI RtlReleaseResource(LPRTL_RWLOCK); 02252 ULONG WINAPI RtlRemoveVectoredExceptionHandler(PVOID); 02253 void WINAPI RtlRestoreLastWin32Error(DWORD); 02254 02255 void WINAPI RtlSecondsSince1970ToTime(DWORD,LARGE_INTEGER *); 02256 void WINAPI RtlSecondsSince1980ToTime(DWORD,LARGE_INTEGER *); 02257 NTSTATUS WINAPI RtlSelfRelativeToAbsoluteSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR, 02258 PDWORD,PACL,PDWORD,PACL,PDWORD,PSID,PDWORD,PSID,PDWORD); 02259 void WINAPI RtlSetAllBits(PRTL_BITMAP); 02260 void WINAPI RtlSetBits(PRTL_BITMAP,ULONG,ULONG); 02261 ULONG WINAPI RtlSetCriticalSectionSpinCount(RTL_CRITICAL_SECTION*,ULONG); 02262 NTSTATUS WINAPI RtlSetCurrentDirectory_U(const UNICODE_STRING*); 02263 void WINAPI RtlSetCurrentEnvironment(PWSTR, PWSTR*); 02264 NTSTATUS WINAPI RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN); 02265 NTSTATUS WINAPI RtlSetEnvironmentVariable(PWSTR*,PUNICODE_STRING,PUNICODE_STRING); 02266 NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN); 02267 NTSTATUS WINAPI RtlSetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN); 02268 void WINAPI RtlSetLastWin32Error(DWORD); 02269 void WINAPI RtlSetLastWin32ErrorAndNtStatusFromNtStatus(NTSTATUS); 02270 NTSTATUS WINAPI RtlSetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN); 02271 NTSTATUS WINAPI RtlSetTimeZoneInformation(const RTL_TIME_ZONE_INFORMATION*); 02272 SIZE_T WINAPI RtlSizeHeap(HANDLE,ULONG,PVOID); 02273 NTSTATUS WINAPI RtlStringFromGUID(REFGUID,PUNICODE_STRING); 02274 LPDWORD WINAPI RtlSubAuthoritySid(PSID,DWORD); 02275 LPBYTE WINAPI RtlSubAuthorityCountSid(PSID); 02276 NTSTATUS WINAPI RtlSystemTimeToLocalTime(const LARGE_INTEGER*,PLARGE_INTEGER); 02277 02278 void WINAPI RtlTimeToTimeFields(const LARGE_INTEGER*,PTIME_FIELDS); 02279 BOOLEAN WINAPI RtlTimeFieldsToTime(PTIME_FIELDS,PLARGE_INTEGER); 02280 void WINAPI RtlTimeToElapsedTimeFields(const LARGE_INTEGER *,PTIME_FIELDS); 02281 BOOLEAN WINAPI RtlTimeToSecondsSince1970(const LARGE_INTEGER *,LPDWORD); 02282 BOOLEAN WINAPI RtlTimeToSecondsSince1980(const LARGE_INTEGER *,LPDWORD); 02283 BOOL WINAPI RtlTryEnterCriticalSection(RTL_CRITICAL_SECTION *); 02284 02285 ULONGLONG __cdecl RtlUlonglongByteSwap(ULONGLONG); 02286 DWORD WINAPI RtlUnicodeStringToAnsiSize(const UNICODE_STRING*); 02287 NTSTATUS WINAPI RtlUnicodeStringToAnsiString(PANSI_STRING,PCUNICODE_STRING,BOOLEAN); 02288 NTSTATUS WINAPI RtlUnicodeStringToInteger(const UNICODE_STRING *,ULONG,ULONG *); 02289 DWORD WINAPI RtlUnicodeStringToOemSize(const UNICODE_STRING*); 02290 NTSTATUS WINAPI RtlUnicodeStringToOemString(POEM_STRING,PCUNICODE_STRING,BOOLEAN); 02291 NTSTATUS WINAPI RtlUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD); 02292 NTSTATUS WINAPI RtlUnicodeToMultiByteSize(PULONG,PCWSTR,ULONG); 02293 NTSTATUS WINAPI RtlUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD); 02294 ULONG WINAPI RtlUniform(PULONG); 02295 BOOLEAN WINAPI RtlUnlockHeap(HANDLE); 02296 #ifdef __ia64__ 02297 void WINAPI RtlUnwind2(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT); 02298 void WINAPI RtlUnwindEx(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT,PUNWIND_HISTORY_TABLE); 02299 #endif 02300 WCHAR WINAPI RtlUpcaseUnicodeChar(WCHAR); 02301 NTSTATUS WINAPI RtlUpcaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING *,BOOLEAN); 02302 NTSTATUS WINAPI RtlUpcaseUnicodeStringToAnsiString(STRING*,const UNICODE_STRING*,BOOLEAN); 02303 NTSTATUS WINAPI RtlUpcaseUnicodeStringToCountedOemString(STRING*,const UNICODE_STRING*,BOOLEAN); 02304 NTSTATUS WINAPI RtlUpcaseUnicodeStringToOemString(STRING*,const UNICODE_STRING*,BOOLEAN); 02305 NTSTATUS WINAPI RtlUpcaseUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD); 02306 NTSTATUS WINAPI RtlUpcaseUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD); 02307 CHAR WINAPI RtlUpperChar(CHAR); 02308 void WINAPI RtlUpperString(STRING *,const STRING *); 02309 02310 NTSTATUS WINAPI RtlValidSecurityDescriptor(PSECURITY_DESCRIPTOR); 02311 BOOLEAN WINAPI RtlValidAcl(PACL); 02312 BOOLEAN WINAPI RtlValidSid(PSID); 02313 BOOLEAN WINAPI RtlValidateHeap(HANDLE,ULONG,LPCVOID); 02314 //NTSTATUS WINAPI RtlVerifyVersionInfo(const RTL_OSVERSIONINFOEXW*,DWORD,DWORDLONG); 02315 02316 NTSTATUS WINAPI RtlWalkHeap(HANDLE,PVOID); 02317 02318 NTSTATUS WINAPI RtlpNtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG); 02319 NTSTATUS WINAPI RtlpWaitForCriticalSection(RTL_CRITICAL_SECTION *); 02320 NTSTATUS WINAPI RtlpUnWaitCriticalSection(RTL_CRITICAL_SECTION *); 02321 02322 ULONG WINAPI 02323 vDbgPrintEx(IN ULONG ComponentId, 02324 IN ULONG Level, 02325 IN LPCSTR Format, 02326 IN va_list ap); 02327 ULONG WINAPI 02328 vDbgPrintExWithPrefix(IN LPCSTR Prefix, 02329 IN ULONG ComponentId, 02330 IN ULONG Level, 02331 IN LPCSTR Format, 02332 IN va_list ap); 02333 02334 /* Wine internal functions */ 02335 02336 extern NTSTATUS wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRING *unix_name_ret, 02337 UINT disposition, BOOLEAN check_case ); 02338 02339 /*********************************************************************** 02340 * Inline functions 02341 */ 02342 02343 #define InitializeObjectAttributes(p,n,a,r,s) \ 02344 do { \ 02345 (p)->Length = sizeof(OBJECT_ATTRIBUTES); \ 02346 (p)->RootDirectory = r; \ 02347 (p)->Attributes = a; \ 02348 (p)->ObjectName = n; \ 02349 (p)->SecurityDescriptor = s; \ 02350 (p)->SecurityQualityOfService = NULL; \ 02351 } while (0) 02352 02353 #define NtCurrentProcess() ((HANDLE)-1) 02354 02355 #ifndef RtlFillMemory 02356 #define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length)) 02357 #endif 02358 #ifndef RtlMoveMemory 02359 #define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length)) 02360 #endif 02361 #define RtlStoreUlong(p,v) do { ULONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0) 02362 #define RtlStoreUlonglong(p,v) do { ULONGLONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0) 02363 #define RtlRetrieveUlong(p,s) memcpy((p), (s), sizeof(ULONG)) 02364 #define RtlRetrieveUlonglong(p,s) memcpy((p), (s), sizeof(ULONGLONG)) 02365 #ifndef RtlZeroMemory 02366 #define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length)) 02367 #endif 02368 02369 static __inline BOOLEAN RtlCheckBit(PCRTL_BITMAP lpBits, ULONG ulBit) 02370 { 02371 if (lpBits && ulBit < lpBits->SizeOfBitMap && 02372 lpBits->Buffer[ulBit >> 5] & (1 << (ulBit & 31))) 02373 return TRUE; 02374 return FALSE; 02375 } 02376 02377 /* These are implemented as __fastcall, so we can't let Winelib apps link with them */ 02378 static __inline USHORT RtlUshortByteSwap(USHORT s) 02379 { 02380 return (s >> 8) | (s << 8); 02381 } 02382 static __inline ULONG RtlUlongByteSwap(ULONG i) 02383 { 02384 #if defined(__i386__) && defined(__GNUC__) 02385 ULONG ret; 02386 __asm__("bswap %0" : "=r" (ret) : "0" (i) ); 02387 return ret; 02388 #else 02389 return ((ULONG)RtlUshortByteSwap((USHORT)i) << 16) | RtlUshortByteSwap((USHORT)(i >> 16)); 02390 #endif 02391 } 02392 02393 /************************************************************************* 02394 * Loader functions and structures. 02395 * 02396 * Those are not part of standard Winternl.h 02397 */ 02398 typedef struct _LDR_MODULE 02399 { 02400 LIST_ENTRY InLoadOrderModuleList; 02401 LIST_ENTRY InMemoryOrderModuleList; 02402 LIST_ENTRY InInitializationOrderModuleList; 02403 void* BaseAddress; 02404 void* EntryPoint; 02405 ULONG SizeOfImage; 02406 UNICODE_STRING FullDllName; 02407 UNICODE_STRING BaseDllName; 02408 ULONG Flags; 02409 SHORT LoadCount; 02410 SHORT TlsIndex; 02411 HANDLE SectionHandle; 02412 ULONG CheckSum; 02413 ULONG TimeDateStamp; 02414 } LDR_MODULE, *PLDR_MODULE; 02415 02416 /* those defines are (some of the) regular LDR_MODULE.Flags values */ 02417 #define LDR_IMAGE_IS_DLL 0x00000004 02418 #define LDR_LOAD_IN_PROGRESS 0x00001000 02419 #define LDR_UNLOAD_IN_PROGRESS 0x00002000 02420 #define LDR_NO_DLL_CALLS 0x00040000 02421 #define LDR_PROCESS_ATTACHED 0x00080000 02422 #define LDR_MODULE_REBASED 0x00200000 02423 02424 /* these ones is Wine specific */ 02425 #define LDR_DONT_RESOLVE_REFS 0x40000000 02426 #define LDR_WINE_INTERNAL 0x80000000 02427 02428 /* FIXME: to be checked */ 02429 #define MAXIMUM_FILENAME_LENGTH 256 02430 02431 typedef struct _SYSTEM_MODULE 02432 { 02433 ULONG Reserved1; 02434 ULONG Reserved2; 02435 PVOID ImageBaseAddress; 02436 ULONG ImageSize; 02437 ULONG Flags; 02438 WORD Id; 02439 WORD Rank; 02440 WORD Unknown; 02441 WORD NameOffset; 02442 BYTE Name[MAXIMUM_FILENAME_LENGTH]; 02443 } SYSTEM_MODULE, *PSYSTEM_MODULE; 02444 02445 typedef struct _SYSTEM_MODULE_INFORMATION 02446 { 02447 ULONG ModulesCount; 02448 SYSTEM_MODULE Modules[1]; /* FIXME: should be Modules[0] */ 02449 } SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION; 02450 02451 NTSTATUS WINAPI LdrDisableThreadCalloutsForDll(HMODULE); 02452 NTSTATUS WINAPI LdrFindEntryForAddress(const void*, PLDR_MODULE*); 02453 NTSTATUS WINAPI LdrLockLoaderLock(ULONG,ULONG*,ULONG*); 02454 NTSTATUS WINAPI LdrQueryProcessModuleInformation(SYSTEM_MODULE_INFORMATION*, ULONG, ULONG*); 02455 NTSTATUS WINAPI LdrUnloadDll(HMODULE); 02456 NTSTATUS WINAPI LdrUnlockLoaderLock(ULONG,ULONG); 02457 02458 /* list manipulation macros */ 02459 #define InitializeListHead(le) (void)((le)->Flink = (le)->Blink = (le)) 02460 #define InsertHeadList(le,e) do { PLIST_ENTRY f = (le)->Flink; (e)->Flink = f; (e)->Blink = (le); f->Blink = (e); (le)->Flink = (e); } while (0) 02461 #define InsertTailList(le,e) do { PLIST_ENTRY b = (le)->Blink; (e)->Flink = (le); (e)->Blink = b; b->Flink = (e); (le)->Blink = (e); } while (0) 02462 #define IsListEmpty(le) ((le)->Flink == (le)) 02463 #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) 02464 static __inline PLIST_ENTRY RemoveHeadList(PLIST_ENTRY le) 02465 { 02466 PLIST_ENTRY f, b, e; 02467 02468 e = le->Flink; 02469 f = le->Flink->Flink; 02470 b = le->Flink->Blink; 02471 f->Blink = b; 02472 b->Flink = f; 02473 02474 if (e != le) e->Flink = e->Blink = NULL; 02475 return e; 02476 } 02477 static __inline PLIST_ENTRY RemoveTailList(PLIST_ENTRY le) 02478 { 02479 PLIST_ENTRY f, b, e; 02480 02481 e = le->Blink; 02482 f = le->Blink->Flink; 02483 b = le->Blink->Blink; 02484 f->Blink = b; 02485 b->Flink = f; 02486 02487 if (e != le) e->Flink = e->Blink = NULL; 02488 return e; 02489 } 02490 02491 typedef struct _FILE_FS_VOLUME_INFORMATION 02492 { 02493 LARGE_INTEGER VolumeCreationTime; 02494 ULONG VolumeSerialNumber; 02495 ULONG VolumeLabelLength; 02496 BOOLEAN SupportsObjects; 02497 WCHAR VolumeLabel[1]; 02498 } FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION; 02499 #define FSCTL_PIPE_LISTEN CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS) 02500 02501 #ifdef __cplusplus 02502 } /* extern "C" */ 02503 #endif /* defined(__cplusplus) */ 02504 02505 #endif /* __WINE_WINTERNL_H */ Generated on Fri May 25 2012 04:31:22 for ReactOS by
1.7.6.1
|