ReactOS 0.4.16-dev-2357-g35d0dfe
haltypes.h File Reference
#include <umtypes.h>
Include dependency graph for haltypes.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _KTB_FLUSH_VA
 
struct  _INTERRUPT_REMAPPING_INFO
 
struct  _INTERRUPT_HT_INTR_INFO
 
struct  _INTERRUPT_VECTOR_DATA
 
struct  _INTERRUPT_CONNECTION_DATA
 
struct  _HAL_DP_REPLACE_PARAMETERS
 
struct  _HAL_HV_SVM_SYSTEM_CAPABILITIES
 
struct  _HAL_HV_SVM_DEVICE_CAPABILITIES
 
struct  _HAL_INTEL_ENLIGHTENMENT_INFORMATION
 
struct  _HAL_LOG_REGISTER_CONTEXT
 
struct  _HAL_CLOCK_TIMER_CONFIGURATION
 
struct  _PCI_BUSMASTER_DESCRIPTOR
 
union  _HAL_UNMASKED_INTERRUPT_FLAGS
 
struct  _HAL_UNMASKED_INTERRUPT_INFORMATION
 
struct  _HAL_PRIVATE_DISPATCH
 
struct  _IOMMU_DEVICE_PATH
 
union  _IOMMU_SVM_CAPABILITIES
 
struct  _HAL_IOMMU_DISPATCH
 
struct  _SUPPORTED_RANGE
 
struct  _SUPPORTED_RANGES
 
struct  _BUS_HANDLER
 
struct  _X86_BIOS_REGISTERS
 

Macros

#define _HAL_ENLIGHTENMENT_INFORMATION   _HAL_INTEL_ENLIGHTENMENT_INFORMATION
 
#define HAL_ENLIGHTENMENT_INFORMATION   HAL_INTEL_ENLIGHTENMENT_INFORMATION
 
#define PHAL_ENLIGHTENMENT_INFORMATION   PHAL_INTEL_ENLIGHTENMENT_INFORMATION
 
#define HAL_PRIVATE_DISPATCH_VERSION   32
 
#define HAL_SUPPORTED_RANGE_VERSION   1
 
#define HAL_BUS_HANDLER_VERSION   1
 
#define HAL_PCI_CHIP_HACK_BROKEN_ACPI_TIMER   0x01
 
#define HAL_PCI_CHIP_HACK_DISABLE_HIBERNATE   0x02
 
#define HAL_PCI_CHIP_HACK_DISABLE_ACPI_IRQ_ROUTING   0x04
 
#define HAL_PCI_CHIP_HACK_USB_SMI_DISABLE   0x08
 
#define HALPRIVATEDISPATCH   (&HalPrivateDispatchTable)
 
#define HAL_IRQ_TRANSLATOR_VERSION   0x0
 

Typedefs

typedef struct _LOADER_PARAMETER_BLOCKPLOADER_PARAMETER_BLOCK
 
typedef struct _KPRCBPKPRCB
 
typedef struct _KTB_FLUSH_VA KTB_FLUSH_VA
 
typedef struct _KTB_FLUSH_VAPKTB_FLUSH_VA
 
typedef struct _INTERRUPT_REMAPPING_INFO INTERRUPT_REMAPPING_INFO
 
typedef struct _INTERRUPT_REMAPPING_INFOPINTERRUPT_REMAPPING_INFO
 
typedef struct _INTERRUPT_HT_INTR_INFO INTERRUPT_HT_INTR_INFO
 
typedef struct _INTERRUPT_HT_INTR_INFOPINTERRUPT_HT_INTR_INFO
 
typedef struct _INTERRUPT_VECTOR_DATA INTERRUPT_VECTOR_DATA
 
typedef struct _INTERRUPT_VECTOR_DATAPINTERRUPT_VECTOR_DATA
 
typedef struct _INTERRUPT_CONNECTION_DATA INTERRUPT_CONNECTION_DATA
 
typedef struct _INTERRUPT_CONNECTION_DATAPINTERRUPT_CONNECTION_DATA
 
typedef enum _FIRMWARE_REENTRY FIRMWARE_REENTRY
 
typedef enum _FIRMWARE_REENTRYPFIRMWARE_REENTRY
 
typedef PBUS_HANDLER(FASTCALLpHalHandlerForConfigSpace) (_In_ BUS_DATA_TYPE ConfigSpace, _In_ ULONG BusNumber)
 
typedef NTSTATUS(NTAPIPINSTALL_BUS_HANDLER) (_In_ PBUS_HANDLER Bus)
 
typedef NTSTATUS(NTAPIpHalRegisterBusHandler) (_In_ INTERFACE_TYPE InterfaceType, _In_ BUS_DATA_TYPE ConfigSpace, _In_ ULONG BusNumber, _In_ INTERFACE_TYPE ParentInterfaceType, _In_ ULONG ParentBusNumber, _In_ ULONG ContextSize, _In_ PINSTALL_BUS_HANDLER InstallCallback, _Out_ PBUS_HANDLER *BusHandler)
 
typedef VOID(NTAPIpHalSetWakeEnable) (_In_ BOOLEAN Enable)
 
typedef VOID(NTAPIpHalSetWakeAlarm) (_In_ ULONGLONG AlartTime, _In_ ULONGLONG DcWakeTime)
 
typedef VOID(NTAPIpHalLocateHiberRanges) (_In_ PVOID MemoryMap)
 
typedef NTSTATUS(NTAPIpHalAllocateMapRegisters) (_In_ PADAPTER_OBJECT AdapterObject, _In_ ULONG NumberOfMapRegisters, _In_ ULONG BaseAddressCount, _Out_ PMAP_REGISTER_ENTRY MapRegisterArray)
 
typedef ULONG(NTAPIpHalGetInterruptVector) (_In_ INTERFACE_TYPE InterfaceType, _In_ ULONG BusNumber, _In_ ULONG BusInterruptLevel, _In_ ULONG BusInterruptVector, _Out_ PKIRQL Irql, _Out_ PKAFFINITY Affinity)
 
typedef NTSTATUS(NTAPIpHalGetVectorInput) (_In_ ULONG Vector, _In_ PGROUP_AFFINITY Affinity, _Out_ PULONG Input, _Out_ PKINTERRUPT_POLARITY Polarity, _Out_ PINTERRUPT_REMAPPING_INFO IntRemapInfo)
 
typedef NTSTATUS(NTAPIpHalLoadMicrocode) (_In_ PVOID ImageHandle)
 
typedef NTSTATUS(NTAPIpHalUnloadMicrocode) (VOID)
 
typedef NTSTATUS(NTAPIpHalPostMicrocodeUpdate) (VOID)
 
typedef NTSTATUS(NTAPIpHalAllocateMessageTarget) (_In_ PDEVICE_OBJECT Owner, _In_ PGROUP_AFFINITY ProcessorSet, _In_ ULONG NumberOfIdtEntries, _In_ KINTERRUPT_MODE Mode, _In_ BOOLEAN ShareVector, _Out_ PULONG Vector, _Out_ PKIRQL Irql, _Out_ PULONG IdtEntry)
 
typedef VOID(NTAPIpHalFreeMessageTarget) (_In_ PDEVICE_OBJECT Owner, _In_ ULONG Vector, _In_ PGROUP_AFFINITY ProcessorSet)
 
typedef struct _PNP_REPLACE_PROCESSOR_LISTPPNP_REPLACE_PROCESSOR_LIST
 
typedef struct _HAL_DP_REPLACE_PARAMETERS HAL_DP_REPLACE_PARAMETERS
 
typedef struct _HAL_DP_REPLACE_PARAMETERSPHAL_DP_REPLACE_PARAMETERS
 
typedef NTSTATUS(NTAPIpHalDpReplaceBegin) (_In_ PHAL_DP_REPLACE_PARAMETERS Parameters, _Outptr_ PVOID *ReplaceContext)
 
typedef VOID(NTAPIpHalDpReplaceTarget) (_In_ PVOID ReplaceContext)
 
typedef NTSTATUS(NTAPIpHalDpReplaceControl) (_In_ ULONG Phase, _In_ PVOID ReplaceContext)
 
typedef VOID(NTAPIpHalDpReplaceEnd) (_In_ PVOID ReplaceContext)
 
typedef NTSTATUS(NTAPIpHalDpMaskLevelTriggeredInterrupts) (VOID)
 
typedef NTSTATUS(NTAPIpHalDpUnmaskLevelTriggeredInterrupts) (VOID)
 
typedef NTSTATUS(NTAPIpHalDpGetInterruptReplayState) (_In_ PVOID ReplaceContext, _Outptr_ PVOID *Buffer)
 
typedef NTSTATUS(NTAPIpHalDpReplayInterrupts) (_In_ PVOID InterruptState)
 
typedef VOID(NTAPIpHalPrepareForBugcheck) (_In_ ULONG Flags)
 
typedef BOOLEAN(NTAPIpHalQueryWakeTime) (_Out_ PULONGLONG WakeTime, _Out_opt_ PULONGLONG TscOffset)
 
typedef BOOLEAN(NTAPIpHalQueryIoPortAccessSupported) (VOID)
 
typedef VOID(NTAPIpHalReportIdleStateUsage) (_In_ UCHAR DeepestHardwareIdleState, _In_ PKAFFINITY_EX TargetSet)
 
typedef VOID(NTAPIpHalTscSynchronization) (_In_ BOOLEAN ForcedSynchronization, _In_opt_ PULONG TargetProcessor)
 
typedef struct _WHEA_ERROR_RECORD_SECTION_DESCRIPTORPWHEA_ERROR_RECORD_SECTION_DESCRIPTOR
 
typedef struct _WHEA_PROCESSOR_GENERIC_ERROR_SECTIONPWHEA_PROCESSOR_GENERIC_ERROR_SECTION
 
typedef NTSTATUS(NTAPIpHalWheaInitProcessorGenericSection) (_Out_ PWHEA_ERROR_RECORD_SECTION_DESCRIPTOR Descriptor, _Out_ PWHEA_PROCESSOR_GENERIC_ERROR_SECTION Section)
 
typedef VOID(NTAPIpHalStopLegacyUsbInterrupts) (_In_ SYSTEM_POWER_STATE LastSystemState)
 
typedef NTSTATUS(NTAPIpHalReadWheaPhysicalMemory) (_In_ PHYSICAL_ADDRESS PhysicalAddress, _In_ ULONG Length, _Out_writes_bytes_(Length) PVOID Data)
 
typedef NTSTATUS(NTAPIpHalWriteWheaPhysicalMemory) (_In_ PHYSICAL_ADDRESS PhysicalAddress, _In_ ULONG Length, _In_reads_bytes_(Length) PVOID Data)
 
typedef ULONG HAL_HV_LOGICAL_PROCESSOR_INDEX
 
typedef ULONGPHAL_HV_LOGICAL_PROCESSOR_INDEX
 
typedef VOID(NTAPIPHAL_ENLIGHTENMENT_EOI) (VOID)
 
typedef VOID(NTAPIPHAL_ENLIGHTENMENT_WRITE_ICR) (_In_ ULONG Target, _In_ ULONG Command)
 
typedef VOID(NTAPIPHAL_LONG_SPIN_WAIT) (_In_ ULONG SpinCount)
 
typedef ULONG64(NTAPIPHAL_GET_REFERENCE_TIME) (VOID)
 
typedef NTSTATUS(NTAPIPHAL_SET_SYSTEM_SLEEP_PROPERTY) (_In_ UINT32 SleepState, _In_ UINT8 Pm1a_SLP_TYP, _In_ UINT8 Pm1b_SLP_TYP)
 
typedef NTSTATUS(NTAPIPHAL_SET_SYSTEM_MACHINE_CHECK_PROPERTY) (_In_ PVOID MachineCheckPropertyInfo)
 
typedef NTSTATUS(NTAPIPHAL_ENTER_SLEEP_STATE) (_In_ UINT32 SleepState)
 
typedef NTSTATUS(NTAPIPHAL_NOTIFY_DEBUG_DEVICE_AVAILABLE) (VOID)
 
typedef NTSTATUS(NTAPIPHAL_MAP_DEVICE_INTERRUPT) (_In_ ULONGLONG DeviceId, _In_ PVOID InterruptDescriptor, _In_opt_ PGROUP_AFFINITY TargetProcessors, _Out_ PVOID InterruptEntry)
 
typedef NTSTATUS(NTAPIPHAL_UNMAP_DEVICE_INTERRUPT) (_In_ ULONGLONG DeviceId, _In_ PVOID InterruptEntry)
 
typedef NTSTATUS(NTAPIPHAL_RETARGET_DEVICE_INTERRUPT) (_In_ ULONGLONG DeviceId, _In_ PVOID InterruptEntry, _In_ PVOID InterruptTarget, _In_ PGROUP_AFFINITY TargetProcessors, _Out_opt_ PVOID NewInterruptEntry)
 
typedef NTSTATUS(NTAPIPHAL_SET_HPET_CONFIG) (_In_ PHYSICAL_ADDRESS BaseAddress, _In_ ULONG TimerIndex, _In_ UINT64 DeviceId, _In_ UCHAR TimerInterruptPin, _Out_ PVOID InterruptEntry)
 
typedef NTSTATUS(NTAPIPHAL_NOTIFY_HPET_ENABLED) (VOID)
 
typedef NTSTATUS(NTAPIPHAL_QUERY_ASSOCIATED_PROCESSORS) (_In_ ULONG VpIndex, _Inout_ PULONG Count, _Out_writes_to_opt_(*Count, *Count) PHAL_HV_LOGICAL_PROCESSOR_INDEX PpIndices)
 
typedef NTSTATUS(NTAPIPHAL_LP_READ_MULTIPLE_MSR) (_In_ HAL_HV_LOGICAL_PROCESSOR_INDEX HvLpIndex, _In_ ULONG Count, _In_reads_(Count) PULONG MsrIndices, _Out_writes_(Count) PULONG64 MsrValues)
 
