1 /* Hardware Abstraction Layer Types */ 2 3 $if (_NTDDK_) 4 typedef BOOLEAN 5 (NTAPI *PHAL_RESET_DISPLAY_PARAMETERS)( 6 _In_ ULONG Columns, 7 _In_ ULONG Rows); 8 9 typedef PBUS_HANDLER 10 (FASTCALL *pHalHandlerForBus)( 11 _In_ INTERFACE_TYPE InterfaceType, 12 _In_ ULONG BusNumber); 13 14 typedef VOID 15 (FASTCALL *pHalReferenceBusHandler)( 16 _In_ PBUS_HANDLER BusHandler); 17 18 typedef enum _HAL_QUERY_INFORMATION_CLASS { 19 HalInstalledBusInformation, 20 HalProfileSourceInformation, 21 HalInformationClassUnused1, 22 HalPowerInformation, 23 HalProcessorSpeedInformation, 24 HalCallbackInformation, 25 HalMapRegisterInformation, 26 HalMcaLogInformation, 27 HalFrameBufferCachingInformation, 28 HalDisplayBiosInformation, 29 HalProcessorFeatureInformation, 30 HalNumaTopologyInterface, 31 HalErrorInformation, 32 HalCmcLogInformation, 33 HalCpeLogInformation, 34 HalQueryMcaInterface, 35 HalQueryAMLIIllegalIOPortAddresses, 36 HalQueryMaxHotPlugMemoryAddress, 37 HalPartitionIpiInterface, 38 HalPlatformInformation, 39 HalQueryProfileSourceList, 40 HalInitLogInformation, 41 HalFrequencyInformation, 42 HalProcessorBrandString, 43 HalHypervisorInformation, 44 HalPlatformTimerInformation, 45 HalAcpiAuditInformation 46 } HAL_QUERY_INFORMATION_CLASS, *PHAL_QUERY_INFORMATION_CLASS; 47 48 typedef enum _HAL_SET_INFORMATION_CLASS { 49 HalProfileSourceInterval, 50 HalProfileSourceInterruptHandler, 51 HalMcaRegisterDriver, 52 HalKernelErrorHandler, 53 HalCmcRegisterDriver, 54 HalCpeRegisterDriver, 55 HalMcaLog, 56 HalCmcLog, 57 HalCpeLog, 58 HalGenerateCmcInterrupt, 59 HalProfileSourceTimerHandler, 60 HalEnlightenment, 61 HalProfileDpgoSourceInterruptHandler 62 } HAL_SET_INFORMATION_CLASS, *PHAL_SET_INFORMATION_CLASS; 63 64 typedef NTSTATUS 65 (NTAPI *pHalQuerySystemInformation)( 66 _In_ HAL_QUERY_INFORMATION_CLASS InformationClass, 67 _In_ ULONG BufferSize, 68 _Inout_updates_bytes_to_(BufferSize, *ReturnedLength) PVOID Buffer, 69 _Out_ PULONG ReturnedLength); 70 71 typedef NTSTATUS 72 (NTAPI *pHalSetSystemInformation)( 73 _In_ HAL_SET_INFORMATION_CLASS InformationClass, 74 _In_ ULONG BufferSize, 75 _In_ PVOID Buffer); 76 77 typedef VOID 78 (FASTCALL *pHalExamineMBR)( 79 _In_ PDEVICE_OBJECT DeviceObject, 80 _In_ ULONG SectorSize, 81 _In_ ULONG MBRTypeIdentifier, 82 _Out_ PVOID *Buffer); 83 84 typedef NTSTATUS 85 (FASTCALL *pHalIoReadPartitionTable)( 86 _In_ PDEVICE_OBJECT DeviceObject, 87 _In_ ULONG SectorSize, 88 _In_ BOOLEAN ReturnRecognizedPartitions, 89 _Out_ struct _DRIVE_LAYOUT_INFORMATION **PartitionBuffer); 90 91 typedef NTSTATUS 92 (FASTCALL *pHalIoSetPartitionInformation)( 93 _In_ PDEVICE_OBJECT DeviceObject, 94 _In_ ULONG SectorSize, 95 _In_ ULONG PartitionNumber, 96 _In_ ULONG PartitionType); 97 98 typedef NTSTATUS 99 (FASTCALL *pHalIoWritePartitionTable)( 100 _In_ PDEVICE_OBJECT DeviceObject, 101 _In_ ULONG SectorSize, 102 _In_ ULONG SectorsPerTrack, 103 _In_ ULONG NumberOfHeads, 104 _In_ struct _DRIVE_LAYOUT_INFORMATION *PartitionBuffer); 105 106 typedef NTSTATUS 107 (NTAPI *pHalQueryBusSlots)( 108 _In_ PBUS_HANDLER BusHandler, 109 _In_ ULONG BufferSize, 110 _Out_ PULONG SlotNumbers, 111 _Out_ PULONG ReturnedLength); 112 113 typedef NTSTATUS 114 (NTAPI *pHalInitPnpDriver)(VOID); 115 116 typedef struct _PM_DISPATCH_TABLE { 117 ULONG Signature; 118 ULONG Version; 119 PVOID Function[1]; 120 } PM_DISPATCH_TABLE, *PPM_DISPATCH_TABLE; 121 122 typedef NTSTATUS 123 (NTAPI *pHalInitPowerManagement)( 124 _In_ PPM_DISPATCH_TABLE PmDriverDispatchTable, 125 _Out_ PPM_DISPATCH_TABLE *PmHalDispatchTable); 126 127 typedef struct _DMA_ADAPTER* 128 (NTAPI *pHalGetDmaAdapter)( 129 _In_ PVOID Context, 130 _In_ struct _DEVICE_DESCRIPTION *DeviceDescriptor, 131 _Out_ PULONG NumberOfMapRegisters); 132 133 typedef NTSTATUS 134 (NTAPI *pHalGetInterruptTranslator)( 135 _In_ INTERFACE_TYPE ParentInterfaceType, 136 _In_ ULONG ParentBusNumber, 137 _In_ INTERFACE_TYPE BridgeInterfaceType, 138 _In_ USHORT Size, 139 _In_ USHORT Version, 140 _Out_ PTRANSLATOR_INTERFACE Translator, 141 _Out_ PULONG BridgeBusNumber); 142 143 typedef NTSTATUS 144 (NTAPI *pHalStartMirroring)(VOID); 145 146 typedef NTSTATUS 147 (NTAPI *pHalEndMirroring)( 148 _In_ ULONG PassNumber); 149 150 typedef NTSTATUS 151 (NTAPI *pHalMirrorPhysicalMemory)( 152 _In_ PHYSICAL_ADDRESS PhysicalAddress, 153 _In_ LARGE_INTEGER NumberOfBytes); 154 155 typedef NTSTATUS 156 (NTAPI *pHalMirrorVerify)( 157 _In_ PHYSICAL_ADDRESS PhysicalAddress, 158 _In_ LARGE_INTEGER NumberOfBytes); 159 160 typedef BOOLEAN 161 (NTAPI *pHalTranslateBusAddress)( 162 _In_ INTERFACE_TYPE InterfaceType, 163 _In_ ULONG BusNumber, 164 _In_ PHYSICAL_ADDRESS BusAddress, 165 _Inout_ PULONG AddressSpace, 166 _Out_ PPHYSICAL_ADDRESS TranslatedAddress); 167 168 typedef NTSTATUS 169 (NTAPI *pHalAssignSlotResources)( 170 _In_ PUNICODE_STRING RegistryPath, 171 _In_opt_ PUNICODE_STRING DriverClassName, 172 _In_ PDRIVER_OBJECT DriverObject, 173 _In_ PDEVICE_OBJECT DeviceObject, 174 _In_ INTERFACE_TYPE BusType, 175 _In_ ULONG BusNumber, 176 _In_ ULONG SlotNumber, 177 _Inout_ PCM_RESOURCE_LIST *AllocatedResources); 178 179 typedef VOID 180 (NTAPI *pHalHaltSystem)(VOID); 181 182 typedef BOOLEAN 183 (NTAPI *pHalResetDisplay)(VOID); 184 185 typedef struct _MAP_REGISTER_ENTRY { 186 PVOID MapRegister; 187 BOOLEAN WriteToDevice; 188 } MAP_REGISTER_ENTRY, *PMAP_REGISTER_ENTRY; 189 190 typedef UCHAR 191 (NTAPI *pHalVectorToIDTEntry)( 192 ULONG Vector); 193 194 typedef BOOLEAN 195 (NTAPI *pHalFindBusAddressTranslation)( 196 _In_ PHYSICAL_ADDRESS BusAddress, 197 _Inout_ PULONG AddressSpace, 198 _Out_ PPHYSICAL_ADDRESS TranslatedAddress, 199 _Inout_ PULONG_PTR Context, 200 _In_ BOOLEAN NextBus); 201 202 typedef VOID 203 (NTAPI *pHalEndOfBoot)(VOID); 204 205 typedef PVOID 206 (NTAPI *pHalGetAcpiTable)( 207 _In_ ULONG Signature, 208 _In_opt_ PCSTR OemId, 209 _In_opt_ PCSTR OemTableId); 210 211 #if defined(_IA64_) 212 typedef NTSTATUS 213 (*pHalGetErrorCapList)( 214 _Inout_ PULONG CapsListLength, 215 _Inout_updates_bytes_(*CapsListLength) PUCHAR ErrorCapList); 216 217 typedef NTSTATUS 218 (*pHalInjectError)( 219 _In_ ULONG BufferLength, 220 _In_reads_bytes_(BufferLength) PUCHAR Buffer); 221 #endif 222 223 typedef VOID 224 (NTAPI *PCI_ERROR_HANDLER_CALLBACK)(VOID); 225 226 typedef VOID 227 (NTAPI *pHalSetPciErrorHandlerCallback)( 228 _In_ PCI_ERROR_HANDLER_CALLBACK Callback); 229 230 #if 1 /* Not present in WDK 7600 */ 231 typedef VOID 232 (FASTCALL *pHalIoAssignDriveLetters)( 233 _In_ struct _LOADER_PARAMETER_BLOCK *LoaderBlock, 234 _In_ PSTRING NtDeviceName, 235 _Out_ PUCHAR NtSystemPath, 236 _Out_ PSTRING NtSystemPathString); 237 #endif 238 239 typedef struct { 240 ULONG Version; 241 pHalQuerySystemInformation HalQuerySystemInformation; 242 pHalSetSystemInformation HalSetSystemInformation; 243 pHalQueryBusSlots HalQueryBusSlots; 244 ULONG Spare1; 245 pHalExamineMBR HalExamineMBR; 246 #if 1 /* Not present in WDK 7600 */ 247 pHalIoAssignDriveLetters HalIoAssignDriveLetters; 248 #endif 249 pHalIoReadPartitionTable HalIoReadPartitionTable; 250 pHalIoSetPartitionInformation HalIoSetPartitionInformation; 251 pHalIoWritePartitionTable HalIoWritePartitionTable; 252 pHalHandlerForBus HalReferenceHandlerForBus; 253 pHalReferenceBusHandler HalReferenceBusHandler; 254 pHalReferenceBusHandler HalDereferenceBusHandler; 255 pHalInitPnpDriver HalInitPnpDriver; 256 pHalInitPowerManagement HalInitPowerManagement; 257 pHalGetDmaAdapter HalGetDmaAdapter; 258 pHalGetInterruptTranslator HalGetInterruptTranslator; 259 pHalStartMirroring HalStartMirroring; 260 pHalEndMirroring HalEndMirroring; 261 pHalMirrorPhysicalMemory HalMirrorPhysicalMemory; 262 pHalEndOfBoot HalEndOfBoot; 263 pHalMirrorVerify HalMirrorVerify; 264 pHalGetAcpiTable HalGetCachedAcpiTable; 265 pHalSetPciErrorHandlerCallback HalSetPciErrorHandlerCallback; 266 #if defined(_IA64_) 267 pHalGetErrorCapList HalGetErrorCapList; 268 pHalInjectError HalInjectError; 269 #endif 270 } HAL_DISPATCH, *PHAL_DISPATCH; 271 272 #if !defined(_NTSYSTEM_) && (defined(_NTDRIVER_) || defined(_NTDDK_) || defined(_NTIFS_) || defined(_NTHAL_)) 273 __CREATE_NTOS_DATA_IMPORT_ALIAS(HalDispatchTable) 274 extern PHAL_DISPATCH HalDispatchTable; 275 #define HALDISPATCH HalDispatchTable 276 #else 277 extern HAL_DISPATCH HalDispatchTable; 278 #define HALDISPATCH (&HalDispatchTable) 279 #endif 280 281 // See Version table at: 282 // https://www.geoffchappell.com/studies/windows/km/ntoskrnl/inc/ntos/hal/hal_dispatch.htm 283 #if (NTDDI_VERSION < NTDDI_WIN2K) 284 #define HAL_DISPATCH_VERSION 1 285 #elif (NTDDI_VERSION < NTDDI_WINXP) 286 #define HAL_DISPATCH_VERSION 2 287 #elif (NTDDI_VERSION < NTDDI_WIN7) 288 #define HAL_DISPATCH_VERSION 3 289 #else 290 #define HAL_DISPATCH_VERSION 4 291 #endif 292 293 #define HalDispatchTableVersion HALDISPATCH->Version 294 #define HalQuerySystemInformation HALDISPATCH->HalQuerySystemInformation 295 #define HalSetSystemInformation HALDISPATCH->HalSetSystemInformation 296 #define HalQueryBusSlots HALDISPATCH->HalQueryBusSlots 297 #define HalReferenceHandlerForBus HALDISPATCH->HalReferenceHandlerForBus 298 #define HalReferenceBusHandler HALDISPATCH->HalReferenceBusHandler 299 #define HalDereferenceBusHandler HALDISPATCH->HalDereferenceBusHandler 300 #define HalInitPnpDriver HALDISPATCH->HalInitPnpDriver 301 #define HalInitPowerManagement HALDISPATCH->HalInitPowerManagement 302 #define HalGetDmaAdapter HALDISPATCH->HalGetDmaAdapter 303 #define HalGetInterruptTranslator HALDISPATCH->HalGetInterruptTranslator 304 #define HalStartMirroring HALDISPATCH->HalStartMirroring 305 #define HalEndMirroring HALDISPATCH->HalEndMirroring 306 #define HalMirrorPhysicalMemory HALDISPATCH->HalMirrorPhysicalMemory 307 #define HalEndOfBoot HALDISPATCH->HalEndOfBoot 308 #define HalMirrorVerify HALDISPATCH->HalMirrorVerify 309 #define HalGetCachedAcpiTable HALDISPATCH->HalGetCachedAcpiTable 310 #define HalSetPciErrorHandlerCallback HALDISPATCH->HalSetPciErrorHandlerCallback 311 #if defined(_IA64_) 312 #define HalGetErrorCapList HALDISPATCH->HalGetErrorCapList 313 #define HalInjectError HALDISPATCH->HalInjectError 314 #endif 315 316 typedef struct _HAL_BUS_INFORMATION { 317 INTERFACE_TYPE BusType; 318 BUS_DATA_TYPE ConfigurationType; 319 ULONG BusNumber; 320 ULONG Reserved; 321 } HAL_BUS_INFORMATION, *PHAL_BUS_INFORMATION; 322 323 typedef struct _HAL_PROFILE_SOURCE_INFORMATION { 324 KPROFILE_SOURCE Source; 325 BOOLEAN Supported; 326 ULONG Interval; 327 } HAL_PROFILE_SOURCE_INFORMATION, *PHAL_PROFILE_SOURCE_INFORMATION; 328 329 typedef struct _HAL_PROFILE_SOURCE_INFORMATION_EX { 330 KPROFILE_SOURCE Source; 331 BOOLEAN Supported; 332 ULONG_PTR Interval; 333 ULONG_PTR DefInterval; 334 ULONG_PTR MaxInterval; 335 ULONG_PTR MinInterval; 336 } HAL_PROFILE_SOURCE_INFORMATION_EX, *PHAL_PROFILE_SOURCE_INFORMATION_EX; 337 338 typedef struct _HAL_PROFILE_SOURCE_INTERVAL { 339 KPROFILE_SOURCE Source; 340 ULONG_PTR Interval; 341 } HAL_PROFILE_SOURCE_INTERVAL, *PHAL_PROFILE_SOURCE_INTERVAL; 342 343 typedef struct _HAL_PROFILE_SOURCE_LIST { 344 KPROFILE_SOURCE Source; 345 PWSTR Description; 346 } HAL_PROFILE_SOURCE_LIST, *PHAL_PROFILE_SOURCE_LIST; 347 348 typedef enum _HAL_DISPLAY_BIOS_INFORMATION { 349 HalDisplayInt10Bios, 350 HalDisplayEmulatedBios, 351 HalDisplayNoBios 352 } HAL_DISPLAY_BIOS_INFORMATION, *PHAL_DISPLAY_BIOS_INFORMATION; 353 354 typedef struct _HAL_POWER_INFORMATION { 355 ULONG TBD; 356 } HAL_POWER_INFORMATION, *PHAL_POWER_INFORMATION; 357 358 typedef struct _HAL_PROCESSOR_SPEED_INFO { 359 ULONG ProcessorSpeed; 360 } HAL_PROCESSOR_SPEED_INFORMATION, *PHAL_PROCESSOR_SPEED_INFORMATION; 361 362 typedef struct _HAL_CALLBACKS { 363 PCALLBACK_OBJECT SetSystemInformation; 364 PCALLBACK_OBJECT BusCheck; 365 } HAL_CALLBACKS, *PHAL_CALLBACKS; 366 367 typedef struct _HAL_PROCESSOR_FEATURE { 368 ULONG UsableFeatureBits; 369 } HAL_PROCESSOR_FEATURE; 370 371 typedef NTSTATUS 372 (NTAPI *PHALIOREADWRITEHANDLER)( 373 _In_ BOOLEAN fRead, 374 _In_ ULONG dwAddr, 375 _In_ ULONG dwSize, 376 _Inout_ PULONG pdwData); 377 378 typedef struct _HAL_AMLI_BAD_IO_ADDRESS_LIST { 379 ULONG BadAddrBegin; 380 ULONG BadAddrSize; 381 ULONG OSVersionTrigger; 382 PHALIOREADWRITEHANDLER IOHandler; 383 } HAL_AMLI_BAD_IO_ADDRESS_LIST, *PHAL_AMLI_BAD_IO_ADDRESS_LIST; 384 385 #if defined(_X86_) || defined(_IA64_) || defined(_AMD64_) 386 387 typedef VOID 388 (NTAPI *PHALMCAINTERFACELOCK)(VOID); 389 390 typedef VOID 391 (NTAPI *PHALMCAINTERFACEUNLOCK)(VOID); 392 393 typedef NTSTATUS 394 (NTAPI *PHALMCAINTERFACEREADREGISTER)( 395 _In_ UCHAR BankNumber, 396 _Inout_ PVOID Exception); 397 398 typedef struct _HAL_MCA_INTERFACE { 399 PHALMCAINTERFACELOCK Lock; 400 PHALMCAINTERFACEUNLOCK Unlock; 401 PHALMCAINTERFACEREADREGISTER ReadRegister; 402 } HAL_MCA_INTERFACE; 403 404 typedef enum { 405 ApicDestinationModePhysical = 1, 406 ApicDestinationModeLogicalFlat, 407 ApicDestinationModeLogicalClustered, 408 ApicDestinationModeUnknown 409 } HAL_APIC_DESTINATION_MODE, *PHAL_APIC_DESTINATION_MODE; 410 411 #if defined(_AMD64_) 412 413 struct _KTRAP_FRAME; 414 struct _KEXCEPTION_FRAME; 415 416 typedef ERROR_SEVERITY 417 (NTAPI *PDRIVER_EXCPTN_CALLBACK)( 418 _In_ PVOID Context, 419 _In_ struct _KTRAP_FRAME *TrapFrame, 420 _In_ struct _KEXCEPTION_FRAME *ExceptionFrame, 421 _In_ PMCA_EXCEPTION Exception); 422 423 #endif 424 425 #if defined(_X86_) || defined(_IA64_) 426 typedef 427 #if defined(_IA64_) 428 ERROR_SEVERITY 429 #else 430 VOID 431 #endif 432 (NTAPI *PDRIVER_EXCPTN_CALLBACK)( 433 _In_ PVOID Context, 434 _In_ PMCA_EXCEPTION BankLog); 435 #endif 436 437 typedef PDRIVER_EXCPTN_CALLBACK PDRIVER_MCA_EXCEPTION_CALLBACK; 438 439 typedef struct _MCA_DRIVER_INFO { 440 PDRIVER_MCA_EXCEPTION_CALLBACK ExceptionCallback; 441 PKDEFERRED_ROUTINE DpcCallback; 442 PVOID DeviceContext; 443 } MCA_DRIVER_INFO, *PMCA_DRIVER_INFO; 444 445 typedef struct _HAL_ERROR_INFO { 446 ULONG Version; 447 ULONG InitMaxSize; 448 ULONG McaMaxSize; 449 ULONG McaPreviousEventsCount; 450 ULONG McaCorrectedEventsCount; 451 ULONG McaKernelDeliveryFails; 452 ULONG McaDriverDpcQueueFails; 453 ULONG McaReserved; 454 ULONG CmcMaxSize; 455 ULONG CmcPollingInterval; 456 ULONG CmcInterruptsCount; 457 ULONG CmcKernelDeliveryFails; 458 ULONG CmcDriverDpcQueueFails; 459 ULONG CmcGetStateFails; 460 ULONG CmcClearStateFails; 461 ULONG CmcReserved; 462 ULONGLONG CmcLogId; 463 ULONG CpeMaxSize; 464 ULONG CpePollingInterval; 465 ULONG CpeInterruptsCount; 466 ULONG CpeKernelDeliveryFails; 467 ULONG CpeDriverDpcQueueFails; 468 ULONG CpeGetStateFails; 469 ULONG CpeClearStateFails; 470 ULONG CpeInterruptSources; 471 ULONGLONG CpeLogId; 472 ULONGLONG KernelReserved[4]; 473 } HAL_ERROR_INFO, *PHAL_ERROR_INFO; 474 475 #define HAL_MCE_INTERRUPTS_BASED ((ULONG)-1) 476 #define HAL_MCE_DISABLED ((ULONG)0) 477 478 #define HAL_CMC_INTERRUPTS_BASED HAL_MCE_INTERRUPTS_BASED 479 #define HAL_CMC_DISABLED HAL_MCE_DISABLED 480 481 #define HAL_CPE_INTERRUPTS_BASED HAL_MCE_INTERRUPTS_BASED 482 #define HAL_CPE_DISABLED HAL_MCE_DISABLED 483 484 #define HAL_MCA_INTERRUPTS_BASED HAL_MCE_INTERRUPTS_BASED 485 #define HAL_MCA_DISABLED HAL_MCE_DISABLED 486 487 typedef VOID 488 (NTAPI *PDRIVER_CMC_EXCEPTION_CALLBACK)( 489 _In_ PVOID Context, 490 _In_ PCMC_EXCEPTION CmcLog); 491 492 typedef VOID 493 (NTAPI *PDRIVER_CPE_EXCEPTION_CALLBACK)( 494 _In_ PVOID Context, 495 _In_ PCPE_EXCEPTION CmcLog); 496 497 typedef struct _CMC_DRIVER_INFO { 498 PDRIVER_CMC_EXCEPTION_CALLBACK ExceptionCallback; 499 PKDEFERRED_ROUTINE DpcCallback; 500 PVOID DeviceContext; 501 } CMC_DRIVER_INFO, *PCMC_DRIVER_INFO; 502 503 typedef struct _CPE_DRIVER_INFO { 504 PDRIVER_CPE_EXCEPTION_CALLBACK ExceptionCallback; 505 PKDEFERRED_ROUTINE DpcCallback; 506 PVOID DeviceContext; 507 } CPE_DRIVER_INFO, *PCPE_DRIVER_INFO; 508 509 #endif // defined(_X86_) || defined(_IA64_) || defined(_AMD64_) 510 511 #if defined(_IA64_) 512 513 typedef NTSTATUS 514 (*HALSENDCROSSPARTITIONIPI)( 515 _In_ USHORT ProcessorID, 516 _In_ UCHAR HardwareVector); 517 518 typedef NTSTATUS 519 (*HALRESERVECROSSPARTITIONINTERRUPTVECTOR)( 520 _Out_ PULONG Vector, 521 _Out_ PKIRQL Irql, 522 _Inout_ PGROUP_AFFINITY Affinity, 523 _Out_ PUCHAR HardwareVector); 524 525 typedef VOID 526 (*HALFREECROSSPARTITIONINTERRUPTVECTOR)( 527 _In_ ULONG Vector, 528 _In_ PGROUP_AFFINITY Affinity); 529 530 typedef struct _HAL_CROSS_PARTITION_IPI_INTERFACE { 531 HALSENDCROSSPARTITIONIPI HalSendCrossPartitionIpi; 532 HALRESERVECROSSPARTITIONINTERRUPTVECTOR HalReserveCrossPartitionInterruptVector; 533 HALFREECROSSPARTITIONINTERRUPTVECTOR HalFreeCrossPartitionInterruptVector; 534 } HAL_CROSS_PARTITION_IPI_INTERFACE; 535 536 #define HAL_CROSS_PARTITION_IPI_INTERFACE_MINIMUM_SIZE \ 537 FIELD_OFFSET(HAL_CROSS_PARTITION_IPI_INTERFACE, \ 538 HalFreeCrossPartitionInterruptVector) 539 540 #endif /* defined(_IA64_) */ 541 542 typedef struct _HAL_PLATFORM_INFORMATION { 543 ULONG PlatformFlags; 544 } HAL_PLATFORM_INFORMATION, *PHAL_PLATFORM_INFORMATION; 545 546 #define HAL_PLATFORM_DISABLE_WRITE_COMBINING 0x01L 547 #define HAL_PLATFORM_DISABLE_PTCG 0x04L 548 #define HAL_PLATFORM_DISABLE_UC_MAIN_MEMORY 0x08L 549 #define HAL_PLATFORM_ENABLE_WRITE_COMBINING_MMIO 0x10L 550 #define HAL_PLATFORM_ACPI_TABLES_CACHED 0x20L 551 552 $endif (_NTDDK_) 553