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