typedef NTSTATUS(NTAPIPHAL_LP_WRITE_MULTIPLE_MSR) (_In_ HAL_HV_LOGICAL_PROCESSOR_INDEX HvLpIndex, _In_ ULONG Count, _In_reads_(Count) PULONG MsrIndices, _In_reads_(Count) PULONG64 MsrValues)
 
typedef NTSTATUS(NTAPIPHAL_LP_READ_CPUID) (_In_ HAL_HV_LOGICAL_PROCESSOR_INDEX HvLpIndex, _In_ ULONG InEax, _Out_ PULONG OutEax, _Out_ PULONG OutEbx, _Out_ PULONG OutEcx, _Out_ PULONG OutEdx)
 
typedef NTSTATUS(NTAPIPHAL_LP_WRITEBACK_INVALIDATE) (_In_ HAL_HV_LOGICAL_PROCESSOR_INDEX HvLpIndex)
 
typedef NTSTATUS(NTAPIPHAL_LP_GET_MACHINE_CHECK_CONTEXT) (_In_ HAL_HV_LOGICAL_PROCESSOR_INDEX HvLpIndex, _Out_ UINT32 *Source, _Out_ UINT64 *PartitionId, _Out_ UINT32 *VpIndex)
 
typedef NTSTATUS(NTAPIPHAL_SUSPEND_PARTITION) (_In_ UINT64 PartitionId)
 
typedef NTSTATUS(NTAPIPHAL_RESUME_PARTITION) (_In_ UINT64 PartitionId)
 
typedef struct _WHEA_RECOVERY_CONTEXTPWHEA_RECOVERY_CONTEXT
 
typedef NTSTATUS(NTAPIPHAL_WHEA_ERROR_NOTIFICATION) (_In_ PWHEA_RECOVERY_CONTEXT RecoveryContext, _In_ BOOLEAN PlatformDirected, _In_ BOOLEAN Poisoned)
 
typedef ULONG(NTAPIPHAL_GET_PROCESSOR_INDEX_FROM_VP_INDEX) (_In_ ULONG VpIndex)
 
typedef NTSTATUS(NTAPIPHAL_SYNTHETIC_CLUSTER_IPI) (_In_ PKAFFINITY_EX Affinity, _In_ ULONG Vector)
 
typedef BOOLEAN(NTAPIPHAL_VP_START_ENABLED) (VOID)
 
typedef NTSTATUS(NTAPIPHAL_START_VIRTUAL_PROCESSOR) (_In_ ULONG VpIndex, _In_ PVOID Context)
 
typedef NTSTATUS(NTAPIPHAL_GET_VP_INDEX_FROM_APIC_ID) (_In_ ULONG ApicId, _Out_ PULONG VpIndex)
 
typedef struct _HAL_HV_SVM_SYSTEM_CAPABILITIES HAL_HV_SVM_SYSTEM_CAPABILITIES
 
typedef struct _HAL_HV_SVM_SYSTEM_CAPABILITIESPHAL_HV_SVM_SYSTEM_CAPABILITIES
 
typedef VOID(NTAPIPHAL_SVM_GET_SYSTEM_CAPABILITIES) (_Out_ PHAL_HV_SVM_SYSTEM_CAPABILITIES Capabilities)
 
typedef SIZE_T(NTAPIPHAL_IUM_EFI_RUNTIME_SERVICE) (_In_ ULONG Service, _Inout_updates_bytes_(Size) PVOID Data, _In_ ULONGLONG Size, _Inout_opt_ ULONGLONG Parameters[])
 
typedef struct _HAL_HV_SVM_DEVICE_CAPABILITIES HAL_HV_SVM_DEVICE_CAPABILITIES
 
typedef struct _HAL_HV_SVM_DEVICE_CAPABILITIESPHAL_HV_SVM_DEVICE_CAPABILITIES
 
typedef NTSTATUS(NTAPIPHAL_SVM_GET_DEVICE_CAPABILITIES) (_In_ ULONG DeviceId, _Out_ PHAL_HV_SVM_DEVICE_CAPABILITIES Capabilities)
 
typedef NTSTATUS(NTAPIPHAL_SVM_CREATE_PASID_SPACE) (_In_ ULONG PasidSpaceId, _In_ ULONG PasidCount)
 
typedef NTSTATUS(NTAPIPHAL_SVM_SET_PASID_ADDRESS_SPACE) (_In_ ULONG PasidSpaceId, _In_ ULONG Pasid, _In_ ULONGLONG AddressSpace)
 
typedef VOID(NTAPIPHAL_SVM_FLUSH_PASID) (_In_ ULONG PasidSpaceId, _In_ ULONG Pasid, _In_ ULONG Number, _In_reads_opt_(Number) KTB_FLUSH_VA Virtual[])
 
typedef NTSTATUS(NTAPIPHAL_SVM_ATTACH_PASID_SPACE) (_In_ ULONG DeviceId, _In_ ULONG PasidSpaceId, _In_ ULONG PrqId, _In_ ULONG PciCapabilities)
 
typedef NTSTATUS(NTAPIPHAL_SVM_DETACH_PASID_SPACE) (_In_ ULONG DeviceId)
 
typedef NTSTATUS(NTAPIPHAL_SVM_ENABLE_PASID) (_In_ ULONG DeviceId, _In_ ULONG Pasid)
 
typedef NTSTATUS(NTAPIPHAL_SVM_DISABLE_PASID) (_In_ ULONG DeviceId, _In_ ULONG Pasid)
 
typedef NTSTATUS(NTAPIPHAL_SVM_ACKNOWLEDGE_PAGE_REQUEST) (_In_ ULONG Count, _In_ PVOID PageRequestList, _Out_opt_ PULONG Processed)
 
typedef NTSTATUS(NTAPIPHAL_SVM_CREATE_PR_QUEUE) (_In_ ULONG QueueId, _In_ ULONG Size, _In_ PHYSICAL_ADDRESS BaseAddress, _In_ ULONG InterruptVector, _In_ ULONG InterruptProcessorIndex)
 
typedef NTSTATUS(NTAPIPHAL_SVM_DELETE_PR_QUEUE) (_In_ ULONG QueueId)
 
typedef NTSTATUS(NTAPIPHAL_SVM_CLEAR_PRQ_STALLED) (_In_ ULONG QueueId)
 
typedef NTSTATUS(NTAPIPHAL_SVM_SET_DEVICE_ENABLED) (_In_ ULONG DeviceId, _In_ BOOLEAN Enabled)
 
typedef struct _HAL_INTEL_ENLIGHTENMENT_INFORMATION HAL_INTEL_ENLIGHTENMENT_INFORMATION
 
typedef struct _HAL_INTEL_ENLIGHTENMENT_INFORMATIONPHAL_INTEL_ENLIGHTENMENT_INFORMATION
 
typedef struct _HAL_ENLIGHTENMENT_INFORMATION HAL_ENLIGHTENMENT_INFORMATION
 
typedef struct _HAL_ENLIGHTENMENT_INFORMATIONPHAL_ENLIGHTENMENT_INFORMATION
 
typedef VOID(NTAPIpHalGetEnlightenmentInformation) (_Out_ PHAL_ENLIGHTENMENT_INFORMATION EnlightenmentInformation)
 
typedef PVOID(NTAPIpHalAllocateEarlyPages) (_In_ PLOADER_PARAMETER_BLOCK LoaderBlock, _In_ ULONG PageCount, _Out_ PULONG64 PhysicalAddress, _In_ ULONG Protection)
 
typedef PVOID(NTAPIpHalMapEarlyPages) (_In_ ULONG64 PhysicalAddress, _In_ ULONG PageCount, _In_ ULONG Protection)
 
typedef NTSTATUS(NTAPIpHalPrepareProcessorForIdle) (_In_ ULONG Flags)
 
typedef VOID(NTAPIpHalResumeProcessorFromIdle) (VOID)
 
typedef VOID(NTAPIpHalNotifyProcessorFreeze) (_In_ BOOLEAN Freezing, _In_ BOOLEAN ThawingToSpinLoop)
 
typedef VOID(NTAPIPHAL_LOG_ROUTINE) (_In_ ULONG EventId, _In_ PVOID Buffer, _In_ ULONG Size)
 
typedef struct _HAL_LOG_REGISTER_CONTEXT HAL_LOG_REGISTER_CONTEXT
 
typedef struct _HAL_LOG_REGISTER_CONTEXTPHAL_LOG_REGISTER_CONTEXT
 
typedef VOID(NTAPIpHalRegisterLogRoutine) (_In_ PHAL_LOG_REGISTER_CONTEXT Context)
 
typedef enum _HAL_CLOCK_TIMER_MODE HAL_CLOCK_TIMER_MODE
 
typedef enum _HAL_CLOCK_TIMER_MODEPHAL_CLOCK_TIMER_MODE
 
typedef struct _HAL_CLOCK_TIMER_CONFIGURATION HAL_CLOCK_TIMER_CONFIGURATION
 
typedef struct _HAL_CLOCK_TIMER_CONFIGURATIONPHAL_CLOCK_TIMER_CONFIGURATION
 
typedef ULONG(NTAPIpHalGetClockOwner) (VOID)
 
typedef VOID(NTAPIpHalGetClockConfiguration) (_Out_ PHAL_CLOCK_TIMER_CONFIGURATION Configuration)
 
typedef VOID(NTAPIpHalClockTimerActivate) (_In_ BOOLEAN ClockOwner)
 
typedef VOID(NTAPIpHalClockTimerInitialize) (VOID)
 
typedef VOID(NTAPIpHalClockTimerStop) (VOID)
 
typedef NTSTATUS(NTAPIpHalClockTimerArm) (_In_ HAL_CLOCK_TIMER_MODE Mode, _In_ ULONG64 RequestedInteval, _Out_ PULONG64 ActualInterval)
 
typedef BOOLEAN(NTAPIpHalTimerOnlyClockInterruptPending) (VOID)
 
typedef VOID(NTAPIpHalIommuRegisterDispatchTable) (_Inout_ struct _HAL_IOMMU_DISPATCH *DispatchTable)
 
typedef ULONG(NTAPIpHalVectorToIDTEntryEx) (_In_ ULONG Vector)
 
typedef NTSTATUS(NTAPIpHalSecondaryInterruptQueryPrimaryInformation) (_In_ PINTERRUPT_VECTOR_DATA VectorData, _Out_ PULONG PrimaryGsiv)
 
typedef BOOLEAN(NTAPIpHalIsInterruptTypeSecondary) (_In_ ULONG Type, _In_ ULONG InputGsiv)
 
typedef NTSTATUS(NTAPIpHalMaskInterrupt) (_In_ ULONG InputGsiv, _In_ ULONG Flags)
 
typedef NTSTATUS(NTAPIpHalUnmaskInterrupt) (_In_ ULONG InputGsiv, _In_ ULONG Flags)
 
typedef NTSTATUS(NTAPIpHalAllocateGsivForSecondaryInterrupt) (_In_reads_bytes_(OwnerNameLength) PCCHAR OwnerName, _In_ USHORT OwnerNameLength, _Out_ PULONG Gsiv)
 
typedef NTSTATUS(NTAPIpHalInterruptVectorDataToGsiv) (_In_ PINTERRUPT_VECTOR_DATA VectorData, _Out_ PULONG Gsiv)
 
typedef enum _PCI_BUSMASTER_RID_TYPE PCI_BUSMASTER_RID_TYPE
 
typedef enum _PCI_BUSMASTER_RID_TYPEPPCI_BUSMASTER_RID_TYPE
 
typedef struct _PCI_BUSMASTER_DESCRIPTOR PCI_BUSMASTER_DESCRIPTOR
 
typedef struct _PCI_BUSMASTER_DESCRIPTORPPCI_BUSMASTER_DESCRIPTOR
 
typedef NTSTATUS(NTAPIpHalAddInterruptRemapping) (_In_ ULONG BusNumber, _In_ ULONG SlotNumber, _In_ PPCI_BUSMASTER_DESCRIPTOR BusMasterDescriptor, _In_range_(0, 3) UCHAR PhantomBits, _Inout_updates_(VectorCount) PINTERRUPT_VECTOR_DATA VectorData, _In_ ULONG VectorCount)
 
typedef VOID(NTAPIpHalRemoveInterruptRemapping) (_In_ ULONG BusNumber, _In_ ULONG SlotNumber, _In_ PPCI_BUSMASTER_DESCRIPTOR BusMasterDescriptor, _In_range_(0, 3) UCHAR PhantomBits, _Inout_updates_(VectorCount) PINTERRUPT_VECTOR_DATA VectorData, _In_ ULONG VectorCount)
 
typedef VOID(NTAPIpHalSaveAndDisableHvEnlightenment) (VOID)
 
typedef VOID(NTAPIpHalRestoreHvEnlightenment) (VOID)
 
typedef VOID(NTAPIpHalFlushIoBuffersExternalCache) (_In_ PMDL Mdl, _In_ BOOLEAN ReadOperation)
 
typedef VOID(NTAPIpHalFlushIoRectangleExternalCache) (_In_ PMDL Mdl, _In_ ULONG StartOffset, _In_ ULONG Width, _In_ ULONG Height, _In_ ULONG Stride, _In_ BOOLEAN ReadOperation)
 
typedef VOID(NTAPIpHalFlushExternalCache) (_In_ BOOLEAN Invalidate)
 
typedef VOID(NTAPIpHalFlushAndInvalidatePageExternalCache) (_In_ PHYSICAL_ADDRESS PhysicalAddress)
 
typedef NTSTATUS(NTAPIpHalPciEarlyRestore) (_In_ SYSTEM_POWER_STATE SleepState)
 
typedef VOID(NTAPIpHalPciLateRestore) (VOID)
 
typedef NTSTATUS(NTAPIpHalGetProcessorId) (_In_ ULONG ProcessorIndex, _Out_ ULONG *Identifier)
 
