ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

ntddk_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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.