6949845b4c01551ba1843b079ed8d8202abec448
[reactos.git] / drivers / storage / ide / uniata / ntddk_ex.h
1 #ifndef __NTDDK_EX__H__
2 #define __NTDDK_EX__H__
3
4 //#ifndef USE_REACTOS_DDK
5 #ifdef ASSERT
6 #undef ASSERT
7 #define ASSERT(x) ((void)0)
8 #endif //ASSERT
9 //#endif //USE_REACTOS_DDK
10
11
12 #if !defined(FILE_CHARACTERISTIC_PNP_DEVICE) || defined(USE_REACTOS_DDK) // DDK 2003
13
14 #ifndef FILE_CHARACTERISTIC_PNP_DEVICE
15 #define FILE_CHARACTERISTIC_PNP_DEVICE 0x00000800
16 #endif
17
18 typedef enum _SYSTEM_INFORMATION_CLASS {
19 SystemBasicInformation,
20 SystemProcessorInformation,
21 SystemPerformanceInformation,
22 SystemTimeOfDayInformation,
23 SystemPathInformation,
24 SystemProcessInformation,
25 SystemCallCountInformation,
26 SystemDeviceInformation,
27 SystemProcessorPerformanceInformation,
28 SystemFlagsInformation,
29 SystemCallTimeInformation,
30 SystemModuleInformation,
31 SystemLocksInformation,
32 SystemStackTraceInformation,
33 SystemPagedPoolInformation,
34 SystemNonPagedPoolInformation,
35 SystemHandleInformation,
36 SystemObjectInformation,
37 SystemPageFileInformation,
38 SystemVdmInstemulInformation,
39 SystemVdmBopInformation,
40 SystemFileCacheInformation,
41 SystemPoolTagInformation,
42 SystemInterruptInformation,
43 SystemDpcBehaviorInformation,
44 SystemFullMemoryInformation,
45 SystemLoadGdiDriverInformation,
46 SystemUnloadGdiDriverInformation,
47 SystemTimeAdjustmentInformation,
48 SystemSummaryMemoryInformation,
49 #ifndef USE_REACTOS_DDK
50 SystemNextEventIdInformation,
51 SystemEventIdsInformation,
52 SystemCrashDumpInformation,
53 #else
54 SystemMirrorMemoryInformation,
55 SystemPerformanceTraceInformation,
56 SystemObsolete0,
57 #endif // USE_REACTOS_DDK
58 SystemExceptionInformation,
59 SystemCrashDumpStateInformation,
60 SystemKernelDebuggerInformation,
61 SystemContextSwitchInformation,
62 SystemRegistryQuotaInformation,
63 SystemExtendServiceTableInformation,
64 SystemPrioritySeperation,
65 SystemPlugPlayBusInformation,
66 SystemDockInformation,
67 #ifdef USE_REACTOS_DDK
68 SystemPowerInformationNative,
69 #elif defined IRP_MN_START_DEVICE
70 SystemPowerInformationInfo,
71 #else
72 SystemPowerInformation,
73 #endif // USE_REACTOS_DDK
74 SystemProcessorSpeedInformation,
75 SystemCurrentTimeZoneInformation,
76 SystemLookasideInformation,
77 #ifdef USE_REACTOS_DDK
78 SystemTimeSlipNotification,
79 SystemSessionCreate,
80 SystemSessionDetach,
81 SystemSessionInformation,
82 SystemRangeStartInformation,
83 SystemVerifierInformation,
84 SystemAddVerifier,
85 SystemSessionProcessesInformation,
86 SystemLoadGdiDriverInSystemSpaceInformation,
87 SystemNumaProcessorMap,
88 SystemPrefetcherInformation,
89 SystemExtendedProcessInformation,
90 SystemRecommendedSharedDataAlignment,
91 SystemComPlusPackage,
92 SystemNumaAvailableMemory,
93 SystemProcessorPowerInformation,
94 SystemEmulationBasicInformation,
95 SystemEmulationProcessorInformation,
96 #ifdef __REACTOS__
97 SystemExtendedHandleInformation,
98 #else // Typo!
99 SystemExtendedHanfleInformation,
100 #endif
101 SystemLostDelayedWriteInformation,
102 SystemBigPoolInformation,
103 SystemSessionPoolTagInformation,
104 SystemSessionMappedViewInformation,
105 SystemHotpatchInformation,
106 SystemObjectSecurityMode,
107 SystemWatchDogTimerHandler,
108 SystemWatchDogTimerInformation,
109 SystemLogicalProcessorInformation,
110 SystemWo64SharedInformationObosolete,
111 SystemRegisterFirmwareTableInformationHandler,
112 SystemFirmwareTableInformation,
113 SystemModuleInformationEx,
114 SystemVerifierTriageInformation,
115 SystemSuperfetchInformation,
116 SystemMemoryListInformation,
117 SystemFileCacheInformationEx,
118 SystemThreadPriorityClientIdInformation,
119 SystemProcessorIdleCycleTimeInformation,
120 SystemVerifierCancellationInformation,
121 SystemProcessorPowerInformationEx,
122 SystemRefTraceInformation,
123 SystemSpecialPoolInformation,
124 SystemProcessIdInformation,
125 SystemErrorPortInformation,
126 SystemBootEnvironmentInformation,
127 SystemHypervisorInformation,
128 SystemVerifierInformationEx,
129 SystemTimeZoneInformation,
130 SystemImageFileExecutionOptionsInformation,
131 SystemCoverageInformation,
132 SystemPrefetchPathInformation,
133 SystemVerifierFaultsInformation,
134 MaxSystemInfoClass,
135 #endif // USE_REACTOS_DDK
136 } SYSTEM_INFORMATION_CLASS;
137
138 #endif // !defined(FILE_CHARACTERISTIC_PNP_DEVICE) || defined(USE_REACTOS_DDK)
139
140
141 NTSYSAPI
142 NTSTATUS
143 NTAPI
144 ZwQuerySystemInformation(
145 IN SYSTEM_INFORMATION_CLASS SystemInfoClass,
146 OUT PVOID SystemInfoBuffer,
147 IN ULONG SystemInfoBufferSize,
148 OUT PULONG BytesReturned OPTIONAL
149 );
150
151 NTSYSAPI
152 NTSTATUS
153 NTAPI
154 NtQuerySystemInformation(
155 IN SYSTEM_INFORMATION_CLASS SystemInfoClass,
156 OUT PVOID SystemInfoBuffer,
157 IN ULONG SystemInfoBufferSize,
158 OUT PULONG BytesReturned OPTIONAL
159 );
160
161 typedef struct _SYSTEM_BASIC_INFORMATION {
162 ULONG Reserved;
163 ULONG TimerResolution;
164 ULONG PageSize;
165 ULONG NumberOfPhysicalPages;
166 ULONG LowestPhysicalPageNumber;
167 ULONG HighestPhysicalPageNumber;
168 ULONG AllocationGranularity;
169 ULONG MinimumUserModeAddress;
170 ULONG MaximumUserModeAddress;
171 KAFFINITY ActiveProcessorsAffinityMask;
172 CCHAR NumberOfProcessors;
173 } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
174
175 typedef struct _SYSTEM_MODULE_ENTRY
176 {
177 ULONG Unused;
178 ULONG Always0;
179 PVOID ModuleBaseAddress;
180 ULONG ModuleSize;
181 ULONG Unknown;
182 ULONG ModuleEntryIndex;
183 USHORT ModuleNameLength;
184 USHORT ModuleNameOffset;
185 CHAR ModuleName [256];
186 } SYSTEM_MODULE_ENTRY, * PSYSTEM_MODULE_ENTRY;
187
188 typedef struct _SYSTEM_MODULE_INFORMATION
189 {
190 ULONG Count;
191 SYSTEM_MODULE_ENTRY Module [1];
192 } SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;
193
194 typedef unsigned short WORD;
195 #ifndef __REACTOS__
196 typedef unsigned int BOOL;
197 #endif //__REACTOS__
198 typedef unsigned long DWORD;
199 typedef unsigned char BYTE;
200
201
202 typedef struct _LDR_DATA_TABLE_ENTRY {
203 LIST_ENTRY LoadOrder;
204 LIST_ENTRY MemoryOrder;
205 LIST_ENTRY InitializationOrder;
206 PVOID ModuleBaseAddress;
207 PVOID EntryPoint;
208 ULONG ModuleSize;
209 UNICODE_STRING FullModuleName;
210 UNICODE_STRING ModuleName;
211 ULONG Flags;
212 USHORT LoadCount;
213 USHORT TlsIndex;
214 union {
215 LIST_ENTRY Hash;
216 struct {
217 PVOID SectionPointer;
218 ULONG CheckSum;
219 };
220 };
221 ULONG TimeStamp;
222 } LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY;
223
224 typedef struct _PEB_LDR_DATA {
225 ULONG Length;
226 BOOLEAN Initialized;
227 HANDLE SsHandle;
228 LIST_ENTRY LoadOrder;
229 LIST_ENTRY MemoryOrder;
230 LIST_ENTRY InitializationOrder;
231 } PEB_LDR_DATA, *PPEB_LDR_DATA;
232
233 typedef struct _PEB_FREE_BLOCK {
234 struct _PEB_FREE_BLOCK *Next;
235 ULONG Size;
236 } PEB_FREE_BLOCK, *PPEB_FREE_BLOCK;
237
238 #define GDI_HANDLE_BUFFER_SIZE 34
239
240 #define TLS_MINIMUM_AVAILABLE 64 // winnt
241
242 typedef struct _PEB {
243 BOOLEAN InheritedAddressSpace; // These four fields cannot change unless the
244 BOOLEAN ReadImageFileExecOptions; //
245 BOOLEAN BeingDebugged; //
246 BOOLEAN SpareBool; //
247 HANDLE Mutant; // INITIAL_PEB structure is also updated.
248
249 PVOID ImageBaseAddress;
250 PPEB_LDR_DATA Ldr;
251 struct _RTL_USER_PROCESS_PARAMETERS *ProcessParameters;
252 PVOID SubSystemData;
253 PVOID ProcessHeap;
254 PVOID FastPebLock;
255 PVOID FastPebLockRoutine;
256 PVOID FastPebUnlockRoutine;
257 ULONG EnvironmentUpdateCount;
258 PVOID KernelCallbackTable;
259 HANDLE EventLogSection;
260 PVOID EventLog;
261 PPEB_FREE_BLOCK FreeList;
262 ULONG TlsExpansionCounter;
263 PVOID TlsBitmap;
264 ULONG TlsBitmapBits[2]; // relates to TLS_MINIMUM_AVAILABLE
265 PVOID ReadOnlySharedMemoryBase;
266 PVOID ReadOnlySharedMemoryHeap;
267 PVOID *ReadOnlyStaticServerData;
268 PVOID AnsiCodePageData;
269 PVOID OemCodePageData;
270 PVOID UnicodeCaseTableData;
271
272 // Useful information for LdrpInitialize
273 ULONG NumberOfProcessors;
274 ULONG NtGlobalFlag;
275
276 // Passed up from MmCreatePeb from Session Manager registry key
277
278 LARGE_INTEGER CriticalSectionTimeout;
279 ULONG HeapSegmentReserve;
280 ULONG HeapSegmentCommit;
281 ULONG HeapDeCommitTotalFreeThreshold;
282 ULONG HeapDeCommitFreeBlockThreshold;
283
284 // Where heap manager keeps track of all heaps created for a process
285 // Fields initialized by MmCreatePeb. ProcessHeaps is initialized
286 // to point to the first free byte after the PEB and MaximumNumberOfHeaps
287 // is computed from the page size used to hold the PEB, less the fixed
288 // size of this data structure.
289
290 ULONG NumberOfHeaps;
291 ULONG MaximumNumberOfHeaps;
292 PVOID *ProcessHeaps;
293
294 //
295 //
296 PVOID GdiSharedHandleTable;
297 PVOID ProcessStarterHelper;
298 PVOID GdiDCAttributeList;
299 PVOID LoaderLock;
300
301 // Following fields filled in by MmCreatePeb from system values and/or
302 // image header.
303
304 ULONG OSMajorVersion;
305 ULONG OSMinorVersion;
306 ULONG OSBuildNumber;
307 ULONG OSPlatformId;
308 ULONG ImageSubsystem;
309 ULONG ImageSubsystemMajorVersion;
310 ULONG ImageSubsystemMinorVersion;
311 ULONG ImageProcessAffinityMask;
312 ULONG GdiHandleBuffer[GDI_HANDLE_BUFFER_SIZE];
313 } PEB, *PPEB;
314
315 //
316 // Gdi command batching
317 //
318
319 #define GDI_BATCH_BUFFER_SIZE 310
320
321 typedef struct _GDI_TEB_BATCH {
322 ULONG Offset;
323 ULONG HDC;
324 ULONG Buffer[GDI_BATCH_BUFFER_SIZE];
325 } GDI_TEB_BATCH,*PGDI_TEB_BATCH;
326
327 //
328 // TEB - The thread environment block
329 //
330
331 #define STATIC_UNICODE_BUFFER_LENGTH 261
332 #define WIN32_CLIENT_INFO_LENGTH 31
333 #define WIN32_CLIENT_INFO_SPIN_COUNT 1
334
335 typedef struct _TEB {
336 NT_TIB NtTib;
337 PVOID EnvironmentPointer;
338 CLIENT_ID ClientId;
339 PVOID ActiveRpcHandle;
340 PVOID ThreadLocalStoragePointer;
341 PPEB ProcessEnvironmentBlock;
342 ULONG LastErrorValue;
343 ULONG CountOfOwnedCriticalSections;
344 PVOID CsrClientThread;
345 PVOID Win32ThreadInfo; // PtiCurrent
346 ULONG Win32ClientInfo[WIN32_CLIENT_INFO_LENGTH]; // User32 Client Info
347 PVOID WOW32Reserved; // used by WOW
348 LCID CurrentLocale;
349 ULONG FpSoftwareStatusRegister;
350 PVOID SystemReserved1[54]; // Used by FP emulator
351 PVOID Spare1; // unused
352 NTSTATUS ExceptionCode; // for RaiseUserException
353 UCHAR SpareBytes1[40];
354 PVOID SystemReserved2[10]; // Used by user/console for temp obja
355 GDI_TEB_BATCH GdiTebBatch; // Gdi batching
356 ULONG gdiRgn;
357 ULONG gdiPen;
358 ULONG gdiBrush;
359 CLIENT_ID RealClientId;
360 HANDLE GdiCachedProcessHandle;
361 ULONG GdiClientPID;
362 ULONG GdiClientTID;
363 PVOID GdiThreadLocalInfo;
364 PVOID UserReserved[5]; // unused
365 PVOID glDispatchTable[280]; // OpenGL
366 ULONG glReserved1[26]; // OpenGL
367 PVOID glReserved2; // OpenGL
368 PVOID glSectionInfo; // OpenGL
369 PVOID glSection; // OpenGL
370 PVOID glTable; // OpenGL
371 PVOID glCurrentRC; // OpenGL
372 PVOID glContext; // OpenGL
373 ULONG LastStatusValue;
374 UNICODE_STRING StaticUnicodeString;
375 WCHAR StaticUnicodeBuffer[STATIC_UNICODE_BUFFER_LENGTH];
376 PVOID DeallocationStack;
377 PVOID TlsSlots[TLS_MINIMUM_AVAILABLE];
378 LIST_ENTRY TlsLinks;
379 PVOID Vdm;
380 PVOID ReservedForNtRpc;
381 PVOID DbgSsReserved[2];
382 ULONG HardErrorsAreDisabled;
383 PVOID Instrumentation[16];
384 PVOID WinSockData; // WinSock
385 ULONG GdiBatchCount;
386 ULONG Spare2;
387 ULONG Spare3;
388 ULONG Spare4;
389 PVOID ReservedForOle;
390 ULONG WaitingOnLoaderLock;
391 } TEB;
392 typedef TEB *PTEB;
393
394 typedef struct _KTHREAD_HDR {
395
396 //
397 // The dispatcher header and mutant listhead are faifly infrequently
398 // referenced, but pad the thread to a 32-byte boundary (assumption
399 // that pool allocation is in units of 32-bytes).
400 //
401
402 DISPATCHER_HEADER Header;
403 LIST_ENTRY MutantListHead;
404
405 //
406 // The following fields are referenced during trap, interrupts, or
407 // context switches.
408 //
409 // N.B. The Teb address and TlsArray are loaded as a quadword quantity
410 // on MIPS and therefore must to on a quadword boundary.
411 //
412
413 PVOID InitialStack;
414 PVOID StackLimit;
415 PVOID Teb;
416 PVOID TlsArray;
417 PVOID KernelStack;
418 BOOLEAN DebugActive;
419 UCHAR State;
420 BOOLEAN Alerted[MaximumMode];
421 UCHAR Iopl;
422 UCHAR NpxState;
423 BOOLEAN Saturation;
424 SCHAR Priority;
425 /* KAPC_STATE ApcState;
426 ULONG ContextSwitches;
427
428 //
429 // The following fields are referenced during wait operations.
430 //
431
432 NTSTATUS WaitStatus;
433 KIRQL WaitIrql;
434 KPROCESSOR_MODE WaitMode;
435 BOOLEAN WaitNext;
436 UCHAR WaitReason;
437 PRKWAIT_BLOCK WaitBlockList;
438 LIST_ENTRY WaitListEntry;
439 ULONG WaitTime;
440 SCHAR BasePriority;
441 UCHAR DecrementCount;
442 SCHAR PriorityDecrement;
443 SCHAR Quantum;
444 KWAIT_BLOCK WaitBlock[THREAD_WAIT_OBJECTS + 1];
445 PVOID LegoData;
446 ULONG KernelApcDisable;
447 KAFFINITY UserAffinity;
448 BOOLEAN SystemAffinityActive;
449 UCHAR Pad[3];
450 PVOID ServiceTable;
451 // struct _ECHANNEL *Channel;
452 // PVOID Section;
453 // PCHANNEL_MESSAGE SystemView;
454 // PCHANNEL_MESSAGE ThreadView;
455
456 //
457 // The following fields are referenced during queue operations.
458 //
459
460 PRKQUEUE Queue;
461 KSPIN_LOCK ApcQueueLock;
462 KTIMER Timer;
463 LIST_ENTRY QueueListEntry;
464
465 //
466 // The following fields are referenced during read and find ready
467 // thread.
468 //
469
470 KAFFINITY Affinity;
471 BOOLEAN Preempted;
472 BOOLEAN ProcessReadyQueue;
473 BOOLEAN KernelStackResident;
474 UCHAR NextProcessor;
475
476 //
477 // The following fields are referenced suring system calls.
478 //
479
480 PVOID CallbackStack;
481 PVOID Win32Thread;
482 PKTRAP_FRAME TrapFrame;
483 PKAPC_STATE ApcStatePointer[2];
484 UCHAR EnableStackSwap;
485 UCHAR LargeStack;
486 UCHAR ResourceIndex;
487 CCHAR PreviousMode;
488
489 //
490 // The following entries are reference during clock interrupts.
491 //
492
493 ULONG KernelTime;
494 ULONG UserTime;
495
496 //
497 // The following fileds are referenced during APC queuing and process
498 // attach/detach.
499 //
500
501 KAPC_STATE SavedApcState;
502 BOOLEAN Alertable;
503 UCHAR ApcStateIndex;
504 BOOLEAN ApcQueueable;
505 BOOLEAN AutoAlignment;
506
507 //
508 // The following fields are referenced when the thread is initialized
509 // and very infrequently thereafter.
510 //
511
512 PVOID StackBase;
513 KAPC SuspendApc;
514 KSEMAPHORE SuspendSemaphore;
515 LIST_ENTRY ThreadListEntry;
516
517 //
518 // N.B. The below four UCHARs share the same DWORD and are modified
519 // by other threads. Therefore, they must ALWAYS be modified
520 // under the dispatcher lock to prevent granularity problems
521 // on Alpha machines.
522 //
523 CCHAR FreezeCount;
524 CCHAR SuspendCount;
525 UCHAR IdealProcessor;
526 UCHAR DisableBoost;
527 */
528 } KTHREAD_HDR, *PKTHREAD_HDR;
529
530 #ifndef __REACTOS__
531 typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header
532 WORD e_magic; // Magic number
533 WORD e_cblp; // Bytes on last page of file
534 WORD e_cp; // Pages in file
535 WORD e_crlc; // Relocations
536 WORD e_cparhdr; // Size of header in paragraphs
537 WORD e_minalloc; // Minimum extra paragraphs needed
538 WORD e_maxalloc; // Maximum extra paragraphs needed
539 WORD e_ss; // Initial (relative) SS value
540 WORD e_sp; // Initial SP value
541 WORD e_csum; // Checksum
542 WORD e_ip; // Initial IP value
543 WORD e_cs; // Initial (relative) CS value
544 WORD e_lfarlc; // File address of relocation table
545 WORD e_ovno; // Overlay number
546 WORD e_res[4]; // Reserved words
547 WORD e_oemid; // OEM identifier (for e_oeminfo)
548 WORD e_oeminfo; // OEM information; e_oemid specific
549 WORD e_res2[10]; // Reserved words
550 LONG e_lfanew; // File address of new exe header
551 } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
552
553 typedef struct _IMAGE_FILE_HEADER {
554 WORD Machine;
555 WORD NumberOfSections;
556 DWORD TimeDateStamp;
557 DWORD PointerToSymbolTable;
558 DWORD NumberOfSymbols;
559 WORD SizeOfOptionalHeader;
560 WORD Characteristics;
561 } IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
562
563 typedef struct _IMAGE_DATA_DIRECTORY {
564 DWORD VirtualAddress;
565 DWORD Size;
566 } IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;
567 #define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16
568
569
570 typedef struct _IMAGE_OPTIONAL_HEADER {
571 //
572 // Standard fields.
573 //
574
575 WORD Magic;
576 BYTE MajorLinkerVersion;
577 BYTE MinorLinkerVersion;
578 DWORD SizeOfCode;
579 DWORD SizeOfInitializedData;
580 DWORD SizeOfUninitializedData;
581 DWORD AddressOfEntryPoint;
582 DWORD BaseOfCode;
583 DWORD BaseOfData;
584
585 //
586 // NT additional fields.
587 //
588
589 DWORD ImageBase;
590 DWORD SectionAlignment;
591 DWORD FileAlignment;
592 WORD MajorOperatingSystemVersion;
593 WORD MinorOperatingSystemVersion;
594 WORD MajorImageVersion;
595 WORD MinorImageVersion;
596 WORD MajorSubsystemVersion;
597 WORD MinorSubsystemVersion;
598 DWORD Win32VersionValue;
599 DWORD SizeOfImage;
600 DWORD SizeOfHeaders;
601 DWORD CheckSum;
602 WORD Subsystem;
603 WORD DllCharacteristics;
604 DWORD SizeOfStackReserve;
605 DWORD SizeOfStackCommit;
606 DWORD SizeOfHeapReserve;
607 DWORD SizeOfHeapCommit;
608 DWORD LoaderFlags;
609 DWORD NumberOfRvaAndSizes;
610 IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
611 } IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32;
612
613 typedef struct _IMAGE_NT_HEADERS {
614 DWORD Signature;
615 IMAGE_FILE_HEADER FileHeader;
616 IMAGE_OPTIONAL_HEADER32 OptionalHeader;
617 } IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32;
618 typedef IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS;
619 typedef PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS;
620
621 #define IMAGE_DIRECTORY_ENTRY_EXPORT 0 // Export Directory
622
623 typedef struct _IMAGE_EXPORT_DIRECTORY {
624 DWORD Characteristics;
625 DWORD TimeDateStamp;
626 WORD MajorVersion;
627 WORD MinorVersion;
628 DWORD Name;
629 DWORD Base;
630 DWORD NumberOfFunctions;
631 DWORD NumberOfNames;
632 DWORD AddressOfFunctions; // RVA from base of image
633 DWORD AddressOfNames; // RVA from base of image
634 DWORD AddressOfNameOrdinals; // RVA from base of image
635 } IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY;
636 #endif
637
638 NTHALAPI
639 VOID
640 NTAPI
641 HalDisplayString (
642 PUCHAR String
643 );
644
645 NTHALAPI
646 VOID
647 NTAPI
648 HalQueryDisplayParameters (
649 OUT PULONG WidthInCharacters,
650 OUT PULONG HeightInLines,
651 OUT PULONG CursorColumn,
652 OUT PULONG CursorRow
653 );
654
655 NTHALAPI
656 VOID
657 NTAPI
658 HalSetDisplayParameters (
659 IN ULONG CursorColumn,
660 IN ULONG CursorRow
661 );
662
663 extern ULONG NtBuildNumber;
664
665 #endif //__NTDDK_EX__H__