96c0aa5530a7b98dbc81c4efd9cb8db2a102d02e
[reactos.git] / include / ddk / ntddk.h
1 /*
2 * ntddk.h
3 *
4 * Windows Device Driver Kit
5 *
6 * This file is part of the w32api package.
7 *
8 * Contributors:
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
10 *
11 * THIS SOFTWARE IS NOT COPYRIGHTED
12 *
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
15 *
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAIMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20 *
21 * DEFINES:
22 * DBG - Debugging enabled/disabled (0/1)
23 * POOL_TAGGING - Enable pool tagging
24 * _X86_ - X86 environment
25 */
26
27 #ifndef _NTDDK_
28 #define _NTDDK_
29
30 #if !defined(_NTHAL_) && !defined(_NTIFS_)
31 #define _NTDDK_INCLUDED_
32 #define _DDK_DRIVER_
33 #endif
34
35 /* Dependencies */
36
37 #define NT_INCLUDED
38 #define _CTYPE_DISABLE_MACROS
39
40 #include <wdm.h>
41 #include <excpt.h>
42 #include <ntdef.h>
43 #include <ntstatus.h>
44
45 /* FIXME
46 #include <bugcodes.h>
47 #include <ntiologc.h>
48 */
49
50 #include <stdarg.h> // FIXME
51 #include <basetyps.h> // FIXME
52
53
54
55 //
56 // GUID and UUID
57 //
58 #ifndef GUID_DEFINED
59 #include <guiddef.h>
60 #endif
61 typedef GUID UUID;
62
63 typedef struct _BUS_HANDLER *PBUS_HANDLER;
64
65 #define KERNEL_STACK_SIZE 12288
66 #define KERNEL_LARGE_STACK_SIZE 61440
67 #define KERNEL_LARGE_STACK_COMMIT 12288
68
69 #ifdef _X86_
70
71 #define SIZE_OF_80387_REGISTERS 80
72
73 typedef struct _FLOATING_SAVE_AREA {
74 ULONG ControlWord;
75 ULONG StatusWord;
76 ULONG TagWord;
77 ULONG ErrorOffset;
78 ULONG ErrorSelector;
79 ULONG DataOffset;
80 ULONG DataSelector;
81 UCHAR RegisterArea[SIZE_OF_80387_REGISTERS];
82 ULONG Cr0NpxState;
83 } FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA;
84
85 #include "pshpack4.h"
86 typedef struct _CONTEXT {
87 ULONG ContextFlags;
88 ULONG Dr0;
89 ULONG Dr1;
90 ULONG Dr2;
91 ULONG Dr3;
92 ULONG Dr6;
93 ULONG Dr7;
94 FLOATING_SAVE_AREA FloatSave;
95 ULONG SegGs;
96 ULONG SegFs;
97 ULONG SegEs;
98 ULONG SegDs;
99 ULONG Edi;
100 ULONG Esi;
101 ULONG Ebx;
102 ULONG Edx;
103 ULONG Ecx;
104 ULONG Eax;
105 ULONG Ebp;
106 ULONG Eip;
107 ULONG SegCs;
108 ULONG EFlags;
109 ULONG Esp;
110 ULONG SegSs;
111 UCHAR ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION];
112 } CONTEXT;
113 #include "poppack.h"
114
115 #endif /* _X86_ */
116
117 #ifdef _AMD64_
118
119 #if !defined(RC_INVOKED)
120
121 #define CONTEXT_AMD64 0x100000
122
123 #define CONTEXT_CONTROL (CONTEXT_AMD64 | 0x1L)
124 #define CONTEXT_INTEGER (CONTEXT_AMD64 | 0x2L)
125 #define CONTEXT_SEGMENTS (CONTEXT_AMD64 | 0x4L)
126 #define CONTEXT_FLOATING_POINT (CONTEXT_AMD64 | 0x8L)
127 #define CONTEXT_DEBUG_REGISTERS (CONTEXT_AMD64 | 0x10L)
128
129 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT)
130 #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS)
131
132 #define CONTEXT_XSTATE (CONTEXT_AMD64 | 0x20L)
133
134 #define CONTEXT_EXCEPTION_ACTIVE 0x8000000
135 #define CONTEXT_SERVICE_ACTIVE 0x10000000
136 #define CONTEXT_EXCEPTION_REQUEST 0x40000000
137 #define CONTEXT_EXCEPTION_REPORTING 0x80000000
138
139 #endif /* RC_INVOKED */
140
141 #endif /* _AMD64_ */
142
143 typedef enum _INTERLOCKED_RESULT {
144 ResultNegative = RESULT_NEGATIVE,
145 ResultZero = RESULT_ZERO,
146 ResultPositive = RESULT_POSITIVE
147 } INTERLOCKED_RESULT;
148
149 typedef struct _OSVERSIONINFOA {
150 ULONG dwOSVersionInfoSize;
151 ULONG dwMajorVersion;
152 ULONG dwMinorVersion;
153 ULONG dwBuildNumber;
154 ULONG dwPlatformId;
155 CHAR szCSDVersion[128];
156 } OSVERSIONINFOA, *POSVERSIONINFOA, *LPOSVERSIONINFOA;
157
158 typedef struct _OSVERSIONINFOW {
159 ULONG dwOSVersionInfoSize;
160 ULONG dwMajorVersion;
161 ULONG dwMinorVersion;
162 ULONG dwBuildNumber;
163 ULONG dwPlatformId;
164 WCHAR szCSDVersion[128];
165 } OSVERSIONINFOW, *POSVERSIONINFOW, *LPOSVERSIONINFOW, RTL_OSVERSIONINFOW, *PRTL_OSVERSIONINFOW;
166
167 typedef struct _OSVERSIONINFOEXA {
168 ULONG dwOSVersionInfoSize;
169 ULONG dwMajorVersion;
170 ULONG dwMinorVersion;
171 ULONG dwBuildNumber;
172 ULONG dwPlatformId;
173 CHAR szCSDVersion[128];
174 USHORT wServicePackMajor;
175 USHORT wServicePackMinor;
176 USHORT wSuiteMask;
177 UCHAR wProductType;
178 UCHAR wReserved;
179 } OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA;
180
181 typedef struct _OSVERSIONINFOEXW {
182 ULONG dwOSVersionInfoSize;
183 ULONG dwMajorVersion;
184 ULONG dwMinorVersion;
185 ULONG dwBuildNumber;
186 ULONG dwPlatformId;
187 WCHAR szCSDVersion[128];
188 USHORT wServicePackMajor;
189 USHORT wServicePackMinor;
190 USHORT wSuiteMask;
191 UCHAR wProductType;
192 UCHAR wReserved;
193 } OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW, RTL_OSVERSIONINFOEXW, *PRTL_OSVERSIONINFOEXW;
194
195 #ifdef UNICODE
196 typedef OSVERSIONINFOEXW OSVERSIONINFOEX;
197 typedef POSVERSIONINFOEXW POSVERSIONINFOEX;
198 typedef LPOSVERSIONINFOEXW LPOSVERSIONINFOEX;
199 typedef OSVERSIONINFOW OSVERSIONINFO;
200 typedef POSVERSIONINFOW POSVERSIONINFO;
201 typedef LPOSVERSIONINFOW LPOSVERSIONINFO;
202 #else
203 typedef OSVERSIONINFOEXA OSVERSIONINFOEX;
204 typedef POSVERSIONINFOEXA POSVERSIONINFOEX;
205 typedef LPOSVERSIONINFOEXA LPOSVERSIONINFOEX;
206 typedef OSVERSIONINFOA OSVERSIONINFO;
207 typedef POSVERSIONINFOA POSVERSIONINFO;
208 typedef LPOSVERSIONINFOA LPOSVERSIONINFO;
209 #endif /* UNICODE */
210
211 typedef struct _RTL_SPLAY_LINKS {
212 struct _RTL_SPLAY_LINKS *Parent;
213 struct _RTL_SPLAY_LINKS *LeftChild;
214 struct _RTL_SPLAY_LINKS *RightChild;
215 } RTL_SPLAY_LINKS, *PRTL_SPLAY_LINKS;
216
217 #if (defined(_M_AMD64) || defined(_M_IA64)) && !defined(_REALLY_GET_CALLERS_CALLER_)
218
219 #define RtlGetCallersAddress(CallersAddress, CallersCaller) \
220 *CallersAddress = (PVOID)_ReturnAddress(); \
221 *CallersCaller = NULL;
222 #else
223
224 #if (NTDDI_VERSION >= NTDDI_WIN2K)
225 NTSYSAPI
226 VOID
227 NTAPI
228 RtlGetCallersAddress(
229 OUT PVOID *CallersAddress,
230 OUT PVOID *CallersCaller);
231 #endif
232
233 #endif
234
235 #if !defined(MIDL_PASS)
236
237 FORCEINLINE
238 LUID
239 NTAPI_INLINE
240 RtlConvertLongToLuid(
241 IN LONG Val)
242 {
243 LUID Luid;
244 LARGE_INTEGER Temp;
245
246 Temp.QuadPart = Val;
247 Luid.LowPart = Temp.u.LowPart;
248 Luid.HighPart = Temp.u.HighPart;
249 return Luid;
250 }
251
252 FORCEINLINE
253 LUID
254 NTAPI_INLINE
255 RtlConvertUlongToLuid(
256 IN ULONG Val)
257 {
258 LUID Luid;
259
260 Luid.LowPart = Val;
261 Luid.HighPart = 0;
262 return Luid;
263 }
264
265 #endif
266
267 #if (NTDDI_VERSION >= NTDDI_WIN2K)
268
269 NTSYSAPI
270 BOOLEAN
271 NTAPI
272 RtlPrefixUnicodeString(
273 IN PCUNICODE_STRING String1,
274 IN PCUNICODE_STRING String2,
275 IN BOOLEAN CaseInSensitive);
276
277 NTSYSAPI
278 VOID
279 NTAPI
280 RtlUpperString(
281 IN OUT PSTRING DestinationString,
282 IN const PSTRING SourceString);
283
284 NTSYSAPI
285 NTSTATUS
286 NTAPI
287 RtlUpcaseUnicodeString(
288 IN OUT PUNICODE_STRING DestinationString,
289 IN PCUNICODE_STRING SourceString,
290 IN BOOLEAN AllocateDestinationString);
291
292 NTSYSAPI
293 VOID
294 NTAPI
295 RtlMapGenericMask(
296 IN OUT PACCESS_MASK AccessMask,
297 IN PGENERIC_MAPPING GenericMapping);
298
299 NTSYSAPI
300 NTSTATUS
301 NTAPI
302 RtlVolumeDeviceToDosName(
303 IN PVOID VolumeDeviceObject,
304 OUT PUNICODE_STRING DosName);
305
306 NTSYSAPI
307 NTSTATUS
308 NTAPI
309 RtlGetVersion(
310 IN OUT PRTL_OSVERSIONINFOW lpVersionInformation);
311
312 NTSYSAPI
313 NTSTATUS
314 NTAPI
315 RtlVerifyVersionInfo(
316 IN PRTL_OSVERSIONINFOEXW VersionInfo,
317 IN ULONG TypeMask,
318 IN ULONGLONG ConditionMask);
319
320 NTSYSAPI
321 LONG
322 NTAPI
323 RtlCompareString(
324 IN const PSTRING String1,
325 IN const PSTRING String2,
326 BOOLEAN CaseInSensitive);
327
328 NTSYSAPI
329 VOID
330 NTAPI
331 RtlCopyString(
332 OUT PSTRING DestinationString,
333 IN const PSTRING SourceString OPTIONAL);
334
335 NTSYSAPI
336 BOOLEAN
337 NTAPI
338 RtlEqualString(
339 IN const PSTRING String1,
340 IN const PSTRING String2,
341 IN BOOLEAN CaseInSensitive);
342
343 #endif
344
345 /* Executive Types */
346
347 #define PROTECTED_POOL 0x80000000
348
349 typedef struct _ZONE_SEGMENT_HEADER {
350 SINGLE_LIST_ENTRY SegmentList;
351 PVOID Reserved;
352 } ZONE_SEGMENT_HEADER, *PZONE_SEGMENT_HEADER;
353
354 typedef struct _ZONE_HEADER {
355 SINGLE_LIST_ENTRY FreeList;
356 SINGLE_LIST_ENTRY SegmentList;
357 ULONG BlockSize;
358 ULONG TotalSegmentSize;
359 } ZONE_HEADER, *PZONE_HEADER;
360
361 /* Executive Functions */
362
363 /*
364 * BOOLEAN
365 * ExIsFullZone(
366 * IN PZONE_HEADER Zone)
367 */
368 #define ExIsFullZone(Zone) \
369 ((Zone)->FreeList.Next == (PSINGLE_LIST_ENTRY) NULL)
370
371 /* BOOLEAN
372 * ExIsObjectInFirstZoneSegment(
373 * IN PZONE_HEADER Zone,
374 * IN PVOID Object);
375 */
376 #define ExIsObjectInFirstZoneSegment(Zone,Object) \
377 ((BOOLEAN)( ((PUCHAR)(Object) >= (PUCHAR)(Zone)->SegmentList.Next) && \
378 ((PUCHAR)(Object) < (PUCHAR)(Zone)->SegmentList.Next + \
379 (Zone)->TotalSegmentSize)) )
380
381 #define ExAcquireResourceExclusive ExAcquireResourceExclusiveLite
382 #define ExAcquireResourceShared ExAcquireResourceSharedLite
383 #define ExConvertExclusiveToShared ExConvertExclusiveToSharedLite
384 #define ExDeleteResource ExDeleteResourceLite
385 #define ExInitializeResource ExInitializeResourceLite
386 #define ExIsResourceAcquiredExclusive ExIsResourceAcquiredExclusiveLite
387 #define ExIsResourceAcquiredShared ExIsResourceAcquiredSharedLite
388 #define ExIsResourceAcquired ExIsResourceAcquiredSharedLite
389 #define ExReleaseResourceForThread ExReleaseResourceForThreadLite
390
391 #if (NTDDI_VERSION >= NTDDI_WIN2K)
392
393 NTKERNELAPI
394 NTSTATUS
395 NTAPI
396 ExExtendZone(
397 IN OUT PZONE_HEADER Zone,
398 IN OUT PVOID Segment,
399 IN ULONG SegmentSize);
400
401 NTKERNELAPI
402 NTSTATUS
403 NTAPI
404 ExInitializeZone(
405 OUT PZONE_HEADER Zone,
406 IN ULONG BlockSize,
407 IN OUT PVOID InitialSegment,
408 IN ULONG InitialSegmentSize);
409
410 NTKERNELAPI
411 NTSTATUS
412 NTAPI
413 ExInterlockedExtendZone(
414 IN OUT PZONE_HEADER Zone,
415 IN OUT PVOID Segment,
416 IN ULONG SegmentSize,
417 IN OUT PKSPIN_LOCK Lock);
418
419 NTKERNELAPI
420 NTSTATUS
421 NTAPI
422 ExUuidCreate(
423 OUT UUID *Uuid);
424
425 #endif
426
427 #ifndef _ARC_DDK_
428 #define _ARC_DDK_
429 typedef enum _CONFIGURATION_TYPE {
430 ArcSystem,
431 CentralProcessor,
432 FloatingPointProcessor,
433 PrimaryIcache,
434 PrimaryDcache,
435 SecondaryIcache,
436 SecondaryDcache,
437 SecondaryCache,
438 EisaAdapter,
439 TcAdapter,
440 ScsiAdapter,
441 DtiAdapter,
442 MultiFunctionAdapter,
443 DiskController,
444 TapeController,
445 CdromController,
446 WormController,
447 SerialController,
448 NetworkController,
449 DisplayController,
450 ParallelController,
451 PointerController,
452 KeyboardController,
453 AudioController,
454 OtherController,
455 DiskPeripheral,
456 FloppyDiskPeripheral,
457 TapePeripheral,
458 ModemPeripheral,
459 MonitorPeripheral,
460 PrinterPeripheral,
461 PointerPeripheral,
462 KeyboardPeripheral,
463 TerminalPeripheral,
464 OtherPeripheral,
465 LinePeripheral,
466 NetworkPeripheral,
467 SystemMemory,
468 DockingInformation,
469 RealModeIrqRoutingTable,
470 RealModePCIEnumeration,
471 MaximumType
472 } CONFIGURATION_TYPE, *PCONFIGURATION_TYPE;
473 #endif /* !_ARC_DDK_ */
474
475 typedef struct _CONTROLLER_OBJECT {
476 CSHORT Type;
477 CSHORT Size;
478 PVOID ControllerExtension;
479 KDEVICE_QUEUE DeviceWaitQueue;
480 ULONG Spare1;
481 LARGE_INTEGER Spare2;
482 } CONTROLLER_OBJECT, *PCONTROLLER_OBJECT;
483
484 typedef struct _CONFIGURATION_INFORMATION {
485 ULONG DiskCount;
486 ULONG FloppyCount;
487 ULONG CdRomCount;
488 ULONG TapeCount;
489 ULONG ScsiPortCount;
490 ULONG SerialCount;
491 ULONG ParallelCount;
492 BOOLEAN AtDiskPrimaryAddressClaimed;
493 BOOLEAN AtDiskSecondaryAddressClaimed;
494 ULONG Version;
495 ULONG MediumChangerCount;
496 } CONFIGURATION_INFORMATION, *PCONFIGURATION_INFORMATION;
497
498 typedef
499 NTSTATUS
500 (DDKAPI *PIO_QUERY_DEVICE_ROUTINE)(
501 IN PVOID Context,
502 IN PUNICODE_STRING PathName,
503 IN INTERFACE_TYPE BusType,
504 IN ULONG BusNumber,
505 IN PKEY_VALUE_FULL_INFORMATION *BusInformation,
506 IN CONFIGURATION_TYPE ControllerType,
507 IN ULONG ControllerNumber,
508 IN PKEY_VALUE_FULL_INFORMATION *ControllerInformation,
509 IN CONFIGURATION_TYPE PeripheralType,
510 IN ULONG PeripheralNumber,
511 IN PKEY_VALUE_FULL_INFORMATION *PeripheralInformation);
512
513 typedef
514 VOID
515 (DDKAPI DRIVER_REINITIALIZE)(
516 IN struct _DRIVER_OBJECT *DriverObject,
517 IN PVOID Context,
518 IN ULONG Count);
519
520 typedef DRIVER_REINITIALIZE *PDRIVER_REINITIALIZE;
521
522 /* I/O Manager Functions */
523
524 #if (NTDDI_VERSION >= NTDDI_WIN2K)
525
526 #if !(defined(USE_DMA_MACROS) && (defined(_NTDDK_) || defined(_NTDRIVER_)) || defined(_WDM_INCLUDED_))
527 NTKERNELAPI
528 NTSTATUS
529 NTAPI
530 IoAllocateAdapterChannel(
531 IN PADAPTER_OBJECT AdapterObject,
532 IN PDEVICE_OBJECT DeviceObject,
533 IN ULONG NumberOfMapRegisters,
534 IN PDRIVER_CONTROL ExecutionRoutine,
535 IN PVOID Context);
536 #endif
537
538 //DECLSPEC_DEPRECATED_DDK
539 NTHALAPI
540 PHYSICAL_ADDRESS
541 NTAPI
542 IoMapTransfer(
543 IN PADAPTER_OBJECT AdapterObject,
544 IN PMDL Mdl,
545 IN PVOID MapRegisterBase,
546 IN PVOID CurrentVa,
547 IN OUT PULONG Length,
548 IN BOOLEAN WriteToDevice);
549
550 NTKERNELAPI
551 VOID
552 NTAPI
553 IoAllocateController(
554 IN PCONTROLLER_OBJECT ControllerObject,
555 IN PDEVICE_OBJECT DeviceObject,
556 IN PDRIVER_CONTROL ExecutionRoutine,
557 IN PVOID Context OPTIONAL);
558
559 NTKERNELAPI
560 PCONTROLLER_OBJECT
561 NTAPI
562 IoCreateController(
563 IN ULONG Size);
564
565 NTKERNELAPI
566 VOID
567 NTAPI
568 IoDeleteController(
569 IN PCONTROLLER_OBJECT ControllerObject);
570
571 NTKERNELAPI
572 VOID
573 NTAPI
574 IoFreeController(
575 IN PCONTROLLER_OBJECT ControllerObject);
576
577 NTKERNELAPI
578 PCONFIGURATION_INFORMATION
579 NTAPI
580 IoGetConfigurationInformation(
581 VOID);
582
583 NTKERNELAPI
584 PDEVICE_OBJECT
585 NTAPI
586 IoGetDeviceToVerify(
587 IN PETHREAD Thread);
588
589 NTKERNELAPI
590 VOID
591 NTAPI
592 IoCancelFileOpen(
593 IN PDEVICE_OBJECT DeviceObject,
594 IN PFILE_OBJECT FileObject);
595
596 NTKERNELAPI
597 PGENERIC_MAPPING
598 NTAPI
599 IoGetFileObjectGenericMapping(
600 VOID);
601
602 NTKERNELAPI
603 PIRP
604 NTAPI
605 IoMakeAssociatedIrp(
606 IN PIRP Irp,
607 IN CCHAR StackSize);
608
609 NTKERNELAPI
610 NTSTATUS
611 NTAPI
612 IoQueryDeviceDescription(
613 IN PINTERFACE_TYPE BusType OPTIONAL,
614 IN PULONG BusNumber OPTIONAL,
615 IN PCONFIGURATION_TYPE ControllerType OPTIONAL,
616 IN PULONG ControllerNumber OPTIONAL,
617 IN PCONFIGURATION_TYPE PeripheralType OPTIONAL,
618 IN PULONG PeripheralNumber OPTIONAL,
619 IN PIO_QUERY_DEVICE_ROUTINE CalloutRoutine,
620 IN OUT PVOID Context OPTIONAL);
621
622 NTKERNELAPI
623 VOID
624 NTAPI
625 IoRaiseHardError(
626 IN PIRP Irp,
627 IN PVPB Vpb OPTIONAL,
628 IN PDEVICE_OBJECT RealDeviceObject);
629
630 NTKERNELAPI
631 BOOLEAN
632 NTAPI
633 IoRaiseInformationalHardError(
634 IN NTSTATUS ErrorStatus,
635 IN PUNICODE_STRING String OPTIONAL,
636 IN PKTHREAD Thread OPTIONAL);
637
638 NTKERNELAPI
639 VOID
640 NTAPI
641 IoRegisterBootDriverReinitialization(
642 IN PDRIVER_OBJECT DriverObject,
643 IN PDRIVER_REINITIALIZE DriverReinitializationRoutine,
644 IN PVOID Context OPTIONAL);
645
646 NTKERNELAPI
647 VOID
648 NTAPI
649 IoRegisterDriverReinitialization(
650 IN PDRIVER_OBJECT DriverObject,
651 IN PDRIVER_REINITIALIZE DriverReinitializationRoutine,
652 IN PVOID Context OPTIONAL);
653
654 NTKERNELAPI
655 NTSTATUS
656 NTAPI
657 IoAttachDeviceByPointer(
658 IN PDEVICE_OBJECT SourceDevice,
659 IN PDEVICE_OBJECT TargetDevice);
660
661 #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
662
663
664 /* Memory Manager Types */
665
666 typedef struct _PHYSICAL_MEMORY_RANGE {
667 PHYSICAL_ADDRESS BaseAddress;
668 LARGE_INTEGER NumberOfBytes;
669 } PHYSICAL_MEMORY_RANGE, *PPHYSICAL_MEMORY_RANGE;
670
671 /* Memory Manager Functions */
672
673 #if (NTDDI_VERSION >= NTDDI_WIN2K)
674
675 NTKERNELAPI
676 PPHYSICAL_MEMORY_RANGE
677 NTAPI
678 MmGetPhysicalMemoryRanges(
679 VOID);
680
681 NTKERNELAPI
682 PHYSICAL_ADDRESS
683 NTAPI
684 MmGetPhysicalAddress(
685 IN PVOID BaseAddress);
686
687 #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
688
689 /* Windows Device Driver Kit */
690 #include "winddk.h"
691
692
693 #endif /* _NTDDK_ */