5(
NTAPI *PHAL_RESET_DISPLAY_PARAMETERS)(
213(*pHalGetErrorCapList)(
267 pHalGetErrorCapList HalGetErrorCapList;
268 pHalInjectError HalInjectError;
272#if !defined(_NTSYSTEM_) && (defined(_NTDRIVER_) || defined(_NTDDK_) || defined(_NTIFS_) || defined(_NTHAL_))
275#define HALDISPATCH HalDispatchTable
278#define HALDISPATCH (&HalDispatchTable)
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
290#define HAL_DISPATCH_VERSION 4
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
312#define HalGetErrorCapList HALDISPATCH->HalGetErrorCapList
313#define HalInjectError HALDISPATCH->HalInjectError
385#if defined(_X86_) || defined(_IA64_) || defined(_AMD64_)
394(
NTAPI *PHALMCAINTERFACEREADREGISTER)(
398typedef struct _HAL_MCA_INTERFACE {
399 PHALMCAINTERFACELOCK
Lock;
400 PHALMCAINTERFACEUNLOCK
Unlock;
401 PHALMCAINTERFACEREADREGISTER ReadRegister;
405 ApicDestinationModePhysical = 1,
406 ApicDestinationModeLogicalFlat,
407 ApicDestinationModeLogicalClustered,
408 ApicDestinationModeUnknown
409} HAL_APIC_DESTINATION_MODE, *PHAL_APIC_DESTINATION_MODE;
416typedef ERROR_SEVERITY
417(
NTAPI *PDRIVER_EXCPTN_CALLBACK)(
421 _In_ PMCA_EXCEPTION Exception);
425#if defined(_X86_) || defined(_IA64_)
432(
NTAPI *PDRIVER_EXCPTN_CALLBACK)(
434 _In_ PMCA_EXCEPTION BankLog);
437typedef PDRIVER_EXCPTN_CALLBACK PDRIVER_MCA_EXCEPTION_CALLBACK;
439typedef struct _MCA_DRIVER_INFO {
440 PDRIVER_MCA_EXCEPTION_CALLBACK ExceptionCallback;
443} MCA_DRIVER_INFO, *PMCA_DRIVER_INFO;
445typedef struct _HAL_ERROR_INFO {
449 ULONG McaPreviousEventsCount;
450 ULONG McaCorrectedEventsCount;
451 ULONG McaKernelDeliveryFails;
452 ULONG McaDriverDpcQueueFails;
455 ULONG CmcPollingInterval;
456 ULONG CmcInterruptsCount;
457 ULONG CmcKernelDeliveryFails;
458 ULONG CmcDriverDpcQueueFails;
459 ULONG CmcGetStateFails;
460 ULONG CmcClearStateFails;
464 ULONG CpePollingInterval;
465 ULONG CpeInterruptsCount;
466 ULONG CpeKernelDeliveryFails;
467 ULONG CpeDriverDpcQueueFails;
468 ULONG CpeGetStateFails;
469 ULONG CpeClearStateFails;
470 ULONG CpeInterruptSources;
473} HAL_ERROR_INFO, *PHAL_ERROR_INFO;
475#define HAL_MCE_INTERRUPTS_BASED ((ULONG)-1)
476#define HAL_MCE_DISABLED ((ULONG)0)
478#define HAL_CMC_INTERRUPTS_BASED HAL_MCE_INTERRUPTS_BASED
479#define HAL_CMC_DISABLED HAL_MCE_DISABLED
481#define HAL_CPE_INTERRUPTS_BASED HAL_MCE_INTERRUPTS_BASED
482#define HAL_CPE_DISABLED HAL_MCE_DISABLED
484#define HAL_MCA_INTERRUPTS_BASED HAL_MCE_INTERRUPTS_BASED
485#define HAL_MCA_DISABLED HAL_MCE_DISABLED
488(
NTAPI *PDRIVER_CMC_EXCEPTION_CALLBACK)(
490 _In_ PCMC_EXCEPTION CmcLog);
493(
NTAPI *PDRIVER_CPE_EXCEPTION_CALLBACK)(
495 _In_ PCPE_EXCEPTION CmcLog);
497typedef struct _CMC_DRIVER_INFO {
498 PDRIVER_CMC_EXCEPTION_CALLBACK ExceptionCallback;
501} CMC_DRIVER_INFO, *PCMC_DRIVER_INFO;
503typedef struct _CPE_DRIVER_INFO {
504 PDRIVER_CPE_EXCEPTION_CALLBACK ExceptionCallback;
507} CPE_DRIVER_INFO, *PCPE_DRIVER_INFO;
514(*HALSENDCROSSPARTITIONIPI)(
519(*HALRESERVECROSSPARTITIONINTERRUPTVECTOR)(
526(*HALFREECROSSPARTITIONINTERRUPTVECTOR)(
530typedef struct _HAL_CROSS_PARTITION_IPI_INTERFACE {
531 HALSENDCROSSPARTITIONIPI HalSendCrossPartitionIpi;
532 HALRESERVECROSSPARTITIONINTERRUPTVECTOR HalReserveCrossPartitionInterruptVector;
533 HALFREECROSSPARTITIONINTERRUPTVECTOR HalFreeCrossPartitionInterruptVector;
534} HAL_CROSS_PARTITION_IPI_INTERFACE;
536#define HAL_CROSS_PARTITION_IPI_INTERFACE_MINIMUM_SIZE \
537 FIELD_OFFSET(HAL_CROSS_PARTITION_IPI_INTERFACE, \
538 HalFreeCrossPartitionInterruptVector)
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
static const COLUMN_LIST Columns[]
_In_ ULONG _In_ BATTERY_QUERY_INFORMATION_LEVEL _In_ LONG _In_ ULONG _Out_ PULONG ReturnedLength
static const WCHAR Signature[]
_In_ FILTER_INFORMATION_CLASS InformationClass
enum _INTERFACE_TYPE INTERFACE_TYPE
enum _KPROFILE_SOURCE KPROFILE_SOURCE
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
_Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PDEVICE_OBJECT _Inout_opt_ PCM_RESOURCE_LIST * AllocatedResources
_In_ PNDIS_STRING _In_opt_ NDIS_HANDLE DeviceContext
#define _In_reads_bytes_(s)
#define _Inout_updates_bytes_to_(s, c)
#define _Inout_updates_bytes_(s)
struct _BUS_HANDLER * PBUS_HANDLER
enum _BUS_DATA_TYPE BUS_DATA_TYPE
$endif(_WDMDDK_) $if(_NTDDK_) typedef struct _NEON128
const KSDEVICE_DESCRIPTOR DeviceDescriptor
pHalEndOfBoot HalEndOfBoot
pHalGetInterruptTranslator HalGetInterruptTranslator
pHalIoWritePartitionTable HalIoWritePartitionTable
pHalQueryBusSlots HalQueryBusSlots
pHalIoAssignDriveLetters HalIoAssignDriveLetters
pHalStartMirroring HalStartMirroring
pHalSetPciErrorHandlerCallback HalSetPciErrorHandlerCallback
pHalReferenceBusHandler HalReferenceBusHandler
pHalHandlerForBus HalReferenceHandlerForBus
pHalGetDmaAdapter HalGetDmaAdapter
pHalIoReadPartitionTable HalIoReadPartitionTable
pHalExamineMBR HalExamineMBR
pHalReferenceBusHandler HalDereferenceBusHandler
pHalIoSetPartitionInformation HalIoSetPartitionInformation
pHalMirrorVerify HalMirrorVerify
pHalSetSystemInformation HalSetSystemInformation
pHalInitPnpDriver HalInitPnpDriver
pHalGetAcpiTable HalGetCachedAcpiTable
pHalInitPowerManagement HalInitPowerManagement
pHalMirrorPhysicalMemory HalMirrorPhysicalMemory
pHalEndMirroring HalEndMirroring
pHalQuerySystemInformation HalQuerySystemInformation
PHALIOREADWRITEHANDLER IOHandler
PCALLBACK_OBJECT SetSystemInformation
PCALLBACK_OBJECT BusCheck
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID InterfaceType
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT _In_ USHORT Version
_In_ WDFINTERRUPT _In_ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
_In_ WDFIORESREQLIST _In_ ULONG SlotNumber
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
#define __CREATE_NTOS_DATA_IMPORT_ALIAS(_Name)
_In_opt_ PUNICODE_STRING DriverClassName
_Out_ PULONG NumberOfMapRegisters
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE _In_ ULONG BusNumber
_In_ ULONG _In_ ULONG _In_ ULONG _Out_ PKIRQL _Out_ PKAFFINITY Affinity
_In_ ULONG _In_ ULONG MBRTypeIdentifier
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE BusType
NTSTATUS(NTAPI * pHalQuerySystemInformation)(_In_ HAL_QUERY_INFORMATION_CLASS InformationClass, _In_ ULONG BufferSize, _Inout_updates_bytes_to_(BufferSize, *ReturnedLength) PVOID Buffer, _Out_ PULONG ReturnedLength)
enum _HAL_DISPLAY_BIOS_INFORMATION * PHAL_DISPLAY_BIOS_INFORMATION
struct _HAL_PROFILE_SOURCE_INFORMATION_EX HAL_PROFILE_SOURCE_INFORMATION_EX
struct _HAL_PROCESSOR_SPEED_INFO HAL_PROCESSOR_SPEED_INFORMATION
enum _HAL_QUERY_INFORMATION_CLASS * PHAL_QUERY_INFORMATION_CLASS
NTSTATUS(FASTCALL * pHalIoSetPartitionInformation)(_In_ PDEVICE_OBJECT DeviceObject, _In_ ULONG SectorSize, _In_ ULONG PartitionNumber, _In_ ULONG PartitionType)
struct _PM_DISPATCH_TABLE * PPM_DISPATCH_TABLE
NTSTATUS(NTAPI * pHalAssignSlotResources)(_In_ PUNICODE_STRING RegistryPath, _In_opt_ PUNICODE_STRING DriverClassName, _In_ PDRIVER_OBJECT DriverObject, _In_ PDEVICE_OBJECT DeviceObject, _In_ INTERFACE_TYPE BusType, _In_ ULONG BusNumber, _In_ ULONG SlotNumber, _Inout_ PCM_RESOURCE_LIST *AllocatedResources)
struct _HAL_BUS_INFORMATION * PHAL_BUS_INFORMATION
NTSTATUS(NTAPI * pHalGetInterruptTranslator)(_In_ INTERFACE_TYPE ParentInterfaceType, _In_ ULONG ParentBusNumber, _In_ INTERFACE_TYPE BridgeInterfaceType, _In_ USHORT Size, _In_ USHORT Version, _Out_ PTRANSLATOR_INTERFACE Translator, _Out_ PULONG BridgeBusNumber)
struct _HAL_CALLBACKS HAL_CALLBACKS
struct _HAL_CALLBACKS * PHAL_CALLBACKS
struct _HAL_PROFILE_SOURCE_INFORMATION HAL_PROFILE_SOURCE_INFORMATION
struct _MAP_REGISTER_ENTRY * PMAP_REGISTER_ENTRY
struct _HAL_PROFILE_SOURCE_INFORMATION * PHAL_PROFILE_SOURCE_INFORMATION
NTSTATUS(NTAPI * pHalQueryBusSlots)(_In_ PBUS_HANDLER BusHandler, _In_ ULONG BufferSize, _Out_ PULONG SlotNumbers, _Out_ PULONG ReturnedLength)
BOOLEAN(NTAPI * pHalTranslateBusAddress)(_In_ INTERFACE_TYPE InterfaceType, _In_ ULONG BusNumber, _In_ PHYSICAL_ADDRESS BusAddress, _Inout_ PULONG AddressSpace, _Out_ PPHYSICAL_ADDRESS TranslatedAddress)
struct _PM_DISPATCH_TABLE PM_DISPATCH_TABLE
PVOID(NTAPI * pHalGetAcpiTable)(_In_ ULONG Signature, _In_opt_ PCSTR OemId, _In_opt_ PCSTR OemTableId)
NTSTATUS(FASTCALL * pHalIoWritePartitionTable)(_In_ PDEVICE_OBJECT DeviceObject, _In_ ULONG SectorSize, _In_ ULONG SectorsPerTrack, _In_ ULONG NumberOfHeads, _In_ struct _DRIVE_LAYOUT_INFORMATION *PartitionBuffer)
NTSTATUS(NTAPI * PHALIOREADWRITEHANDLER)(_In_ BOOLEAN fRead, _In_ ULONG dwAddr, _In_ ULONG dwSize, _Inout_ PULONG pdwData)
struct _HAL_AMLI_BAD_IO_ADDRESS_LIST HAL_AMLI_BAD_IO_ADDRESS_LIST
enum _HAL_SET_INFORMATION_CLASS * PHAL_SET_INFORMATION_CLASS
PBUS_HANDLER(FASTCALL * pHalHandlerForBus)(_In_ INTERFACE_TYPE InterfaceType, _In_ ULONG BusNumber)
VOID(NTAPI * pHalSetPciErrorHandlerCallback)(_In_ PCI_ERROR_HANDLER_CALLBACK Callback)
NTSTATUS(NTAPI * pHalMirrorVerify)(_In_ PHYSICAL_ADDRESS PhysicalAddress, _In_ LARGE_INTEGER NumberOfBytes)
NTSTATUS(FASTCALL * pHalIoReadPartitionTable)(_In_ PDEVICE_OBJECT DeviceObject, _In_ ULONG SectorSize, _In_ BOOLEAN ReturnRecognizedPartitions, _Out_ struct _DRIVE_LAYOUT_INFORMATION **PartitionBuffer)
struct _HAL_PROFILE_SOURCE_INTERVAL HAL_PROFILE_SOURCE_INTERVAL
BOOLEAN(NTAPI * pHalResetDisplay)(VOID)
struct _DMA_ADAPTER *NTAPI * pHalGetDmaAdapter(_In_ PVOID Context, _In_ struct _DEVICE_DESCRIPTION *DeviceDescriptor, _Out_ PULONG NumberOfMapRegisters)
$if(_NTDDK_) typedef BOOLEAN(NTAPI *PHAL_RESET_DISPLAY_PARAMETERS)(_In_ ULONG Columns
VOID(FASTCALL * pHalExamineMBR)(_In_ PDEVICE_OBJECT DeviceObject, _In_ ULONG SectorSize, _In_ ULONG MBRTypeIdentifier, _Out_ PVOID *Buffer)
UCHAR(NTAPI * pHalVectorToIDTEntry)(ULONG Vector)
NTSTATUS(NTAPI * pHalMirrorPhysicalMemory)(_In_ PHYSICAL_ADDRESS PhysicalAddress, _In_ LARGE_INTEGER NumberOfBytes)
NTSTATUS(NTAPI * pHalStartMirroring)(VOID)
enum _HAL_SET_INFORMATION_CLASS HAL_SET_INFORMATION_CLASS
struct _HAL_PROFILE_SOURCE_INFORMATION_EX * PHAL_PROFILE_SOURCE_INFORMATION_EX
struct _HAL_PROFILE_SOURCE_INTERVAL * PHAL_PROFILE_SOURCE_INTERVAL
NTSTATUS(NTAPI * pHalSetSystemInformation)(_In_ HAL_SET_INFORMATION_CLASS InformationClass, _In_ ULONG BufferSize, _In_ PVOID Buffer)
NTSTATUS(NTAPI * pHalEndMirroring)(_In_ ULONG PassNumber)
struct _MAP_REGISTER_ENTRY MAP_REGISTER_ENTRY
enum _HAL_QUERY_INFORMATION_CLASS HAL_QUERY_INFORMATION_CLASS
HAL_DISPATCH HalDispatchTable
struct _HAL_PLATFORM_INFORMATION * PHAL_PLATFORM_INFORMATION
VOID(FASTCALL * pHalIoAssignDriveLetters)(_In_ struct _LOADER_PARAMETER_BLOCK *LoaderBlock, _In_ PSTRING NtDeviceName, _Out_ PUCHAR NtSystemPath, _Out_ PSTRING NtSystemPathString)
struct _HAL_BUS_INFORMATION HAL_BUS_INFORMATION
VOID(NTAPI * pHalEndOfBoot)(VOID)
_HAL_SET_INFORMATION_CLASS
@ HalProfileSourceTimerHandler
@ HalProfileSourceInterval
@ HalProfileDpgoSourceInterruptHandler
@ HalGenerateCmcInterrupt
@ HalProfileSourceInterruptHandler
struct _HAL_PROCESSOR_FEATURE HAL_PROCESSOR_FEATURE
NTSTATUS(NTAPI * pHalInitPnpDriver)(VOID)
struct _HAL_POWER_INFORMATION HAL_POWER_INFORMATION
_HAL_DISPLAY_BIOS_INFORMATION
VOID(NTAPI * pHalHaltSystem)(VOID)
struct _HAL_PROCESSOR_SPEED_INFO * PHAL_PROCESSOR_SPEED_INFORMATION
VOID(FASTCALL * pHalReferenceBusHandler)(_In_ PBUS_HANDLER BusHandler)
_HAL_QUERY_INFORMATION_CLASS
@ HalProcessorSpeedInformation
@ HalProfileSourceInformation
@ HalProcessorBrandString
@ HalMapRegisterInformation
@ HalDisplayBiosInformation
@ HalFrequencyInformation
@ HalPartitionIpiInterface
@ HalInformationClassUnused1
@ HalHypervisorInformation
@ HalAcpiAuditInformation
@ HalNumaTopologyInterface
@ HalQueryMaxHotPlugMemoryAddress
@ HalPlatformTimerInformation
@ HalQueryProfileSourceList
@ HalQueryAMLIIllegalIOPortAddresses
@ HalFrameBufferCachingInformation
@ HalProcessorFeatureInformation
@ HalInstalledBusInformation
struct HAL_DISPATCH * PHAL_DISPATCH
enum _HAL_DISPLAY_BIOS_INFORMATION HAL_DISPLAY_BIOS_INFORMATION
struct _HAL_POWER_INFORMATION * PHAL_POWER_INFORMATION
struct _HAL_AMLI_BAD_IO_ADDRESS_LIST * PHAL_AMLI_BAD_IO_ADDRESS_LIST
struct _HAL_PLATFORM_INFORMATION HAL_PLATFORM_INFORMATION
VOID(NTAPI * PCI_ERROR_HANDLER_CALLBACK)(VOID)
struct _HAL_PROFILE_SOURCE_LIST HAL_PROFILE_SOURCE_LIST
struct _HAL_PROFILE_SOURCE_LIST * PHAL_PROFILE_SOURCE_LIST
NTSTATUS(NTAPI * pHalInitPowerManagement)(_In_ PPM_DISPATCH_TABLE PmDriverDispatchTable, _Out_ PPM_DISPATCH_TABLE *PmHalDispatchTable)
BOOLEAN(NTAPI * pHalFindBusAddressTranslation)(_In_ PHYSICAL_ADDRESS BusAddress, _Inout_ PULONG AddressSpace, _Out_ PPHYSICAL_ADDRESS TranslatedAddress, _Inout_ PULONG_PTR Context, _In_ BOOLEAN NextBus)
_In_ ULONG _In_ ULONG _In_ ULONG NumberOfHeads
_In_ ULONG _In_ PHYSICAL_ADDRESS BusAddress
_In_ ULONG _In_ PHYSICAL_ADDRESS _Inout_ PULONG _Out_ PPHYSICAL_ADDRESS TranslatedAddress
_In_ ULONG _In_ PHYSICAL_ADDRESS _Inout_ PULONG AddressSpace
_In_ ULONG _In_ BOOLEAN ReturnRecognizedPartitions
_In_ ULONG _In_ ULONG SectorsPerTrack
_In_ ULONG _In_ BOOLEAN _Out_ struct _DRIVE_LAYOUT_INFORMATION ** PartitionBuffer
_In_ ULONG _In_ ULONG PartitionNumber
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS PhysicalAddress
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _Inout_ PLARGE_INTEGER NumberOfBytes
KDEFERRED_ROUTINE * PKDEFERRED_ROUTINE