Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenntddk_ex.h
Go to the documentation of this file.
00001 #ifndef __NTDDK_EX__H__ 00002 #define __NTDDK_EX__H__ 00003 00004 //#ifndef USE_REACTOS_DDK 00005 #ifdef ASSERT 00006 #undef ASSERT 00007 #define ASSERT(x) ((void)0) 00008 #endif //ASSERT 00009 //#endif //USE_REACTOS_DDK 00010 00011 00012 #if !defined(FILE_CHARACTERISTIC_PNP_DEVICE) || defined(USE_REACTOS_DDK) // DDK 2003 00013 00014 #ifndef FILE_CHARACTERISTIC_PNP_DEVICE 00015 #define FILE_CHARACTERISTIC_PNP_DEVICE 0x00000800 00016 #endif 00017 00018 typedef enum _SYSTEM_INFORMATION_CLASS { 00019 SystemBasicInformation, 00020 SystemProcessorInformation, 00021 SystemPerformanceInformation, 00022 SystemTimeOfDayInformation, 00023 SystemPathInformation, 00024 SystemProcessInformation, 00025 SystemCallCountInformation, 00026 SystemDeviceInformation, 00027 SystemProcessorPerformanceInformation, 00028 SystemFlagsInformation, 00029 SystemCallTimeInformation, 00030 SystemModuleInformation, 00031 SystemLocksInformation, 00032 SystemStackTraceInformation, 00033 SystemPagedPoolInformation, 00034 SystemNonPagedPoolInformation, 00035 SystemHandleInformation, 00036 SystemObjectInformation, 00037 SystemPageFileInformation, 00038 SystemVdmInstemulInformation, 00039 SystemVdmBopInformation, 00040 SystemFileCacheInformation, 00041 SystemPoolTagInformation, 00042 SystemInterruptInformation, 00043 SystemDpcBehaviorInformation, 00044 SystemFullMemoryInformation, 00045 SystemLoadGdiDriverInformation, 00046 SystemUnloadGdiDriverInformation, 00047 SystemTimeAdjustmentInformation, 00048 SystemSummaryMemoryInformation, 00049 #ifndef USE_REACTOS_DDK 00050 SystemNextEventIdInformation, 00051 SystemEventIdsInformation, 00052 SystemCrashDumpInformation, 00053 #else 00054 SystemMirrorMemoryInformation, 00055 SystemPerformanceTraceInformation, 00056 SystemObsolete0, 00057 #endif // USE_REACTOS_DDK 00058 SystemExceptionInformation, 00059 SystemCrashDumpStateInformation, 00060 SystemKernelDebuggerInformation, 00061 SystemContextSwitchInformation, 00062 SystemRegistryQuotaInformation, 00063 SystemExtendServiceTableInformation, 00064 SystemPrioritySeperation, 00065 SystemPlugPlayBusInformation, 00066 SystemDockInformation, 00067 #ifdef USE_REACTOS_DDK 00068 SystemPowerInformationNative, 00069 #elif defined IRP_MN_START_DEVICE 00070 SystemPowerInformationInfo, 00071 #else 00072 SystemPowerInformation, 00073 #endif // USE_REACTOS_DDK 00074 SystemProcessorSpeedInformation, 00075 SystemCurrentTimeZoneInformation, 00076 SystemLookasideInformation, 00077 #ifdef USE_REACTOS_DDK 00078 SystemTimeSlipNotification, 00079 SystemSessionCreate, 00080 SystemSessionDetach, 00081 SystemSessionInformation, 00082 SystemRangeStartInformation, 00083 SystemVerifierInformation, 00084 SystemAddVerifier, 00085 SystemSessionProcessesInformation, 00086 SystemLoadGdiDriverInSystemSpaceInformation, 00087 SystemNumaProcessorMap, 00088 SystemPrefetcherInformation, 00089 SystemExtendedProcessInformation, 00090 SystemRecommendedSharedDataAlignment, 00091 SystemComPlusPackage, 00092 SystemNumaAvailableMemory, 00093 SystemProcessorPowerInformation, 00094 SystemEmulationBasicInformation, 00095 SystemEmulationProcessorInformation, 00096 SystemExtendedHanfleInformation, 00097 SystemLostDelayedWriteInformation, 00098 SystemBigPoolInformation, 00099 SystemSessionPoolTagInformation, 00100 SystemSessionMappedViewInformation, 00101 SystemHotpatchInformation, 00102 SystemObjectSecurityMode, 00103 SystemWatchDogTimerHandler, 00104 SystemWatchDogTimerInformation, 00105 SystemLogicalProcessorInformation, 00106 SystemWo64SharedInformationObosolete, 00107 SystemRegisterFirmwareTableInformationHandler, 00108 SystemFirmwareTableInformation, 00109 SystemModuleInformationEx, 00110 SystemVerifierTriageInformation, 00111 SystemSuperfetchInformation, 00112 SystemMemoryListInformation, 00113 SystemFileCacheInformationEx, 00114 SystemThreadPriorityClientIdInformation, 00115 SystemProcessorIdleCycleTimeInformation, 00116 SystemVerifierCancellationInformation, 00117 SystemProcessorPowerInformationEx, 00118 SystemRefTraceInformation, 00119 SystemSpecialPoolInformation, 00120 SystemProcessIdInformation, 00121 SystemErrorPortInformation, 00122 SystemBootEnvironmentInformation, 00123 SystemHypervisorInformation, 00124 SystemVerifierInformationEx, 00125 SystemTimeZoneInformation, 00126 SystemImageFileExecutionOptionsInformation, 00127 SystemCoverageInformation, 00128 SystemPrefetchPathInformation, 00129 SystemVerifierFaultsInformation, 00130 MaxSystemInfoClass, 00131 #endif // USE_REACTOS_DDK 00132 } SYSTEM_INFORMATION_CLASS; 00133 00134 #endif // !defined(FILE_CHARACTERISTIC_PNP_DEVICE) || defined(USE_REACTOS_DDK) 00135 00136 00137 NTSYSAPI 00138 NTSTATUS 00139 NTAPI 00140 ZwQuerySystemInformation( 00141 IN SYSTEM_INFORMATION_CLASS SystemInfoClass, 00142 OUT PVOID SystemInfoBuffer, 00143 IN ULONG SystemInfoBufferSize, 00144 OUT PULONG BytesReturned OPTIONAL 00145 ); 00146 00147 NTSYSAPI 00148 NTSTATUS 00149 NTAPI 00150 NtQuerySystemInformation( 00151 IN SYSTEM_INFORMATION_CLASS SystemInfoClass, 00152 OUT PVOID SystemInfoBuffer, 00153 IN ULONG SystemInfoBufferSize, 00154 OUT PULONG BytesReturned OPTIONAL 00155 ); 00156 00157 typedef struct _SYSTEM_BASIC_INFORMATION { 00158 ULONG Reserved; 00159 ULONG TimerResolution; 00160 ULONG PageSize; 00161 ULONG NumberOfPhysicalPages; 00162 ULONG LowestPhysicalPageNumber; 00163 ULONG HighestPhysicalPageNumber; 00164 ULONG AllocationGranularity; 00165 ULONG MinimumUserModeAddress; 00166 ULONG MaximumUserModeAddress; 00167 KAFFINITY ActiveProcessorsAffinityMask; 00168 CCHAR NumberOfProcessors; 00169 } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION; 00170 00171 typedef struct _SYSTEM_MODULE_ENTRY 00172 { 00173 ULONG Unused; 00174 ULONG Always0; 00175 PVOID ModuleBaseAddress; 00176 ULONG ModuleSize; 00177 ULONG Unknown; 00178 ULONG ModuleEntryIndex; 00179 USHORT ModuleNameLength; 00180 USHORT ModuleNameOffset; 00181 CHAR ModuleName [256]; 00182 } SYSTEM_MODULE_ENTRY, * PSYSTEM_MODULE_ENTRY; 00183 00184 typedef struct _SYSTEM_MODULE_INFORMATION 00185 { 00186 ULONG Count; 00187 SYSTEM_MODULE_ENTRY Module [1]; 00188 } SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION; 00189 00190 typedef unsigned short WORD; 00191 #ifndef __REACTOS__ 00192 typedef unsigned int BOOL; 00193 #endif //__REACTOS__ 00194 typedef unsigned long DWORD; 00195 typedef unsigned char BYTE; 00196 00197 00198 typedef struct _LDR_DATA_TABLE_ENTRY { 00199 LIST_ENTRY LoadOrder; 00200 LIST_ENTRY MemoryOrder; 00201 LIST_ENTRY InitializationOrder; 00202 PVOID ModuleBaseAddress; 00203 PVOID EntryPoint; 00204 ULONG ModuleSize; 00205 UNICODE_STRING FullModuleName; 00206 UNICODE_STRING ModuleName; 00207 ULONG Flags; 00208 USHORT LoadCount; 00209 USHORT TlsIndex; 00210 union { 00211 LIST_ENTRY Hash; 00212 struct { 00213 PVOID SectionPointer; 00214 ULONG CheckSum; 00215 }; 00216 }; 00217 ULONG TimeStamp; 00218 } LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY; 00219 00220 typedef struct _PEB_LDR_DATA { 00221 ULONG Length; 00222 BOOLEAN Initialized; 00223 HANDLE SsHandle; 00224 LIST_ENTRY LoadOrder; 00225 LIST_ENTRY MemoryOrder; 00226 LIST_ENTRY InitializationOrder; 00227 } PEB_LDR_DATA, *PPEB_LDR_DATA; 00228 00229 typedef struct _PEB_FREE_BLOCK { 00230 struct _PEB_FREE_BLOCK *Next; 00231 ULONG Size; 00232 } PEB_FREE_BLOCK, *PPEB_FREE_BLOCK; 00233 00234 #define GDI_HANDLE_BUFFER_SIZE 34 00235 00236 #define TLS_MINIMUM_AVAILABLE 64 // winnt 00237 00238 typedef struct _PEB { 00239 BOOLEAN InheritedAddressSpace; // These four fields cannot change unless the 00240 BOOLEAN ReadImageFileExecOptions; // 00241 BOOLEAN BeingDebugged; // 00242 BOOLEAN SpareBool; // 00243 HANDLE Mutant; // INITIAL_PEB structure is also updated. 00244 00245 PVOID ImageBaseAddress; 00246 PPEB_LDR_DATA Ldr; 00247 struct _RTL_USER_PROCESS_PARAMETERS *ProcessParameters; 00248 PVOID SubSystemData; 00249 PVOID ProcessHeap; 00250 PVOID FastPebLock; 00251 PVOID FastPebLockRoutine; 00252 PVOID FastPebUnlockRoutine; 00253 ULONG EnvironmentUpdateCount; 00254 PVOID KernelCallbackTable; 00255 HANDLE EventLogSection; 00256 PVOID EventLog; 00257 PPEB_FREE_BLOCK FreeList; 00258 ULONG TlsExpansionCounter; 00259 PVOID TlsBitmap; 00260 ULONG TlsBitmapBits[2]; // relates to TLS_MINIMUM_AVAILABLE 00261 PVOID ReadOnlySharedMemoryBase; 00262 PVOID ReadOnlySharedMemoryHeap; 00263 PVOID *ReadOnlyStaticServerData; 00264 PVOID AnsiCodePageData; 00265 PVOID OemCodePageData; 00266 PVOID UnicodeCaseTableData; 00267 00268 // Useful information for LdrpInitialize 00269 ULONG NumberOfProcessors; 00270 ULONG NtGlobalFlag; 00271 00272 // Passed up from MmCreatePeb from Session Manager registry key 00273 00274 LARGE_INTEGER CriticalSectionTimeout; 00275 ULONG HeapSegmentReserve; 00276 ULONG HeapSegmentCommit; 00277 ULONG HeapDeCommitTotalFreeThreshold; 00278 ULONG HeapDeCommitFreeBlockThreshold; 00279 00280 // Where heap manager keeps track of all heaps created for a process 00281 // Fields initialized by MmCreatePeb. ProcessHeaps is initialized 00282 // to point to the first free byte after the PEB and MaximumNumberOfHeaps 00283 // is computed from the page size used to hold the PEB, less the fixed 00284 // size of this data structure. 00285 00286 ULONG NumberOfHeaps; 00287 ULONG MaximumNumberOfHeaps; 00288 PVOID *ProcessHeaps; 00289 00290 // 00291 // 00292 PVOID GdiSharedHandleTable; 00293 PVOID ProcessStarterHelper; 00294 PVOID GdiDCAttributeList; 00295 PVOID LoaderLock; 00296 00297 // Following fields filled in by MmCreatePeb from system values and/or 00298 // image header. 00299 00300 ULONG OSMajorVersion; 00301 ULONG OSMinorVersion; 00302 ULONG OSBuildNumber; 00303 ULONG OSPlatformId; 00304 ULONG ImageSubsystem; 00305 ULONG ImageSubsystemMajorVersion; 00306 ULONG ImageSubsystemMinorVersion; 00307 ULONG ImageProcessAffinityMask; 00308 ULONG GdiHandleBuffer[GDI_HANDLE_BUFFER_SIZE]; 00309 } PEB, *PPEB; 00310 00311 // 00312 // Gdi command batching 00313 // 00314 00315 #define GDI_BATCH_BUFFER_SIZE 310 00316 00317 typedef struct _GDI_TEB_BATCH { 00318 ULONG Offset; 00319 ULONG HDC; 00320 ULONG Buffer[GDI_BATCH_BUFFER_SIZE]; 00321 } GDI_TEB_BATCH,*PGDI_TEB_BATCH; 00322 00323 // 00324 // TEB - The thread environment block 00325 // 00326 00327 #define STATIC_UNICODE_BUFFER_LENGTH 261 00328 #define WIN32_CLIENT_INFO_LENGTH 31 00329 #define WIN32_CLIENT_INFO_SPIN_COUNT 1 00330 00331 typedef struct _TEB { 00332 NT_TIB NtTib; 00333 PVOID EnvironmentPointer; 00334 CLIENT_ID ClientId; 00335 PVOID ActiveRpcHandle; 00336 PVOID ThreadLocalStoragePointer; 00337 PPEB ProcessEnvironmentBlock; 00338 ULONG LastErrorValue; 00339 ULONG CountOfOwnedCriticalSections; 00340 PVOID CsrClientThread; 00341 PVOID Win32ThreadInfo; // PtiCurrent 00342 ULONG Win32ClientInfo[WIN32_CLIENT_INFO_LENGTH]; // User32 Client Info 00343 PVOID WOW32Reserved; // used by WOW 00344 LCID CurrentLocale; 00345 ULONG FpSoftwareStatusRegister; 00346 PVOID SystemReserved1[54]; // Used by FP emulator 00347 PVOID Spare1; // unused 00348 NTSTATUS ExceptionCode; // for RaiseUserException 00349 UCHAR SpareBytes1[40]; 00350 PVOID SystemReserved2[10]; // Used by user/console for temp obja 00351 GDI_TEB_BATCH GdiTebBatch; // Gdi batching 00352 ULONG gdiRgn; 00353 ULONG gdiPen; 00354 ULONG gdiBrush; 00355 CLIENT_ID RealClientId; 00356 HANDLE GdiCachedProcessHandle; 00357 ULONG GdiClientPID; 00358 ULONG GdiClientTID; 00359 PVOID GdiThreadLocalInfo; 00360 PVOID UserReserved[5]; // unused 00361 PVOID glDispatchTable[280]; // OpenGL 00362 ULONG glReserved1[26]; // OpenGL 00363 PVOID glReserved2; // OpenGL 00364 PVOID glSectionInfo; // OpenGL 00365 PVOID glSection; // OpenGL 00366 PVOID glTable; // OpenGL 00367 PVOID glCurrentRC; // OpenGL 00368 PVOID glContext; // OpenGL 00369 ULONG LastStatusValue; 00370 UNICODE_STRING StaticUnicodeString; 00371 WCHAR StaticUnicodeBuffer[STATIC_UNICODE_BUFFER_LENGTH]; 00372 PVOID DeallocationStack; 00373 PVOID TlsSlots[TLS_MINIMUM_AVAILABLE]; 00374 LIST_ENTRY TlsLinks; 00375 PVOID Vdm; 00376 PVOID ReservedForNtRpc; 00377 PVOID DbgSsReserved[2]; 00378 ULONG HardErrorsAreDisabled; 00379 PVOID Instrumentation[16]; 00380 PVOID WinSockData; // WinSock 00381 ULONG GdiBatchCount; 00382 ULONG Spare2; 00383 ULONG Spare3; 00384 ULONG Spare4; 00385 PVOID ReservedForOle; 00386 ULONG WaitingOnLoaderLock; 00387 } TEB; 00388 typedef TEB *PTEB; 00389 00390 typedef struct _KTHREAD_HDR { 00391 00392 // 00393 // The dispatcher header and mutant listhead are faifly infrequently 00394 // referenced, but pad the thread to a 32-byte boundary (assumption 00395 // that pool allocation is in units of 32-bytes). 00396 // 00397 00398 DISPATCHER_HEADER Header; 00399 LIST_ENTRY MutantListHead; 00400 00401 // 00402 // The following fields are referenced during trap, interrupts, or 00403 // context switches. 00404 // 00405 // N.B. The Teb address and TlsArray are loaded as a quadword quantity 00406 // on MIPS and therefore must to on a quadword boundary. 00407 // 00408 00409 PVOID InitialStack; 00410 PVOID StackLimit; 00411 PVOID Teb; 00412 PVOID TlsArray; 00413 PVOID KernelStack; 00414 BOOLEAN DebugActive; 00415 UCHAR State; 00416 BOOLEAN Alerted[MaximumMode]; 00417 UCHAR Iopl; 00418 UCHAR NpxState; 00419 BOOLEAN Saturation; 00420 SCHAR Priority; 00421 /* KAPC_STATE ApcState; 00422 ULONG ContextSwitches; 00423 00424 // 00425 // The following fields are referenced during wait operations. 00426 // 00427 00428 NTSTATUS WaitStatus; 00429 KIRQL WaitIrql; 00430 KPROCESSOR_MODE WaitMode; 00431 BOOLEAN WaitNext; 00432 UCHAR WaitReason; 00433 PRKWAIT_BLOCK WaitBlockList; 00434 LIST_ENTRY WaitListEntry; 00435 ULONG WaitTime; 00436 SCHAR BasePriority; 00437 UCHAR DecrementCount; 00438 SCHAR PriorityDecrement; 00439 SCHAR Quantum; 00440 KWAIT_BLOCK WaitBlock[THREAD_WAIT_OBJECTS + 1]; 00441 PVOID LegoData; 00442 ULONG KernelApcDisable; 00443 KAFFINITY UserAffinity; 00444 BOOLEAN SystemAffinityActive; 00445 UCHAR Pad[3]; 00446 PVOID ServiceTable; 00447 // struct _ECHANNEL *Channel; 00448 // PVOID Section; 00449 // PCHANNEL_MESSAGE SystemView; 00450 // PCHANNEL_MESSAGE ThreadView; 00451 00452 // 00453 // The following fields are referenced during queue operations. 00454 // 00455 00456 PRKQUEUE Queue; 00457 KSPIN_LOCK ApcQueueLock; 00458 KTIMER Timer; 00459 LIST_ENTRY QueueListEntry; 00460 00461 // 00462 // The following fields are referenced during read and find ready 00463 // thread. 00464 // 00465 00466 KAFFINITY Affinity; 00467 BOOLEAN Preempted; 00468 BOOLEAN ProcessReadyQueue; 00469 BOOLEAN KernelStackResident; 00470 UCHAR NextProcessor; 00471 00472 // 00473 // The following fields are referenced suring system calls. 00474 // 00475 00476 PVOID CallbackStack; 00477 PVOID Win32Thread; 00478 PKTRAP_FRAME TrapFrame; 00479 PKAPC_STATE ApcStatePointer[2]; 00480 UCHAR EnableStackSwap; 00481 UCHAR LargeStack; 00482 UCHAR ResourceIndex; 00483 CCHAR PreviousMode; 00484 00485 // 00486 // The following entries are reference during clock interrupts. 00487 // 00488 00489 ULONG KernelTime; 00490 ULONG UserTime; 00491 00492 // 00493 // The following fileds are referenced during APC queuing and process 00494 // attach/detach. 00495 // 00496 00497 KAPC_STATE SavedApcState; 00498 BOOLEAN Alertable; 00499 UCHAR ApcStateIndex; 00500 BOOLEAN ApcQueueable; 00501 BOOLEAN AutoAlignment; 00502 00503 // 00504 // The following fields are referenced when the thread is initialized 00505 // and very infrequently thereafter. 00506 // 00507 00508 PVOID StackBase; 00509 KAPC SuspendApc; 00510 KSEMAPHORE SuspendSemaphore; 00511 LIST_ENTRY ThreadListEntry; 00512 00513 // 00514 // N.B. The below four UCHARs share the same DWORD and are modified 00515 // by other threads. Therefore, they must ALWAYS be modified 00516 // under the dispatcher lock to prevent granularity problems 00517 // on Alpha machines. 00518 // 00519 CCHAR FreezeCount; 00520 CCHAR SuspendCount; 00521 UCHAR IdealProcessor; 00522 UCHAR DisableBoost; 00523 */ 00524 } KTHREAD_HDR, *PKTHREAD_HDR; 00525 00526 #ifndef __REACTOS__ 00527 typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header 00528 WORD e_magic; // Magic number 00529 WORD e_cblp; // Bytes on last page of file 00530 WORD e_cp; // Pages in file 00531 WORD e_crlc; // Relocations 00532 WORD e_cparhdr; // Size of header in paragraphs 00533 WORD e_minalloc; // Minimum extra paragraphs needed 00534 WORD e_maxalloc; // Maximum extra paragraphs needed 00535 WORD e_ss; // Initial (relative) SS value 00536 WORD e_sp; // Initial SP value 00537 WORD e_csum; // Checksum 00538 WORD e_ip; // Initial IP value 00539 WORD e_cs; // Initial (relative) CS value 00540 WORD e_lfarlc; // File address of relocation table 00541 WORD e_ovno; // Overlay number 00542 WORD e_res[4]; // Reserved words 00543 WORD e_oemid; // OEM identifier (for e_oeminfo) 00544 WORD e_oeminfo; // OEM information; e_oemid specific 00545 WORD e_res2[10]; // Reserved words 00546 LONG e_lfanew; // File address of new exe header 00547 } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER; 00548 00549 typedef struct _IMAGE_FILE_HEADER { 00550 WORD Machine; 00551 WORD NumberOfSections; 00552 DWORD TimeDateStamp; 00553 DWORD PointerToSymbolTable; 00554 DWORD NumberOfSymbols; 00555 WORD SizeOfOptionalHeader; 00556 WORD Characteristics; 00557 } IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER; 00558 00559 typedef struct _IMAGE_DATA_DIRECTORY { 00560 DWORD VirtualAddress; 00561 DWORD Size; 00562 } IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY; 00563 #define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16 00564 00565 00566 typedef struct _IMAGE_OPTIONAL_HEADER { 00567 // 00568 // Standard fields. 00569 // 00570 00571 WORD Magic; 00572 BYTE MajorLinkerVersion; 00573 BYTE MinorLinkerVersion; 00574 DWORD SizeOfCode; 00575 DWORD SizeOfInitializedData; 00576 DWORD SizeOfUninitializedData; 00577 DWORD AddressOfEntryPoint; 00578 DWORD BaseOfCode; 00579 DWORD BaseOfData; 00580 00581 // 00582 // NT additional fields. 00583 // 00584 00585 DWORD ImageBase; 00586 DWORD SectionAlignment; 00587 DWORD FileAlignment; 00588 WORD MajorOperatingSystemVersion; 00589 WORD MinorOperatingSystemVersion; 00590 WORD MajorImageVersion; 00591 WORD MinorImageVersion; 00592 WORD MajorSubsystemVersion; 00593 WORD MinorSubsystemVersion; 00594 DWORD Win32VersionValue; 00595 DWORD SizeOfImage; 00596 DWORD SizeOfHeaders; 00597 DWORD CheckSum; 00598 WORD Subsystem; 00599 WORD DllCharacteristics; 00600 DWORD SizeOfStackReserve; 00601 DWORD SizeOfStackCommit; 00602 DWORD SizeOfHeapReserve; 00603 DWORD SizeOfHeapCommit; 00604 DWORD LoaderFlags; 00605 DWORD NumberOfRvaAndSizes; 00606 IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; 00607 } IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32; 00608 00609 typedef struct _IMAGE_NT_HEADERS { 00610 DWORD Signature; 00611 IMAGE_FILE_HEADER FileHeader; 00612 IMAGE_OPTIONAL_HEADER32 OptionalHeader; 00613 } IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32; 00614 typedef IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS; 00615 typedef PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS; 00616 00617 #define IMAGE_DIRECTORY_ENTRY_EXPORT 0 // Export Directory 00618 00619 typedef struct _IMAGE_EXPORT_DIRECTORY { 00620 DWORD Characteristics; 00621 DWORD TimeDateStamp; 00622 WORD MajorVersion; 00623 WORD MinorVersion; 00624 DWORD Name; 00625 DWORD Base; 00626 DWORD NumberOfFunctions; 00627 DWORD NumberOfNames; 00628 DWORD AddressOfFunctions; // RVA from base of image 00629 DWORD AddressOfNames; // RVA from base of image 00630 DWORD AddressOfNameOrdinals; // RVA from base of image 00631 } IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY; 00632 #endif 00633 00634 NTHALAPI 00635 VOID 00636 NTAPI 00637 HalDisplayString ( 00638 PUCHAR String 00639 ); 00640 00641 NTHALAPI 00642 VOID 00643 NTAPI 00644 HalQueryDisplayParameters ( 00645 OUT PULONG WidthInCharacters, 00646 OUT PULONG HeightInLines, 00647 OUT PULONG CursorColumn, 00648 OUT PULONG CursorRow 00649 ); 00650 00651 NTHALAPI 00652 VOID 00653 NTAPI 00654 HalSetDisplayParameters ( 00655 IN ULONG CursorColumn, 00656 IN ULONG CursorRow 00657 ); 00658 00659 extern ULONG NtBuildNumber; 00660 00661 #endif //__NTDDK_EX__H__ Generated on Fri May 25 2012 04:26:42 for ReactOS by
1.7.6.1
|