typedef struct _HAL_PMC_COUNTERS * PMC_HANDLE
 
typedef NTSTATUS(NTAPIpHalAllocatePmcCounterSet) (_In_ ULONG ProcessorIndex, _In_reads_(SourceCount) KPROFILE_SOURCE *SourceList, _In_ ULONG SourceCount, _Out_ PMC_HANDLE *Handle)
 
typedef VOID(NTAPIpHalFreePmcCounterSet) (_In_ PMC_HANDLE Handle)
 
typedef VOID(NTAPIpHalCollectPmcCounters) (_In_ PMC_HANDLE Handle, _Out_ PULONG64 Data)
 
typedef ULONGLONG(NTAPIpHalTimerQueryCycleCounter) (_Out_opt_ PULONGLONG CycleCounterFrequency)
 
typedef VOID(NTAPIpHalGetNextTickDuration) (PKPRCB Unknown1, BOOLEAN Unknown2, ULONG Unknown3, ULONG64 Unknown4, PULONGLONG Unknown5)
 
typedef NTSTATUS(NTAPIpHalProcessorHalt) (_In_ ULONG Flags, _Inout_opt_ PVOID Context, _In_ PVOID Halt)
 
typedef VOID(NTAPIpHalPciMarkHiberPhase) (VOID)
 
typedef NTSTATUS(NTAPIpHalQueryProcessorRestartEntryPoint) (_Out_ PPHYSICAL_ADDRESS EntryPoint)
 
typedef NTSTATUS(NTAPIpHalRequestInterrupt) (_In_ ULONG Gsiv)
 
typedef VOID(NTAPIpHalPowerEarlyRestore) (_In_ ULONG Phase)
 
typedef NTSTATUS(NTAPIpHalUpdateCapsule) (_In_ PVOID CapsuleHeaderArray, _In_ ULONG CapsuleCount, _In_opt_ PHYSICAL_ADDRESS ScatterGatherList)
 
typedef NTSTATUS(NTAPIpHalQueryCapsuleCapabilities) (_In_ PVOID CapsuleHeaderArray, _In_ ULONG CapsuleCount, _Out_ PULONGLONG MaximumCapsuleSize, _Out_ PULONG ResetType)
 
typedef BOOLEAN(NTAPIpHalPciMultiStageResumeCapable) (VOID)
 
typedef VOID(NTAPIpHalDmaFreeCrashDumpRegisters) (_In_ ULONG Phase)
 
typedef BOOLEAN(NTAPIpHalAcpiAoacCapable) (VOID)
 
typedef NTSTATUS(NTAPIpHalInterruptSetDestination) (_In_ ULONG Gsiv, _In_ PINTERRUPT_VECTOR_DATA VectorData, _In_ PGROUP_AFFINITY TargetProcessors)
 
typedef union _HAL_UNMASKED_INTERRUPT_FLAGS HAL_UNMASKED_INTERRUPT_FLAGS
 
typedef union _HAL_UNMASKED_INTERRUPT_FLAGSPHAL_UNMASKED_INTERRUPT_FLAGS
 
typedef struct _HAL_UNMASKED_INTERRUPT_INFORMATION HAL_UNMASKED_INTERRUPT_INFORMATION
 
typedef struct _HAL_UNMASKED_INTERRUPT_INFORMATIONPHAL_UNMASKED_INTERRUPT_INFORMATION
 
typedef _In_ PHAL_UNMASKED_INTERRUPT_INFORMATION InterruptInformation
 
typedef HAL_ENUMERATE_INTERRUPT_SOURCE_CALLBACK * PHAL_ENUMERATE_INTERRUPT_SOURCE_CALLBACK
 
typedef NTSTATUS(NTAPIpHalEnumerateUnmaskedInterrupts) (_In_ PHAL_ENUMERATE_INTERRUPT_SOURCE_CALLBACK Callback, _In_ PVOID Context, _Out_ PHAL_UNMASKED_INTERRUPT_INFORMATION InterruptInformation)
 
typedef PVOID(NTAPIpHalAcpiGetMultiNode) (VOID)
 
typedef _Inout_opt_ volatile LONGProcessorsStarted
 
typedef HALREBOOTHANDLER * PHALREBOOTHANDLER
 
typedef PHALREBOOTHANDLER(NTAPIpHalPowerSetRebootHandler) (_In_opt_ PHALREBOOTHANDLER NewHandler)
 
typedef NTSTATUS(NTAPIpHalTimerWatchdogStart) (VOID)
 
typedef VOID(NTAPIpHalTimerWatchdogResetCountdown) (_In_ LOGICAL SetWakeTimer)
 
typedef NTSTATUS(NTAPIpHalTimerWatchdogStop) (VOID)
 
typedef BOOLEAN(NTAPIpHalTimerWatchdogGeneratedLastReset) (VOID)
 
typedef NTSTATUS(NTAPIpHalTimerWatchdogTriggerSystemReset) (_In_ BOOLEAN ResetViaClockInterrupt)
 
typedef NTSTATUS(NTAPIpHalInterruptGetHighestPriorityInterrupt) (_Out_ PULONG HighestPendingVector, _Out_ PBOOLEAN SingleInterrupt)
 
typedef NTSTATUS(NTAPIpHalProcessorOn) (_In_ ULONG NtNumber)
 
typedef NTSTATUS(NTAPIpHalProcessorOff) (VOID)
 
typedef NTSTATUS(NTAPIpHalProcessorFreeze) (VOID)
 
typedef NTSTATUS(NTAPIpHalDmaLinkDeviceObjectByToken) (_In_ ULONG_PTR Token, _In_opt_ PDEVICE_OBJECT DeviceObject)
 
typedef NTSTATUS(NTAPIpHalDmaCheckAdapterToken) (_In_ ULONG_PTR Token)
 
typedef NTSTATUS(NTAPIpHalTimerConvertAuxiliaryCounterToPerformanceCounter) (_In_ ULONG64 AuxiliaryCounterValue, _Out_ PULONG64 PerformanceCounterValueOut, _Out_opt_ PULONG64 ConversionErrorOut)
 
typedef NTSTATUS(NTAPIpHalTimerConvertPerformanceCounterToAuxiliaryCounter) (_In_ ULONG64 PerformanceCounterValue, _Out_ PULONG64 AuxiliaryCounterValueOut, _Out_opt_ PULONG64 ConversionErrorOut)
 
typedef NTSTATUS(NTAPIpHalTimerQueryAuxiliaryCounterFrequency) (_Out_opt_ PULONG64 AuxiliaryCounterFrequencyOut)
 
typedef NTSTATUS(NTAPIpHalConnectThermalInterrupt) (_In_ PKSERVICE_ROUTINE InterruptService)
 
typedef BOOLEAN(NTAPIpHalIsEFIRuntimeActive) (VOID)
 
typedef NTSTATUS(NTAPIPADJUSTRESOURCELIST) (_In_ PBUS_HANDLER BusHandler, _In_ PBUS_HANDLER RootHandler, _Inout_ PIO_RESOURCE_REQUIREMENTS_LIST *pResourceList)
 
typedef NTSTATUS(NTAPIPASSIGNSLOTRESOURCES) (_In_ PBUS_HANDLER BusHandler, _In_ PBUS_HANDLER RootHandler, _In_ PUNICODE_STRING RegistryPath, _In_opt_ PUNICODE_STRING DriverClassName, _In_ PDRIVER_OBJECT DriverObject, _In_opt_ PDEVICE_OBJECT DeviceObject, _In_ ULONG SlotNumber, _Inout_ PCM_RESOURCE_LIST *AllocatedResources)
 
typedef ULONG(NTAPIPGETSETBUSDATA) (_In_ PBUS_HANDLER BusHandler, _In_ PBUS_HANDLER RootHandler, _In_ ULONG SlotNumber, _In_ PVOID Buffer, _In_ ULONG Offset, _In_ ULONG Length)
 
typedef ULONG(NTAPIPGETINTERRUPTVECTOR) (_In_ PBUS_HANDLER BusHandler, _In_ PBUS_HANDLER RootHandler, _In_ ULONG BusInterruptLevel, _In_ ULONG BusInterruptVector, _Out_ PKIRQL Irql, _Out_ PKAFFINITY Affinity)
 
typedef BOOLEAN(NTAPIPTRANSLATEBUSADDRESS) (_In_ PBUS_HANDLER BusHandler, _In_ PBUS_HANDLER RootHandler, _In_ PHYSICAL_ADDRESS BusAddress, _Inout_ PULONG AddressSpace, _Out_ PPHYSICAL_ADDRESS TranslatedAddress)
 
typedef struct _HAL_PRIVATE_DISPATCH HAL_PRIVATE_DISPATCH
 
typedef struct _HAL_PRIVATE_DISPATCHPHAL_PRIVATE_DISPATCH
 
typedef struct _IOMMU_DEVICE_PATH IOMMU_DEVICE_PATH
 
typedef struct _IOMMU_DEVICE_PATHPIOMMU_DEVICE_PATH
 
typedef union _IOMMU_SVM_CAPABILITIES IOMMU_SVM_CAPABILITIES
 
typedef union _IOMMU_SVM_CAPABILITIESPIOMMU_SVM_CAPABILITIES
 
typedef BOOLEAN(NTAPIpHalIommuSupportEnabled) (VOID)
 
typedef _Out_ PULONG PageRequestQueues
 
typedef _Out_ PULONG _Out_ PULONG MaximumAsids
 
typedef _Out_ PULONG _Out_ PULONG _Out_ PVOIDSystemContext
 
typedef _In_ ULONG Domain
 
typedef _In_ ULONG _Out_ PVOIDLibraryContext
 
typedef _In_ PIOMMU_DEVICE_PATH DevicePath
 
typedef _In_ PIOMMU_DEVICE_PATH _In_ PIOMMU_SVM_CAPABILITIES DeviceCapabilities
 
typedef _In_ PIOMMU_DEVICE_PATH _In_ PIOMMU_SVM_CAPABILITIES _Out_ PVOIDDeviceHandle
 
typedef _In_ ULONG_PTR DirectoryBase
 
typedef _In_ ULONG Number
 
typedef _In_ ULONG _In_reads_(Number) KTB_FLUSH_VA Virtual[])
 
typedef _In_ PVOID _In_ BOOLEAN PowerActive
 
typedef _In_ PVOID FaultingVa
 
typedef _In_ PVOID _In_ ULONG Asid
 
typedef struct _HAL_IOMMU_DISPATCH HAL_IOMMU_DISPATCH
 
typedef struct _HAL_IOMMU_DISPATCHPHAL_IOMMU_DISPATCH
 
typedef struct _SUPPORTED_RANGE SUPPORTED_RANGE
 
typedef struct _SUPPORTED_RANGEPSUPPORTED_RANGE
 
typedef struct _SUPPORTED_RANGES SUPPORTED_RANGES
 
typedef struct _SUPPORTED_RANGESPSUPPORTED_RANGES
 
typedef struct _BUS_HANDLER BUS_HANDLER
 
typedef struct _X86_BIOS_REGISTERS X86_BIOS_REGISTERS
 
typedef struct _X86_BIOS_REGISTERSPX86_BIOS_REGISTERS
 

Enumerations

enum  INTERRUPT_CONNECTION_TYPE { InterruptTypeControllerInput , InterruptTypeXapicMessage , InterruptTypeHypertransport , InterruptTypeMessageRequest }
 
enum  _FIRMWARE_REENTRY {
  HalHaltRoutine , HalPowerDownRoutine , HalRestartRoutine , HalRebootRoutine ,
  HalInteractiveModeRoutine , HalMaximumRoutine
}
 
enum  _HAL_CLOCK_TIMER_MODE { HalClockTimerModePeriodic , HalClockTimerModeOneShot , HalClockTimerModeMax }
 
enum  _PCI_BUSMASTER_RID_TYPE { BusmasterRidFromDeviceRid , BusmasterRidFromBridgeRid , BusmasterRidFromMultipleBridges }
 

Functions

