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