typedef BOOLEAN (NTAPI HAL_ENUMERATE_INTERRUPT_SOURCE_CALLBACK)(_In_ PVOID Context
 
typedef void (NTAPI HALREBOOTHANDLER)(_In_ ULONG ProcessorNumber
 
typedef _IRQL_requires_max_ (PASSIVE_LEVEL) NTSTATUS(NTAPI *pHalIommuGetConfiguration)(_In_ ULONG Domain
 Queries information details about a security descriptor.
 
typedef _IRQL_requires_max_ (HIGH_LEVEL) VOID(NTAPI *pHalIommuFlushTb)(_In_ PVOID LibraryContext
 
typedef _IRQL_requires_max_ (DISPATCH_LEVEL) PVOID(NTAPI *pHalIommuReferenceAsid)(_In_ ULONG Asid)
 

Variables

PHAL_IOMMU_DISPATCH HalIommuDispatch
 
NTSYSAPI HAL_PRIVATE_DISPATCH HalPrivateDispatchTable
 
NTHALAPI PUCHAR KdComPortInUse
 

Macro Definition Documentation

◆ _HAL_ENLIGHTENMENT_INFORMATION

#define _HAL_ENLIGHTENMENT_INFORMATION   _HAL_INTEL_ENLIGHTENMENT_INFORMATION

Definition at line 887 of file haltypes.h.

◆ HAL_BUS_HANDLER_VERSION

#define HAL_BUS_HANDLER_VERSION   1

Definition at line 1988 of file haltypes.h.

◆ HAL_ENLIGHTENMENT_INFORMATION

◆ HAL_IRQ_TRANSLATOR_VERSION

#define HAL_IRQ_TRANSLATOR_VERSION   0x0

Definition at line 2044 of file haltypes.h.

◆ HAL_PCI_CHIP_HACK_BROKEN_ACPI_TIMER

#define HAL_PCI_CHIP_HACK_BROKEN_ACPI_TIMER   0x01

Definition at line 2020 of file haltypes.h.

◆ HAL_PCI_CHIP_HACK_DISABLE_ACPI_IRQ_ROUTING

#define HAL_PCI_CHIP_HACK_DISABLE_ACPI_IRQ_ROUTING   0x04

Definition at line 2022 of file haltypes.h.

◆ HAL_PCI_CHIP_HACK_DISABLE_HIBERNATE

#define HAL_PCI_CHIP_HACK_DISABLE_HIBERNATE   0x02

Definition at line 2021 of file haltypes.h.

◆ HAL_PCI_CHIP_HACK_USB_SMI_DISABLE

#define HAL_PCI_CHIP_HACK_USB_SMI_DISABLE   0x08

Definition at line 2023 of file haltypes.h.

◆ HAL_PRIVATE_DISPATCH_VERSION

#define HAL_PRIVATE_DISPATCH_VERSION   32

Definition at line 1606 of file haltypes.h.

◆ HAL_SUPPORTED_RANGE_VERSION

#define HAL_SUPPORTED_RANGE_VERSION   1

Definition at line 1960 of file haltypes.h.

◆ HALPRIVATEDISPATCH

#define HALPRIVATEDISPATCH   (&HalPrivateDispatchTable)

Definition at line 2033 of file haltypes.h.

◆ PHAL_ENLIGHTENMENT_INFORMATION

Typedef Documentation

◆ _In_reads_

Definition at line 1873 of file haltypes.h.

◆ Asid

Definition at line 1928 of file haltypes.h.

◆ BUS_HANDLER

◆ DeviceCapabilities

◆ DeviceHandle

Definition at line 1825 of file haltypes.h.

◆ DevicePath

Definition at line 1823 of file haltypes.h.

◆ DirectoryBase

Definition at line 1841 of file haltypes.h.

◆ Domain

typedef _In_ ULONG Domain

Definition at line 1814 of file haltypes.h.

◆ FaultingVa

Definition at line 1927 of file haltypes.h.

◆ FIRMWARE_REENTRY

◆ HAL_CLOCK_TIMER_CONFIGURATION

◆ HAL_CLOCK_TIMER_MODE

◆ HAL_DP_REPLACE_PARAMETERS

◆ HAL_ENLIGHTENMENT_INFORMATION

◆ HAL_HV_LOGICAL_PROCESSOR_INDEX

Definition at line 469 of file haltypes.h.

◆ HAL_HV_SVM_DEVICE_CAPABILITIES

◆ HAL_HV_SVM_SYSTEM_CAPABILITIES

◆ HAL_INTEL_ENLIGHTENMENT_INFORMATION

◆ HAL_IOMMU_DISPATCH

◆ HAL_LOG_REGISTER_CONTEXT

◆ HAL_PRIVATE_DISPATCH

◆ HAL_UNMASKED_INTERRUPT_FLAGS

◆ HAL_UNMASKED_INTERRUPT_INFORMATION

◆ INTERRUPT_CONNECTION_DATA

◆ INTERRUPT_HT_INTR_INFO

◆ INTERRUPT_REMAPPING_INFO

◆ INTERRUPT_VECTOR_DATA

◆ InterruptInformation

◆ IOMMU_DEVICE_PATH

◆ IOMMU_SVM_CAPABILITIES

◆ KTB_FLUSH_VA

◆ LibraryContext

Definition at line 1815 of file haltypes.h.

◆ MaximumAsids

Definition at line 1805 of file haltypes.h.

◆ Number

typedef _In_ ULONG Number

Definition at line 1872 of file haltypes.h.

◆ PADJUSTRESOURCELIST

typedef NTSTATUS(NTAPI * PADJUSTRESOURCELIST) (_In_ PBUS_HANDLER BusHandler, _In_ PBUS_HANDLER RootHandler, _Inout_ PIO_RESOURCE_REQUIREMENTS_LIST *pResourceList)

Definition at line 1531 of file haltypes.h.

◆ PageRequestQueues

Definition at line 1804 of file haltypes.h.

◆ PASSIGNSLOTRESOURCES

◆ PCI_BUSMASTER_DESCRIPTOR

◆ PCI_BUSMASTER_RID_TYPE

◆ PFIRMWARE_REENTRY

◆ PGETINTERRUPTVECTOR

Definition at line 1563 of file haltypes.h.

◆ PGETSETBUSDATA

typedef ULONG(NTAPI * PGETSETBUSDATA) (_In_ PBUS_HANDLER BusHandler, _In_ PBUS_HANDLER RootHandler, _In_ ULONG SlotNumber, _In_ PVOID Buffer, _In_ ULONG Offset, _In_ ULONG Length)

Definition at line 1552 of file haltypes.h.

◆ PHAL_CLOCK_TIMER_CONFIGURATION

◆ PHAL_CLOCK_TIMER_MODE

◆ PHAL_DP_REPLACE_PARAMETERS

◆ PHAL_ENLIGHTENMENT_EOI

typedef VOID(NTAPI * PHAL_ENLIGHTENMENT_EOI) (VOID)

Definition at line 472 of file haltypes.h.

◆ PHAL_ENLIGHTENMENT_INFORMATION

◆ PHAL_ENLIGHTENMENT_WRITE_ICR

typedef VOID(NTAPI * PHAL_ENLIGHTENMENT_WRITE_ICR) (_In_ ULONG Target, _In_ ULONG Command)

Definition at line 478 of file haltypes.h.

◆ PHAL_ENTER_SLEEP_STATE

typedef NTSTATUS(NTAPI * PHAL_ENTER_SLEEP_STATE) (_In_ UINT32 SleepState)

Definition at line 511 of file haltypes.h.

◆ PHAL_ENUMERATE_INTERRUPT_SOURCE_CALLBACK

typedef HAL_ENUMERATE_INTERRUPT_SOURCE_CALLBACK* PHAL_ENUMERATE_INTERRUPT_SOURCE_CALLBACK

Definition at line 1386 of file haltypes.h.

◆ PHAL_GET_PROCESSOR_INDEX_FROM_VP_INDEX

typedef ULONG(NTAPI * PHAL_GET_PROCESSOR_INDEX_FROM_VP_INDEX) (_In_ ULONG VpIndex)

Definition at line 640 of file haltypes.h.

◆ PHAL_GET_REFERENCE_TIME

typedef ULONG64(NTAPI * PHAL_GET_REFERENCE_TIME) (VOID)

Definition at line 491 of file haltypes.h.

◆ PHAL_GET_VP_INDEX_FROM_APIC_ID

typedef NTSTATUS(NTAPI * PHAL_GET_VP_INDEX_FROM_APIC_ID) (_In_ ULONG ApicId, _Out_ PULONG VpIndex)

Definition at line 666 of file haltypes.h.

◆ PHAL_HV_LOGICAL_PROCESSOR_INDEX

Definition at line 469 of file haltypes.h.

◆ PHAL_HV_SVM_DEVICE_CAPABILITIES

◆ PHAL_HV_SVM_SYSTEM_CAPABILITIES

◆ PHAL_INTEL_ENLIGHTENMENT_INFORMATION

◆ PHAL_IOMMU_DISPATCH

◆ PHAL_IUM_EFI_RUNTIME_SERVICE

Definition at line 692 of file haltypes.h.

◆ PHAL_LOG_REGISTER_CONTEXT

◆ PHAL_LOG_ROUTINE

typedef VOID(NTAPI * PHAL_LOG_ROUTINE) (_In_ ULONG EventId, _In_ PVOID Buffer, _In_ ULONG Size)

Definition at line 964 of file haltypes.h.

◆ PHAL_LONG_SPIN_WAIT

typedef VOID(NTAPI * PHAL_LONG_SPIN_WAIT) (_In_ ULONG SpinCount)

Definition at line 485 of file haltypes.h.

◆ PHAL_LP_GET_MACHINE_CHECK_CONTEXT

typedef NTSTATUS(NTAPI * PHAL_LP_GET_MACHINE_CHECK_CONTEXT) (_In_ HAL_HV_LOGICAL_PROCESSOR_INDEX HvLpIndex, _Out_ UINT32 *Source, _Out_ UINT64 *PartitionId, _Out_ UINT32 *VpIndex)

Definition at line 608 of file haltypes.h.

◆ PHAL_LP_READ_CPUID

typedef NTSTATUS(NTAPI * PHAL_LP_READ_CPUID) (_In_ HAL_HV_LOGICAL_PROCESSOR_INDEX HvLpIndex, _In_ ULONG InEax, _Out_ PULONG OutEax, _Out_ PULONG OutEbx, _Out_ PULONG OutEcx, _Out_ PULONG OutEdx)

Definition at line 591 of file haltypes.h.

◆ PHAL_LP_READ_MULTIPLE_MSR

typedef NTSTATUS(NTAPI * PHAL_LP_READ_MULTIPLE_MSR) (_In_ HAL_HV_LOGICAL_PROCESSOR_INDEX HvLpIndex, _In_ ULONG Count, _In_reads_(Count) PULONG MsrIndices, _Out_writes_(Count) PULONG64 MsrValues)

Definition at line 573 of file haltypes.h.

◆ PHAL_LP_WRITE_MULTIPLE_MSR

typedef NTSTATUS(NTAPI * PHAL_LP_WRITE_MULTIPLE_MSR) (_In_ HAL_HV_LOGICAL_PROCESSOR_INDEX HvLpIndex, _In_ ULONG Count, _In_reads_(Count) PULONG MsrIndices, _In_reads_(Count) PULONG64 MsrValues)

Definition at line 582 of file haltypes.h.

◆ PHAL_LP_WRITEBACK_INVALIDATE

typedef NTSTATUS(NTAPI * PHAL_LP_WRITEBACK_INVALIDATE) (_In_ HAL_HV_LOGICAL_PROCESSOR_INDEX HvLpIndex)

Definition at line 602 of file haltypes.h.

◆ PHAL_MAP_DEVICE_INTERRUPT

typedef NTSTATUS(NTAPI * PHAL_MAP_DEVICE_INTERRUPT) (_In_ ULONGLONG DeviceId, _In_ PVOID InterruptDescriptor, _In_opt_ PGROUP_AFFINITY TargetProcessors, _Out_ PVOID InterruptEntry)

Definition at line 523 of file haltypes.h.

◆ PHAL_NOTIFY_DEBUG_DEVICE_AVAILABLE

typedef NTSTATUS(NTAPI * PHAL_NOTIFY_DEBUG_DEVICE_AVAILABLE) (VOID)

Definition at line 517 of file haltypes.h.

◆ PHAL_NOTIFY_HPET_ENABLED

typedef NTSTATUS(NTAPI * PHAL_NOTIFY_HPET_ENABLED) (VOID)

Definition at line 559 of file haltypes.h.

◆ PHAL_PRIVATE_DISPATCH

◆ PHAL_QUERY_ASSOCIATED_PROCESSORS

typedef NTSTATUS(NTAPI * PHAL_QUERY_ASSOCIATED_PROCESSORS) (_In_ ULONG VpIndex, _Inout_ PULONG Count, _Out_writes_to_opt_(*Count, *Count) PHAL_HV_LOGICAL_PROCESSOR_INDEX PpIndices)

Definition at line 565 of file haltypes.h.

◆ PHAL_RESUME_PARTITION

typedef NTSTATUS(NTAPI * PHAL_RESUME_PARTITION) (_In_ UINT64 PartitionId)

Definition at line 623 of file haltypes.h.

◆ PHAL_RETARGET_DEVICE_INTERRUPT

typedef NTSTATUS(NTAPI * PHAL_RETARGET_DEVICE_INTERRUPT) (_In_ ULONGLONG DeviceId, _In_ PVOID InterruptEntry, _In_ PVOID InterruptTarget, _In_ PGROUP_AFFINITY TargetProcessors, _Out_opt_ PVOID NewInterruptEntry)

Definition at line 539 of file haltypes.h.

◆ PHAL_SET_HPET_CONFIG

typedef NTSTATUS(NTAPI * PHAL_SET_HPET_CONFIG) (_In_ PHYSICAL_ADDRESS BaseAddress, _In_ ULONG TimerIndex, _In_ UINT64 DeviceId, _In_ UCHAR TimerInterruptPin, _Out_ PVOID InterruptEntry)

Definition at line 549 of file haltypes.h.

◆ PHAL_SET_SYSTEM_MACHINE_CHECK_PROPERTY

typedef NTSTATUS(NTAPI * PHAL_SET_SYSTEM_MACHINE_CHECK_PROPERTY) (_In_ PVOID MachineCheckPropertyInfo)

Definition at line 505 of file haltypes.h.

◆ PHAL_SET_SYSTEM_SLEEP_PROPERTY

typedef NTSTATUS(NTAPI * PHAL_SET_SYSTEM_SLEEP_PROPERTY) (_In_ UINT32 SleepState, _In_ UINT8 Pm1a_SLP_TYP, _In_ UINT8 Pm1b_SLP_TYP)

Definition at line 497 of file haltypes.h.

◆ PHAL_START_VIRTUAL_PROCESSOR

typedef NTSTATUS(NTAPI * PHAL_START_VIRTUAL_PROCESSOR) (_In_ ULONG VpIndex, _In_ PVOID Context)

Definition at line 659 of file haltypes.h.

◆ PHAL_SUSPEND_PARTITION

typedef NTSTATUS(NTAPI * PHAL_SUSPEND_PARTITION) (_In_ UINT64 PartitionId)

Definition at line 617 of file haltypes.h.

◆ PHAL_SVM_ACKNOWLEDGE_PAGE_REQUEST

typedef NTSTATUS(NTAPI * PHAL_SVM_ACKNOWLEDGE_PAGE_REQUEST) (_In_ ULONG Count, _In_ PVOID PageRequestList, _Out_opt_ PULONG Processed)

Definition at line 774 of file haltypes.h.

◆ PHAL_SVM_ATTACH_PASID_SPACE

typedef NTSTATUS(NTAPI * PHAL_SVM_ATTACH_PASID_SPACE) (_In_ ULONG DeviceId, _In_ ULONG PasidSpaceId, _In_ ULONG PrqId, _In_ ULONG PciCapabilities)

Definition at line 745 of file haltypes.h.

◆ PHAL_SVM_CLEAR_PRQ_STALLED

typedef NTSTATUS(NTAPI * PHAL_SVM_CLEAR_PRQ_STALLED) (_In_ ULONG QueueId)

Definition at line 798 of file haltypes.h.

◆ PHAL_SVM_CREATE_PASID_SPACE

typedef NTSTATUS(NTAPI * PHAL_SVM_CREATE_PASID_SPACE) (_In_ ULONG PasidSpaceId, _In_ ULONG PasidCount)

Definition at line 721 of file haltypes.h.

◆ PHAL_SVM_CREATE_PR_QUEUE

typedef NTSTATUS(NTAPI * PHAL_SVM_CREATE_PR_QUEUE) (_In_ ULONG QueueId, _In_ ULONG Size, _In_ PHYSICAL_ADDRESS BaseAddress, _In_ ULONG InterruptVector, _In_ ULONG InterruptProcessorIndex)

Definition at line 782 of file haltypes.h.

◆ PHAL_SVM_DELETE_PR_QUEUE

typedef NTSTATUS(NTAPI * PHAL_SVM_DELETE_PR_QUEUE) (_In_ ULONG QueueId)

Definition at line 792 of file haltypes.h.

◆ PHAL_SVM_DETACH_PASID_SPACE

typedef NTSTATUS(NTAPI * PHAL_SVM_DETACH_PASID_SPACE) (_In_ ULONG DeviceId)

Definition at line 754 of file haltypes.h.

◆ PHAL_SVM_DISABLE_PASID

typedef NTSTATUS(NTAPI * PHAL_SVM_DISABLE_PASID) (_In_ ULONG DeviceId, _In_ ULONG Pasid)

Definition at line 767 of file haltypes.h.

◆ PHAL_SVM_ENABLE_PASID

typedef NTSTATUS(NTAPI * PHAL_SVM_ENABLE_PASID) (_In_ ULONG DeviceId, _In_ ULONG Pasid)

Definition at line 760 of file haltypes.h.

◆ PHAL_SVM_FLUSH_PASID

typedef VOID(NTAPI * PHAL_SVM_FLUSH_PASID) (_In_ ULONG PasidSpaceId, _In_ ULONG Pasid, _In_ ULONG Number, _In_reads_opt_(Number) KTB_FLUSH_VA Virtual[])

Definition at line 736 of file haltypes.h.

◆ PHAL_SVM_GET_DEVICE_CAPABILITIES

typedef NTSTATUS(NTAPI * PHAL_SVM_GET_DEVICE_CAPABILITIES) (_In_ ULONG DeviceId, _Out_ PHAL_HV_SVM_DEVICE_CAPABILITIES Capabilities)

Definition at line 714 of file haltypes.h.

◆ PHAL_SVM_GET_SYSTEM_CAPABILITIES

typedef VOID(NTAPI * PHAL_SVM_GET_SYSTEM_CAPABILITIES) (_Out_ PHAL_HV_SVM_SYSTEM_CAPABILITIES Capabilities)

Definition at line 686 of file haltypes.h.

◆ PHAL_SVM_SET_DEVICE_ENABLED

typedef NTSTATUS(NTAPI * PHAL_SVM_SET_DEVICE_ENABLED) (_In_ ULONG DeviceId, _In_ BOOLEAN Enabled)

Definition at line 804 of file haltypes.h.

◆ PHAL_SVM_SET_PASID_ADDRESS_SPACE

typedef NTSTATUS(NTAPI * PHAL_SVM_SET_PASID_ADDRESS_SPACE) (_In_ ULONG PasidSpaceId, _In_ ULONG Pasid, _In_ ULONGLONG AddressSpace)

Definition at line 728 of file haltypes.h.

◆ PHAL_SYNTHETIC_CLUSTER_IPI

typedef NTSTATUS(NTAPI * PHAL_SYNTHETIC_CLUSTER_IPI) (_In_ PKAFFINITY_EX Affinity, _In_ ULONG Vector)

Definition at line 646 of file haltypes.h.

◆ PHAL_UNMAP_DEVICE_INTERRUPT

typedef NTSTATUS(NTAPI * PHAL_UNMAP_DEVICE_INTERRUPT) (_In_ ULONGLONG DeviceId, _In_ PVOID InterruptEntry)

Definition at line 532 of file haltypes.h.

◆ PHAL_UNMASKED_INTERRUPT_FLAGS

◆ PHAL_UNMASKED_INTERRUPT_INFORMATION

◆ PHAL_VP_START_ENABLED

typedef BOOLEAN(NTAPI * PHAL_VP_START_ENABLED) (VOID)

Definition at line 653 of file haltypes.h.

◆ PHAL_WHEA_ERROR_NOTIFICATION

typedef NTSTATUS(NTAPI * PHAL_WHEA_ERROR_NOTIFICATION) (_In_ PWHEA_RECOVERY_CONTEXT RecoveryContext, _In_ BOOLEAN PlatformDirected, _In_ BOOLEAN Poisoned)

Definition at line 632 of file haltypes.h.

◆ pHalAcpiAoacCapable

typedef BOOLEAN(NTAPI * pHalAcpiAoacCapable) (VOID)

Definition at line 1335 of file haltypes.h.

◆ pHalAcpiGetMultiNode

typedef PVOID(NTAPI * pHalAcpiGetMultiNode) (VOID)

Definition at line 1397 of file haltypes.h.

◆ pHalAddInterruptRemapping

typedef NTSTATUS(NTAPI * pHalAddInterruptRemapping) (_In_ ULONG BusNumber, _In_ ULONG SlotNumber, _In_ PPCI_BUSMASTER_DESCRIPTOR BusMasterDescriptor, _In_range_(0, 3) UCHAR PhantomBits, _Inout_updates_(VectorCount) PINTERRUPT_VECTOR_DATA VectorData, _In_ ULONG VectorCount)

Definition at line 1151 of file haltypes.h.

◆ pHalAllocateEarlyPages

typedef PVOID(NTAPI * pHalAllocateEarlyPages) (_In_ PLOADER_PARAMETER_BLOCK LoaderBlock, _In_ ULONG PageCount, _Out_ PULONG64 PhysicalAddress, _In_ ULONG Protection)

Definition at line 906 of file haltypes.h.

◆ pHalAllocateGsivForSecondaryInterrupt

typedef NTSTATUS(NTAPI * pHalAllocateGsivForSecondaryInterrupt) (_In_reads_bytes_(OwnerNameLength) PCCHAR OwnerName, _In_ USHORT OwnerNameLength, _Out_ PULONG Gsiv)

Definition at line 1105 of file haltypes.h.

◆ pHalAllocateMapRegisters

typedef NTSTATUS(NTAPI * pHalAllocateMapRegisters) (_In_ PADAPTER_OBJECT AdapterObject, _In_ ULONG NumberOfMapRegisters, _In_ ULONG BaseAddressCount, _Out_ PMAP_REGISTER_ENTRY MapRegisterArray)

Definition at line 223 of file haltypes.h.

◆ pHalAllocateMessageTarget

typedef NTSTATUS(NTAPI * pHalAllocateMessageTarget) (_In_ PDEVICE_OBJECT Owner, _In_ PGROUP_AFFINITY ProcessorSet, _In_ ULONG NumberOfIdtEntries, _In_ KINTERRUPT_MODE Mode, _In_ BOOLEAN ShareVector, _Out_ PULONG Vector, _Out_ PKIRQL Irql, _Out_ PULONG IdtEntry)

Definition at line 283 of file haltypes.h.

◆ pHalAllocatePmcCounterSet

typedef NTSTATUS(NTAPI * pHalAllocatePmcCounterSet) (_In_ ULONG ProcessorIndex, _In_reads_(SourceCount) KPROFILE_SOURCE *SourceList, _In_ ULONG SourceCount, _Out_ PMC_HANDLE *Handle)

Definition at line 1236 of file haltypes.h.

◆ pHalClockTimerActivate

typedef VOID(NTAPI * pHalClockTimerActivate) (_In_ BOOLEAN ClockOwner)

Definition at line 1031 of file haltypes.h.

◆ pHalClockTimerArm

typedef NTSTATUS(NTAPI * pHalClockTimerArm) (_In_ HAL_CLOCK_TIMER_MODE Mode, _In_ ULONG64 RequestedInteval, _Out_ PULONG64 ActualInterval)

Definition at line 1049 of file haltypes.h.

◆ pHalClockTimerInitialize

typedef VOID(NTAPI * pHalClockTimerInitialize) (VOID)

Definition at line 1037 of file haltypes.h.

◆ pHalClockTimerStop

typedef VOID(NTAPI * pHalClockTimerStop) (VOID)

Definition at line 1043 of file haltypes.h.

◆ pHalCollectPmcCounters

typedef VOID(NTAPI * pHalCollectPmcCounters) (_In_ PMC_HANDLE Handle, _Out_ PULONG64 Data)

Definition at line 1251 of file haltypes.h.

◆ pHalConnectThermalInterrupt

typedef NTSTATUS(NTAPI * pHalConnectThermalInterrupt) (_In_ PKSERVICE_ROUTINE InterruptService)

Definition at line 1516 of file haltypes.h.

◆ pHalDmaCheckAdapterToken

typedef NTSTATUS(NTAPI * pHalDmaCheckAdapterToken) (_In_ ULONG_PTR Token)

Definition at line 1488 of file haltypes.h.

◆ pHalDmaFreeCrashDumpRegisters

typedef VOID(NTAPI * pHalDmaFreeCrashDumpRegisters) (_In_ ULONG Phase)

Definition at line 1329 of file haltypes.h.

◆ pHalDmaLinkDeviceObjectByToken

typedef NTSTATUS(NTAPI * pHalDmaLinkDeviceObjectByToken) (_In_ ULONG_PTR Token, _In_opt_ PDEVICE_OBJECT DeviceObject)

Definition at line 1481 of file haltypes.h.

◆ pHalDpGetInterruptReplayState

typedef NTSTATUS(NTAPI * pHalDpGetInterruptReplayState) (_In_ PVOID ReplaceContext, _Outptr_ PVOID *Buffer)

Definition at line 373 of file haltypes.h.

◆ pHalDpMaskLevelTriggeredInterrupts

typedef NTSTATUS(NTAPI * pHalDpMaskLevelTriggeredInterrupts) (VOID)

Definition at line 361 of file haltypes.h.

◆ pHalDpReplaceBegin

typedef NTSTATUS(NTAPI * pHalDpReplaceBegin) (_In_ PHAL_DP_REPLACE_PARAMETERS Parameters, _Outptr_ PVOID *ReplaceContext)

Definition at line 335 of file haltypes.h.

◆ pHalDpReplaceControl

typedef NTSTATUS(NTAPI * pHalDpReplaceControl) (_In_ ULONG Phase, _In_ PVOID ReplaceContext)

Definition at line 348 of file haltypes.h.

◆ pHalDpReplaceEnd

typedef VOID(NTAPI * pHalDpReplaceEnd) (_In_ PVOID ReplaceContext)

Definition at line 355 of file haltypes.h.

◆ pHalDpReplaceTarget

typedef VOID(NTAPI * pHalDpReplaceTarget) (_In_ PVOID ReplaceContext)

Definition at line 342 of file haltypes.h.

◆ pHalDpReplayInterrupts

typedef NTSTATUS(NTAPI * pHalDpReplayInterrupts) (_In_ PVOID InterruptState)

Definition at line 380 of file haltypes.h.

◆ pHalDpUnmaskLevelTriggeredInterrupts

typedef NTSTATUS(NTAPI * pHalDpUnmaskLevelTriggeredInterrupts) (VOID)

Definition at line 367 of file haltypes.h.

◆ pHalEnumerateUnmaskedInterrupts

◆ pHalFlushAndInvalidatePageExternalCache

typedef VOID(NTAPI * pHalFlushAndInvalidatePageExternalCache) (_In_ PHYSICAL_ADDRESS PhysicalAddress)

Definition at line 1209 of file haltypes.h.

◆ pHalFlushExternalCache

typedef VOID(NTAPI * pHalFlushExternalCache) (_In_ BOOLEAN Invalidate)

Definition at line 1203 of file haltypes.h.

◆ pHalFlushIoBuffersExternalCache

typedef VOID(NTAPI * pHalFlushIoBuffersExternalCache) (_In_ PMDL Mdl, _In_ BOOLEAN ReadOperation)

Definition at line 1185 of file haltypes.h.

◆ pHalFlushIoRectangleExternalCache

typedef VOID(NTAPI * pHalFlushIoRectangleExternalCache) (_In_ PMDL Mdl, _In_ ULONG StartOffset, _In_ ULONG Width, _In_ ULONG Height, _In_ ULONG Stride, _In_ BOOLEAN ReadOperation)

Definition at line 1192 of file haltypes.h.

◆ pHalFreeMessageTarget

typedef VOID(NTAPI * pHalFreeMessageTarget) (_In_ PDEVICE_OBJECT Owner, _In_ ULONG Vector, _In_ PGROUP_AFFINITY ProcessorSet)

Definition at line 296 of file haltypes.h.

◆ pHalFreePmcCounterSet

typedef VOID(NTAPI * pHalFreePmcCounterSet) (_In_ PMC_HANDLE Handle)

Definition at line 1245 of file haltypes.h.

◆ pHalGetClockConfiguration

typedef VOID(NTAPI * pHalGetClockConfiguration) (_Out_ PHAL_CLOCK_TIMER_CONFIGURATION Configuration)

Definition at line 1016 of file haltypes.h.

◆ pHalGetClockOwner

typedef ULONG(NTAPI * pHalGetClockOwner) (VOID)

Definition at line 1009 of file haltypes.h.

◆ pHalGetEnlightenmentInformation

typedef VOID(NTAPI * pHalGetEnlightenmentInformation) (_Out_ PHAL_ENLIGHTENMENT_INFORMATION EnlightenmentInformation)

Definition at line 900 of file haltypes.h.

◆ pHalGetInterruptVector

◆ pHalGetNextTickDuration

typedef VOID(NTAPI * pHalGetNextTickDuration) (PKPRCB Unknown1, BOOLEAN Unknown2, ULONG Unknown3, ULONG64 Unknown4, PULONGLONG Unknown5)

Definition at line 1264 of file haltypes.h.

◆ pHalGetProcessorId

typedef NTSTATUS(NTAPI * pHalGetProcessorId) (_In_ ULONG ProcessorIndex, _Out_ ULONG *Identifier)

Definition at line 1227 of file haltypes.h.

◆ pHalGetVectorInput

Definition at line 244 of file haltypes.h.

◆ pHalHandlerForConfigSpace

typedef PBUS_HANDLER(FASTCALL * pHalHandlerForConfigSpace) (_In_ BUS_DATA_TYPE ConfigSpace, _In_ ULONG BusNumber)

Definition at line 169 of file haltypes.h.

◆ pHalInterruptGetHighestPriorityInterrupt

typedef NTSTATUS(NTAPI * pHalInterruptGetHighestPriorityInterrupt) (_Out_ PULONG HighestPendingVector, _Out_ PBOOLEAN SingleInterrupt)

Definition at line 1456 of file haltypes.h.

◆ pHalInterruptSetDestination

typedef NTSTATUS(NTAPI * pHalInterruptSetDestination) (_In_ ULONG Gsiv, _In_ PINTERRUPT_VECTOR_DATA VectorData, _In_ PGROUP_AFFINITY TargetProcessors)

Definition at line 1342 of file haltypes.h.

◆ pHalInterruptVectorDataToGsiv

typedef NTSTATUS(NTAPI * pHalInterruptVectorDataToGsiv) (_In_ PINTERRUPT_VECTOR_DATA VectorData, _Out_ PULONG Gsiv)

Definition at line 1113 of file haltypes.h.

◆ pHalIommuRegisterDispatchTable

typedef VOID(NTAPI * pHalIommuRegisterDispatchTable) (_Inout_ struct _HAL_IOMMU_DISPATCH *DispatchTable)

Definition at line 1065 of file haltypes.h.

◆ pHalIommuSupportEnabled

typedef BOOLEAN(NTAPI * pHalIommuSupportEnabled) (VOID)

Definition at line 1794 of file haltypes.h.

◆ pHalIsEFIRuntimeActive

typedef BOOLEAN(NTAPI * pHalIsEFIRuntimeActive) (VOID)

Definition at line 1522 of file haltypes.h.

◆ pHalIsInterruptTypeSecondary

typedef BOOLEAN(NTAPI * pHalIsInterruptTypeSecondary) (_In_ ULONG Type, _In_ ULONG InputGsiv)

Definition at line 1084 of file haltypes.h.

◆ pHalLoadMicrocode

typedef NTSTATUS(NTAPI * pHalLoadMicrocode) (_In_ PVOID ImageHandle)

Definition at line 264 of file haltypes.h.

◆ pHalLocateHiberRanges

typedef VOID(NTAPI * pHalLocateHiberRanges) (_In_ PVOID MemoryMap)

Definition at line 217 of file haltypes.h.

◆ pHalMapEarlyPages

typedef PVOID(NTAPI * pHalMapEarlyPages) (_In_ ULONG64 PhysicalAddress, _In_ ULONG PageCount, _In_ ULONG Protection)

Definition at line 915 of file haltypes.h.

◆ pHalMaskInterrupt

typedef NTSTATUS(NTAPI * pHalMaskInterrupt) (_In_ ULONG InputGsiv, _In_ ULONG Flags)

Definition at line 1091 of file haltypes.h.

◆ pHalNotifyProcessorFreeze

typedef VOID(NTAPI * pHalNotifyProcessorFreeze) (_In_ BOOLEAN Freezing, _In_ BOOLEAN ThawingToSpinLoop)

Definition at line 936 of file haltypes.h.

◆ pHalPciEarlyRestore

typedef NTSTATUS(NTAPI * pHalPciEarlyRestore) (_In_ SYSTEM_POWER_STATE SleepState)

Definition at line 1215 of file haltypes.h.

◆ pHalPciLateRestore

typedef VOID(NTAPI * pHalPciLateRestore) (VOID)

Definition at line 1221 of file haltypes.h.

◆ pHalPciMarkHiberPhase

typedef VOID(NTAPI * pHalPciMarkHiberPhase) (VOID)

Definition at line 1282 of file haltypes.h.

◆ pHalPciMultiStageResumeCapable

typedef BOOLEAN(NTAPI * pHalPciMultiStageResumeCapable) (VOID)

Definition at line 1323 of file haltypes.h.

◆ pHalPostMicrocodeUpdate

typedef NTSTATUS(NTAPI * pHalPostMicrocodeUpdate) (VOID)

Definition at line 276 of file haltypes.h.

◆ pHalPowerEarlyRestore

typedef VOID(NTAPI * pHalPowerEarlyRestore) (_In_ ULONG Phase)

Definition at line 1300 of file haltypes.h.

◆ pHalPowerSetRebootHandler

typedef PHALREBOOTHANDLER(NTAPI * pHalPowerSetRebootHandler) (_In_opt_ PHALREBOOTHANDLER NewHandler)

Definition at line 1412 of file haltypes.h.

◆ pHalPrepareForBugcheck

typedef VOID(NTAPI * pHalPrepareForBugcheck) (_In_ ULONG Flags)

Definition at line 386 of file haltypes.h.

◆ pHalPrepareProcessorForIdle

typedef NTSTATUS(NTAPI * pHalPrepareProcessorForIdle) (_In_ ULONG Flags)

Definition at line 924 of file haltypes.h.

◆ pHalProcessorFreeze

typedef NTSTATUS(NTAPI * pHalProcessorFreeze) (VOID)

Definition at line 1475 of file haltypes.h.

◆ pHalProcessorHalt

typedef NTSTATUS(NTAPI * pHalProcessorHalt) (_In_ ULONG Flags, _Inout_opt_ PVOID Context, _In_ PVOID Halt)

Definition at line 1274 of file haltypes.h.

◆ pHalProcessorOff

typedef NTSTATUS(NTAPI * pHalProcessorOff) (VOID)

Definition at line 1469 of file haltypes.h.

◆ pHalProcessorOn

typedef NTSTATUS(NTAPI * pHalProcessorOn) (_In_ ULONG NtNumber)

Definition at line 1463 of file haltypes.h.

◆ pHalQueryCapsuleCapabilities

typedef NTSTATUS(NTAPI * pHalQueryCapsuleCapabilities) (_In_ PVOID CapsuleHeaderArray, _In_ ULONG CapsuleCount, _Out_ PULONGLONG MaximumCapsuleSize, _Out_ PULONG ResetType)

Definition at line 1314 of file haltypes.h.

◆ pHalQueryIoPortAccessSupported

typedef BOOLEAN(NTAPI * pHalQueryIoPortAccessSupported) (VOID)

Definition at line 407 of file haltypes.h.

◆ pHalQueryProcessorRestartEntryPoint

typedef NTSTATUS(NTAPI * pHalQueryProcessorRestartEntryPoint) (_Out_ PPHYSICAL_ADDRESS EntryPoint)

Definition at line 1288 of file haltypes.h.

◆ pHalQueryWakeTime

typedef BOOLEAN(NTAPI * pHalQueryWakeTime) (_Out_ PULONGLONG WakeTime, _Out_opt_ PULONGLONG TscOffset)

Definition at line 393 of file haltypes.h.

◆ pHalReadWheaPhysicalMemory

Definition at line 454 of file haltypes.h.

◆ PHALREBOOTHANDLER

typedef HALREBOOTHANDLER* PHALREBOOTHANDLER

Definition at line 1409 of file haltypes.h.

◆ pHalRegisterBusHandler

typedef NTSTATUS(NTAPI * pHalRegisterBusHandler) (_In_ INTERFACE_TYPE InterfaceType, _In_ BUS_DATA_TYPE ConfigSpace, _In_ ULONG BusNumber, _In_ INTERFACE_TYPE ParentInterfaceType, _In_ ULONG ParentBusNumber, _In_ ULONG ContextSize, _In_ PINSTALL_BUS_HANDLER InstallCallback, _Out_ PBUS_HANDLER *BusHandler)

Definition at line 182 of file haltypes.h.

◆ pHalRegisterLogRoutine

typedef VOID(NTAPI * pHalRegisterLogRoutine) (_In_ PHAL_LOG_REGISTER_CONTEXT Context)

Definition at line 978 of file haltypes.h.

◆ pHalRemoveInterruptRemapping

typedef VOID(NTAPI * pHalRemoveInterruptRemapping) (_In_ ULONG BusNumber, _In_ ULONG SlotNumber, _In_ PPCI_BUSMASTER_DESCRIPTOR BusMasterDescriptor, _In_range_(0, 3) UCHAR PhantomBits, _Inout_updates_(VectorCount) PINTERRUPT_VECTOR_DATA VectorData, _In_ ULONG VectorCount)

Definition at line 1162 of file haltypes.h.

◆ pHalReportIdleStateUsage

typedef VOID(NTAPI * pHalReportIdleStateUsage) (_In_ UCHAR DeepestHardwareIdleState, _In_ PKAFFINITY_EX TargetSet)

Definition at line 413 of file haltypes.h.

◆ pHalRequestInterrupt

typedef NTSTATUS(NTAPI * pHalRequestInterrupt) (_In_ ULONG Gsiv)

Definition at line 1294 of file haltypes.h.

◆ pHalRestoreHvEnlightenment

typedef VOID(NTAPI * pHalRestoreHvEnlightenment) (VOID)

Definition at line 1179 of file haltypes.h.

◆ pHalResumeProcessorFromIdle

typedef VOID(NTAPI * pHalResumeProcessorFromIdle) (VOID)

Definition at line 930 of file haltypes.h.

◆ pHalSaveAndDisableHvEnlightenment

typedef VOID(NTAPI * pHalSaveAndDisableHvEnlightenment) (VOID)

Definition at line 1173 of file haltypes.h.

◆ pHalSecondaryInterruptQueryPrimaryInformation

typedef NTSTATUS(NTAPI * pHalSecondaryInterruptQueryPrimaryInformation) (_In_ PINTERRUPT_VECTOR_DATA VectorData, _Out_ PULONG PrimaryGsiv)

Definition at line 1077 of file haltypes.h.

◆ pHalSetWakeAlarm

typedef VOID(NTAPI * pHalSetWakeAlarm) (_In_ ULONGLONG AlartTime, _In_ ULONGLONG DcWakeTime)

Definition at line 202 of file haltypes.h.

◆ pHalSetWakeEnable

typedef VOID(NTAPI * pHalSetWakeEnable) (_In_ BOOLEAN Enable)

Definition at line 195 of file haltypes.h.

◆ pHalStopLegacyUsbInterrupts

typedef VOID(NTAPI * pHalStopLegacyUsbInterrupts) (_In_ SYSTEM_POWER_STATE LastSystemState)

Definition at line 441 of file haltypes.h.

◆ pHalTimerConvertAuxiliaryCounterToPerformanceCounter

typedef NTSTATUS(NTAPI * pHalTimerConvertAuxiliaryCounterToPerformanceCounter) (_In_ ULONG64 AuxiliaryCounterValue, _Out_ PULONG64 PerformanceCounterValueOut, _Out_opt_ PULONG64 ConversionErrorOut)

Definition at line 1494 of file haltypes.h.

◆ pHalTimerConvertPerformanceCounterToAuxiliaryCounter

typedef NTSTATUS(NTAPI * pHalTimerConvertPerformanceCounterToAuxiliaryCounter) (_In_ ULONG64 PerformanceCounterValue, _Out_ PULONG64 AuxiliaryCounterValueOut, _Out_opt_ PULONG64 ConversionErrorOut)

Definition at line 1502 of file haltypes.h.

◆ pHalTimerOnlyClockInterruptPending

typedef BOOLEAN(NTAPI * pHalTimerOnlyClockInterruptPending) (VOID)

Definition at line 1057 of file haltypes.h.

◆ pHalTimerQueryAuxiliaryCounterFrequency

typedef NTSTATUS(NTAPI * pHalTimerQueryAuxiliaryCounterFrequency) (_Out_opt_ PULONG64 AuxiliaryCounterFrequencyOut)

Definition at line 1510 of file haltypes.h.

◆ pHalTimerQueryCycleCounter

typedef ULONGLONG(NTAPI * pHalTimerQueryCycleCounter) (_Out_opt_ PULONGLONG CycleCounterFrequency)

Definition at line 1258 of file haltypes.h.

◆ pHalTimerWatchdogGeneratedLastReset

typedef BOOLEAN(NTAPI * pHalTimerWatchdogGeneratedLastReset) (VOID)

Definition at line 1444 of file haltypes.h.

◆ pHalTimerWatchdogResetCountdown

typedef VOID(NTAPI * pHalTimerWatchdogResetCountdown) (_In_ LOGICAL SetWakeTimer)

Definition at line 1425 of file haltypes.h.

◆ pHalTimerWatchdogStart

typedef NTSTATUS(NTAPI * pHalTimerWatchdogStart) (VOID)

Definition at line 1418 of file haltypes.h.

◆ pHalTimerWatchdogStop

typedef NTSTATUS(NTAPI * pHalTimerWatchdogStop) (VOID)

Definition at line 1438 of file haltypes.h.

◆ pHalTimerWatchdogTriggerSystemReset

typedef NTSTATUS(NTAPI * pHalTimerWatchdogTriggerSystemReset) (_In_ BOOLEAN ResetViaClockInterrupt)

Definition at line 1450 of file haltypes.h.

◆ pHalTscSynchronization

typedef VOID(NTAPI * pHalTscSynchronization) (_In_ BOOLEAN ForcedSynchronization, _In_opt_ PULONG TargetProcessor)

Definition at line 420 of file haltypes.h.

◆ pHalUnloadMicrocode

typedef NTSTATUS(NTAPI * pHalUnloadMicrocode) (VOID)

Definition at line 270 of file haltypes.h.

◆ pHalUnmaskInterrupt

typedef NTSTATUS(NTAPI * pHalUnmaskInterrupt) (_In_ ULONG InputGsiv, _In_ ULONG Flags)

Definition at line 1098 of file haltypes.h.

◆ pHalUpdateCapsule

typedef NTSTATUS(NTAPI * pHalUpdateCapsule) (_In_ PVOID CapsuleHeaderArray, _In_ ULONG CapsuleCount, _In_opt_ PHYSICAL_ADDRESS ScatterGatherList)

Definition at line 1306 of file haltypes.h.

◆ pHalVectorToIDTEntryEx

typedef ULONG(NTAPI * pHalVectorToIDTEntryEx) (_In_ ULONG Vector)

Definition at line 1071 of file haltypes.h.

◆ pHalWheaInitProcessorGenericSection

Definition at line 433 of file haltypes.h.

◆ pHalWriteWheaPhysicalMemory

Definition at line 462 of file haltypes.h.

◆ PINSTALL_BUS_HANDLER

typedef NTSTATUS(NTAPI * PINSTALL_BUS_HANDLER) (_In_ PBUS_HANDLER Bus)

Definition at line 176 of file haltypes.h.

◆ PINTERRUPT_CONNECTION_DATA

◆ PINTERRUPT_HT_INTR_INFO

◆ PINTERRUPT_REMAPPING_INFO

◆ PINTERRUPT_VECTOR_DATA

◆ PIOMMU_DEVICE_PATH

◆ PIOMMU_SVM_CAPABILITIES

◆ PKPRCB

typedef struct _KPRCB* PKPRCB

Definition at line 30 of file haltypes.h.

◆ PKTB_FLUSH_VA

◆ PLOADER_PARAMETER_BLOCK

Definition at line 29 of file haltypes.h.

◆ PMC_HANDLE

typedef struct _HAL_PMC_COUNTERS* PMC_HANDLE

Definition at line 1233 of file haltypes.h.

◆ PowerActive

Definition at line 1898 of file haltypes.h.

◆ PPCI_BUSMASTER_DESCRIPTOR

◆ PPCI_BUSMASTER_RID_TYPE

◆ PPNP_REPLACE_PROCESSOR_LIST

◆ ProcessorsStarted

Definition at line 1406 of file haltypes.h.

◆ PSUPPORTED_RANGE

◆ PSUPPORTED_RANGES

◆ PTRANSLATEBUSADDRESS

Definition at line 1574 of file haltypes.h.

◆ PWHEA_ERROR_RECORD_SECTION_DESCRIPTOR

◆ PWHEA_PROCESSOR_GENERIC_ERROR_SECTION

◆ PWHEA_RECOVERY_CONTEXT

Definition at line 629 of file haltypes.h.

◆ PX86_BIOS_REGISTERS

◆ SUPPORTED_RANGE

◆ SUPPORTED_RANGES

◆ SystemContext

Definition at line 1806 of file haltypes.h.

◆ X86_BIOS_REGISTERS

Enumeration Type Documentation

◆ _FIRMWARE_REENTRY

Enumerator
HalHaltRoutine 
HalPowerDownRoutine 
HalRestartRoutine 
HalRebootRoutine 
HalInteractiveModeRoutine 
HalMaximumRoutine 

Definition at line 155 of file haltypes.h.

156{
enum _FIRMWARE_REENTRY * PFIRMWARE_REENTRY
enum _FIRMWARE_REENTRY FIRMWARE_REENTRY
@ HalRestartRoutine
Definition: haltypes.h:159
@ HalHaltRoutine
Definition: haltypes.h:157
@ HalInteractiveModeRoutine
Definition: haltypes.h:161
@ HalPowerDownRoutine
Definition: haltypes.h:158
@ HalRebootRoutine
Definition: haltypes.h:160
@ HalMaximumRoutine
Definition: haltypes.h:162

◆ _HAL_CLOCK_TIMER_MODE

Enumerator
HalClockTimerModePeriodic 
HalClockTimerModeOneShot 
HalClockTimerModeMax 

Definition at line 983 of file haltypes.h.

984{
enum _HAL_CLOCK_TIMER_MODE * PHAL_CLOCK_TIMER_MODE
@ HalClockTimerModeMax
Definition: haltypes.h:987
@ HalClockTimerModeOneShot
Definition: haltypes.h:986
@ HalClockTimerModePeriodic
Definition: haltypes.h:985
enum _HAL_CLOCK_TIMER_MODE HAL_CLOCK_TIMER_MODE

◆ _PCI_BUSMASTER_RID_TYPE

Enumerator
BusmasterRidFromDeviceRid 
BusmasterRidFromBridgeRid 
BusmasterRidFromMultipleBridges 

Definition at line 1119 of file haltypes.h.

1120{
@ BusmasterRidFromMultipleBridges
Definition: haltypes.h:1123
@ BusmasterRidFromBridgeRid
Definition: haltypes.h:1122
@ BusmasterRidFromDeviceRid
Definition: haltypes.h:1121
enum _PCI_BUSMASTER_RID_TYPE * PPCI_BUSMASTER_RID_TYPE
enum _PCI_BUSMASTER_RID_TYPE PCI_BUSMASTER_RID_TYPE

◆ INTERRUPT_CONNECTION_TYPE

Enumerator
InterruptTypeControllerInput 
InterruptTypeXapicMessage 
InterruptTypeHypertransport 
InterruptTypeMessageRequest 

Definition at line 59 of file haltypes.h.

59 {
INTERRUPT_CONNECTION_TYPE
Definition: haltypes.h:59
@ InterruptTypeHypertransport
Definition: haltypes.h:62
@ InterruptTypeMessageRequest
Definition: haltypes.h:63
@ InterruptTypeXapicMessage
Definition: haltypes.h:61
@ InterruptTypeControllerInput
Definition: haltypes.h:60

Function Documentation

◆ _IRQL_requires_max_() [1/3]

typedef _IRQL_requires_max_ ( DISPATCH_LEVEL  )

Definition at line 3557 of file common.c.

3587{
3589 BOOLEAN requestSent = FALSE;
3590
3591 BOOLEAN shouldRetry = TRUE;
3592 PCDB cdb = (PCDB)DeviceExtension->PowerContext.Srb.Cdb;
3593 ULONG timeoutValue = DeviceExtension->TimeOutValue;
3594 ULONG retryCount = 1;
3595
3596 // reset some fields.
3597 DeviceExtension->PowerContext.RetryIntervalIn100ns = 0;
3598 status = PowerContextReuseRequest(DeviceExtension);
3599 RequestClearSendTime(DeviceExtension->PowerContext.PowerRequest);
3600
3601 if (!NT_SUCCESS(status))
3602 {
3603 return status;
3604 }
3605
3606 // set proper timeout value and max retry count.
3607 switch(DeviceExtension->PowerContext.PowerChangeState.PowerDown)
3608 {
3612 break;
3613
3615 // Case of issuing SYNC CACHE command. Do not use power irp timeout remaining time in this case
3616 // as we want to give best try on SYNC CACHE command.
3617 retryCount = MAXIMUM_RETRIES;
3618 timeoutValue = DeviceExtension->TimeOutValue;
3619 break;
3620
3622 {
3623 // Case of issuing STOP UNIT command
3624 // As "Imme" bit is set to '1', this command should be completed in short time.
3625 // This command is at low importance, failure of this command has very small impact.
3626 ULONG secondsRemaining = 0;
3627
3628#if (WINVER >= 0x0601)
3629 // this API is introduced in Windows7
3630 PoQueryWatchdogTime(DeviceExtension->LowerPdo, &secondsRemaining);
3631#endif
3632
3633 if (secondsRemaining == 0)
3634 {
3635 // not able to retrieve remaining time from PoQueryWatchdogTime API, use default values.
3636 retryCount = MAXIMUM_RETRIES;
3637 timeoutValue = SCSI_CDROM_TIMEOUT;
3638 }
3639 else
3640 {
3641 // plan to leave about 30 seconds to lower level drivers if possible.
3642 if (secondsRemaining >= 32)
3643 {
3644 retryCount = (secondsRemaining - 30)/SCSI_CDROM_TIMEOUT + 1;
3645 timeoutValue = SCSI_CDROM_TIMEOUT;
3646
3647 if (retryCount > MAXIMUM_RETRIES)
3648 {
3649 retryCount = MAXIMUM_RETRIES;
3650 }
3651
3652 if (retryCount == 1)
3653 {
3654 timeoutValue = secondsRemaining - 30;
3655 }
3656 }
3657 else
3658 {
3659 // issue the command with minimal timeout value and do not retry on it.
3660 retryCount = 1;
3661 timeoutValue = 2;
3662 }
3663 }
3664 }
3665 break;
3666 default:
3667 NT_ASSERT( FALSE );
3669 return status;
3670 }
3671
3672 DeviceExtension->PowerContext.RetryCount = retryCount;
3673
3674 // issue command.
3675 while (shouldRetry)
3676 {
3677
3678 // set SRB fields.
3679 DeviceExtension->PowerContext.Srb.SrbFlags = SRB_FLAGS_NO_DATA_TRANSFER |
3684
3685 DeviceExtension->PowerContext.Srb.Function = SRB_FUNCTION_EXECUTE_SCSI;
3686 DeviceExtension->PowerContext.Srb.TimeOutValue = timeoutValue;
3687
3688 if (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceInitial)
3689 {
3690 DeviceExtension->PowerContext.Srb.Function = SRB_FUNCTION_LOCK_QUEUE;
3691 }
3692 else if (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceLocked)
3693 {
3694 DeviceExtension->PowerContext.Srb.Function = SRB_FUNCTION_QUIESCE_DEVICE;
3695 }
3696 else if (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceQuiesced)
3697 {
3698 // Case of issuing SYNC CACHE command.
3699 DeviceExtension->PowerContext.Srb.CdbLength = 10;
3700 cdb->SYNCHRONIZE_CACHE10.OperationCode = SCSIOP_SYNCHRONIZE_CACHE;
3701 }
3702 else if (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceFlushed)
3703 {
3704 // Case of issuing STOP UNIT command.
3705 DeviceExtension->PowerContext.Srb.CdbLength = 6;
3706 cdb->START_STOP.OperationCode = SCSIOP_START_STOP_UNIT;
3707 cdb->START_STOP.Start = 0;
3708 cdb->START_STOP.Immediate = 1;
3709 }
3710 else if (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceStopped)
3711 {
3712 DeviceExtension->PowerContext.Srb.Function = SRB_FUNCTION_UNLOCK_QUEUE;
3713 }
3714
3715 // Set up completion routine and context if requested
3717 {
3718 WdfRequestSetCompletionRoutine(DeviceExtension->PowerContext.PowerRequest,
3720 Context);
3721 }
3722
3723 status = RequestSend(DeviceExtension,
3724 DeviceExtension->PowerContext.PowerRequest,
3725 DeviceExtension->IoTarget,
3727 &requestSent);
3728
3729 if (requestSent)
3730 {
3731 if ((CompletionRoutine == NULL) &&
3732 (SRB_STATUS(DeviceExtension->PowerContext.Srb.SrbStatus) != SRB_STATUS_SUCCESS))
3733 {
3734 TracePrint((TRACE_LEVEL_ERROR,
3735 TRACE_FLAG_POWER,
3736 "%p\tError occured when issuing %s command to device. Srb %p, Status %x\n",
3737 DeviceExtension->PowerContext.PowerRequest,
3738 (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceQuiesced) ? "SYNC CACHE" : "STOP UNIT",
3739 &DeviceExtension->PowerContext.Srb,
3740 DeviceExtension->PowerContext.Srb.SrbStatus));
3741
3742 NT_ASSERT(!(TEST_FLAG(DeviceExtension->PowerContext.Srb.SrbStatus, SRB_STATUS_QUEUE_FROZEN)));
3743
3744 shouldRetry = RequestSenseInfoInterpret(DeviceExtension,
3745 DeviceExtension->PowerContext.PowerRequest,
3746 &(DeviceExtension->PowerContext.Srb),
3747 retryCount - DeviceExtension->PowerContext.RetryCount,
3748 &status,
3749 &(DeviceExtension->PowerContext.RetryIntervalIn100ns));
3750
3751 if (shouldRetry && (DeviceExtension->PowerContext.RetryCount-- == 0))
3752 {
3753 shouldRetry = FALSE;
3754 }
3755 }
3756 else
3757 {
3758 // succeeded, do not need to retry.
3759 shouldRetry = FALSE;
3760 }
3761
3762 }
3763 else
3764 {
3765 // request failed to be sent
3766 shouldRetry = FALSE;
3767 }
3768
3769 if (shouldRetry)
3770 {
3772 t.QuadPart = -DeviceExtension->PowerContext.RetryIntervalIn100ns;
3774
3775 status = PowerContextReuseRequest(DeviceExtension);
3776 if (!NT_SUCCESS(status))
3777 {
3778 shouldRetry = FALSE;
3779 }
3780 }
3781 }
3782
3783 if (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceQuiesced)
3784 {
3785 // record SYNC CACHE command completion time stamp.
3786 KeQueryTickCount(&DeviceExtension->PowerContext.Step1CompleteTime);
3787 }
3788
3789 return status;
3790}
unsigned char BOOLEAN
Definition: actypes.h:127
LONG NTSTATUS
Definition: precomp.h:26
#define MAXIMUM_RETRIES
Definition: cdrom.h:124
#define SCSI_CDROM_TIMEOUT
Definition: cdrom.h:680
BOOLEAN RequestSenseInfoInterpret(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ PSCSI_REQUEST_BLOCK Srb, _In_ ULONG RetriedCount, _Out_ NTSTATUS *Status, _Out_opt_ _Deref_out_range_(0, MAXIMUM_RETRY_FOR_SINGLE_IO_IN_100NS_UNITS) LONGLONG *RetryIntervalIn100ns)
Definition: sense.c:2467
#define TEST_FLAG(Flags, Bit)
Definition: cdrom.h:1495
@ PowerDownDeviceStopped
Definition: cdrom.h:412
@ PowerDownDeviceQuiesced
Definition: cdrom.h:410
@ PowerDownDeviceInitial
Definition: cdrom.h:408
@ PowerDownDeviceLocked
Definition: cdrom.h:409
@ PowerDownDeviceFlushed
Definition: cdrom.h:411
union _CDB * PCDB
#define SCSIOP_START_STOP_UNIT
Definition: cdrw_hw.h:897
#define SCSIOP_SYNCHRONIZE_CACHE
Definition: cdrw_hw.h:918
#define STATUS_NOT_IMPLEMENTED
Definition: d3dkmdt.h:42
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
NTSTATUS RequestSend(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ WDFIOTARGET IoTarget, _In_ ULONG Flags, _Out_opt_ PBOOLEAN RequestSent)
Definition: common.c:3793
VOID RequestClearSendTime(_In_ WDFREQUEST Request)
Definition: common.c:111
#define SRB_FUNCTION_EXECUTE_SCSI
Definition: srb.h:315
#define SRB_FLAGS_NO_DATA_TRANSFER
Definition: srb.h:402
#define SRB_FUNCTION_LOCK_QUEUE
Definition: srb.h:332
#define SRB_FUNCTION_UNLOCK_QUEUE
Definition: srb.h:333
#define SRB_FLAGS_BYPASS_LOCKED_QUEUE
Definition: srb.h:410
#define SRB_FLAGS_DISABLE_SYNCH_TRANSFER
Definition: srb.h:397
#define SRB_STATUS(Status)
Definition: srb.h:389
#define SRB_STATUS_QUEUE_FROZEN
Definition: srb.h:386
#define SRB_FLAGS_NO_QUEUE_FREEZE
Definition: srb.h:404
#define SRB_STATUS_SUCCESS
Definition: srb.h:341
#define KeDelayExecutionThread(mode, foo, t)
Definition: env_spec_w32.h:484
GLdouble GLdouble t
Definition: gl.h:2047
#define KernelMode
Definition: asm.h:38
#define SRB_FLAGS_D3_PROCESSING
Definition: srb.h:165
#define SRB_FUNCTION_QUIESCE_DEVICE
Definition: srb.h:99
#define KeQueryTickCount(CurrentCount)
Definition: ke.h:43
_In_ PVOID Context
Definition: storport.h:2269
#define TRACE_LEVEL_ERROR
Definition: storswtr.h:27
Definition: ps.c:97
uint32_t ULONG
Definition: typedefs.h:59
Definition: cdrw_hw.h:28
struct _CDB::_START_STOP START_STOP
struct _CDB::_SYNCHRONIZE_CACHE10 SYNCHRONIZE_CACHE10
@ WDF_REQUEST_SEND_OPTION_SYNCHRONOUS
Definition: wdfrequest.h:109
_In_ WDFREQUEST _In_opt_ PFN_WDF_REQUEST_COMPLETION_ROUTINE CompletionRoutine
Definition: wdfrequest.h:895
#define NT_ASSERT
Definition: rtlfuncs.h:3327

◆ _IRQL_requires_max_() [2/3]

typedef _IRQL_requires_max_ ( HIGH_LEVEL  )

◆ _IRQL_requires_max_() [3/3]

typedef _IRQL_requires_max_ ( PASSIVE_LEVEL  )

Queries information details about a security descriptor.

Computes the quota size of a security descriptor.

Assigns a security descriptor for a new object.

An extended function that assigns a security descriptor for a new object.

Frees a security descriptor.

An extended function that sets new information data to a security descriptor.

Modifies some information data about a security descriptor.

Parameters
[in]SecurityInformationSecurity information details to be queried from a security descriptor.
[out]SecurityDescriptorThe returned security descriptor with security information data.
[in,out]LengthThe returned length of a security descriptor.
[in,out]ObjectsSecurityDescriptorThe returned object security descriptor.
Returns
Returns STATUS_SUCCESS if the operations have been completed successfully and that the specific information about the security descriptor has been queried. STATUS_BUFFER_TOO_SMALL is returned if the buffer size is too small to contain the queried info about the security descriptor.
Parameters
[in]ObjectIf specified, the function will use this arbitrary object that points to an object security descriptor.
[in]SecurityInformationSecurity information details to be set.
[in]SecurityDescriptorA security descriptor where its info is to be changed.
[in,out]ObjectsSecurityDescriptorThe returned pointer to security descriptor objects.
[in]PoolTypePool type for the new security descriptor to allocate.
[in]GenericMappingThe generic mapping of access rights masks.
Returns
See SeSetSecurityDescriptorInfoEx.
Parameters
[in]ObjectIf specified, the function will use this arbitrary object that points to an object security descriptor.
[in]SecurityInformationSecurity information details to be set.
[in]SecurityDescriptorA security descriptor where its info is to be changed.
[in,out]ObjectsSecurityDescriptorThe returned pointer to security descriptor objects.
[in]AutoInheritFlagsFlags bitmask inheritation, influencing how the security descriptor can be inherited and if it can be in the first place.
[in]PoolTypePool type for the new security descriptor to allocate.
[in]GenericMappingThe generic mapping of access rights masks.
Returns
Returns STATUS_SUCCESS if the operations have been completed without problems and that new info has been set to the security descriptor. STATUS_NO_SECURITY_ON_OBJECT is returned if the object does not have a security descriptor. STATUS_INSUFFICIENT_RESOURCES is returned if memory pool allocation for the new security descriptor with new info set has failed.
Parameters
[in]SecurityDescriptorA security descriptor to be freed from memory.
Returns
Returns STATUS_SUCCESS.
Parameters
[in]_ParentDescriptorA security descriptor of the parent object that is being created.
[in]_ExplicitDescriptorAn explicit security descriptor that is applied to a new object.
[out]NewDescriptorThe new allocated security descriptor.
[in]ObjectTypeThe type of the new object.
[in]IsDirectoryObjectSet this to TRUE if the newly created object is a directory object, otherwise set this to FALSE.
[in]AutoInheritFlagsAutomatic inheritance flags that influence how access control entries within ACLs from security descriptors are inherited.
[in]SubjectContextSecurity subject context of the new object.
[in]GenericMappingGeneric mapping of access mask rights.
[in]PoolTypeThis parameter is unused.
Returns
Returns STATUS_SUCCESS if the operations have been completed successfully and that the security descriptor has been assigned to the new object. STATUS_NO_TOKEN is returned if the caller hasn't supplied a valid argument to a security subject context. STATUS_INVALID_OWNER is returned if the caller hasn't supplied a parent descriptor that belongs to the main user (owner). STATUS_INVALID_PRIMARY_GROUP is returned by the same reason as with the previous NTSTATUS code. The two NTSTATUS codes are returned if the calling thread stated that the owner and/or group is defaulted to the parent descriptor (SEF_DEFAULT_OWNER_FROM_PARENT and/or SEF_DEFAULT_GROUP_FROM_PARENT respectively). STATUS_INSUFFICIENT_RESOURCES is returned if memory pool allocation for the descriptor buffer has failed. A failure NTSTATUS is returned otherwise.
Parameters
[in]ParentDescriptorA security descriptor of the parent object that is being created.
[in]ExplicitDescriptorAn explicit security descriptor that is applied to a new object.
[out]NewDescriptorThe new allocated security descriptor.
[in]IsDirectoryObjectSet this to TRUE if the newly created object is a directory object, otherwise set this to FALSE.
[in]SubjectContextSecurity subject context of the new object.
[in]GenericMappingGeneric mapping of access mask rights.
[in]PoolTypeThis parameter is unused.
Returns
See SeAssignSecurityEx.
Parameters
[in]SecurityDescriptorA security descriptor.
[out]QuotaInfoSizeThe returned quota size of the given security descriptor to the caller. The function may return 0 to this parameter if the descriptor doesn't have a group or a discretionary access control list (DACL) even.
Returns
Returns STATUS_SUCCESS if the quota size of a security descriptor has been computed successfully. STATUS_UNKNOWN_REVISION is returned if the security descriptor has an invalid revision.

Definition at line 923 of file Messaging.c.

75{
76 PFLT_SERVER_PORT_OBJECT PortObject;
78
79 /* The caller must allow at least one connection */
80 if (MaxConnections == 0)
81 {
83 }
84
85 /* The request must be for a kernel handle */
86 if (!(ObjectAttributes->Attributes & OBJ_KERNEL_HANDLE))
87 {
89 }
90
91 /*
92 * Get rundown protection on the target to stop the owner
93 * from unloading whilst this port object is open. It gets
94 * removed in the FltpServerPortClose callback
95 */
97 if (!NT_SUCCESS(Status))
98 {
99 return Status;
100 }
101
102 /* Create the server port object for this filter */
107 NULL,
109 0,
110 0,
111 (PVOID *)&PortObject);
112 if (NT_SUCCESS(Status))
113 {
114 /* Zero out the struct */
115 RtlZeroMemory(PortObject, sizeof(FLT_SERVER_PORT_OBJECT));
116
117 /* Increment the ref count on the target filter */
119
120 /* Setup the filter port object */
121 PortObject->Filter = Filter;
125 PortObject->Cookie = ServerPortCookie;
126 PortObject->MaxConnections = MaxConnections;
127
128 /* Insert the object */
129 Status = ObInsertObject(PortObject,
130 NULL,
132 0,
133 NULL,
135 if (NT_SUCCESS(Status))
136 {
137 /* Lock the connection list */
139
140 /* Add the new port object to the connection list and increment the count */
143
144 /* Unlock the connection list*/
146 }
147 }
148
149 if (!NT_SUCCESS(Status))
150 {
151 /* Allow the filter to be cleaned up */
153 }
154
155 return Status;
156}
static const INTERNET_PORT ServerPort
Definition: CWebService.cpp:11
POBJECT_TYPE ServerPortObjectType
Definition: Messaging.c:24
VOID FLTAPI FltObjectDereference(_Inout_ PVOID Object)
Definition: Object.c:53
NTSTATUS FLTAPI FltObjectReference(_Inout_ PVOID Object)
Definition: Object.c:41
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:36
#define InsertTailList(ListHead, Entry)
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
Definition: fltkernel.h:1801
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY _In_ PFLT_DISCONNECT_NOTIFY _In_opt_ PFLT_MESSAGE_NOTIFY MessageNotifyCallback
Definition: fltkernel.h:1877
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY ConnectNotifyCallback
Definition: fltkernel.h:1875
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID ServerPortCookie
Definition: fltkernel.h:1874
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY _In_ PFLT_DISCONNECT_NOTIFY DisconnectNotifyCallback
Definition: fltkernel.h:1876
ULONG FltpObjectPointerReference(_In_ PFLT_OBJECT Object)
Definition: Object.c:322
Status
Definition: gdiplustypes.h:25
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
Definition: fmutex.c:23
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
Definition: fmutex.c:31
static LONG MaxConnections
#define FILE_READ_DATA
Definition: nt_native.h:628
#define STANDARD_RIGHTS_ALL
Definition: nt_native.h:69
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:455
NTSTATUS NTAPI ObInsertObject(IN PVOID Object, IN PACCESS_STATE AccessState OPTIONAL, IN ACCESS_MASK DesiredAccess, IN ULONG ObjectPointerBias, OUT PVOID *NewObject OPTIONAL, OUT PHANDLE Handle)
Definition: obhandle.c:2935
NTSTATUS NTAPI ObCreateObject(IN KPROCESSOR_MODE ProbeMode OPTIONAL, IN POBJECT_TYPE Type, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN KPROCESSOR_MODE AccessMode, IN OUT PVOID ParseContext OPTIONAL, IN ULONG ObjectSize, IN ULONG PagedPoolCharge OPTIONAL, IN ULONG NonPagedPoolCharge OPTIONAL, OUT PVOID *Object)
Definition: oblife.c:1039
#define OBJ_KERNEL_HANDLE
Definition: winternl.h:231
FLT_MUTEX_LIST_HEAD ConnectionList
Definition: fltmgrint.h:121
LIST_ENTRY mList
Definition: fltmgrint.h:56
FAST_MUTEX mLock
Definition: fltmgrint.h:55
PFLT_DISCONNECT_NOTIFY DisconnectNotify
Definition: fltmgrint.h:192
PFLT_MESSAGE_NOTIFY MessageNotify
Definition: fltmgrint.h:193
PFLT_CONNECT_NOTIFY ConnectNotify
Definition: fltmgrint.h:191
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135

◆ BOOLEAN()

typedef BOOLEAN ( NTAPI  HAL_ENUMERATE_INTERRUPT_SOURCE_CALLBACK)

◆ void()

typedef void ( NTAPI  HALREBOOTHANDLER)

Variable Documentation

◆ HalIommuDispatch

PHAL_IOMMU_DISPATCH HalIommuDispatch
extern

◆ HalPrivateDispatchTable

NTSYSAPI HAL_PRIVATE_DISPATCH HalPrivateDispatchTable
extern

Definition at line 75 of file halstub.c.

◆ KdComPortInUse

NTHALAPI PUCHAR KdComPortInUse
extern