27#ifndef _FXINTERRUPT_H_
28#define _FXINTERRUPT_H_
84#if ((FX_CORE_MODE)==(FX_CORE_KERNEL_MODE))
143#if ((FX_CORE_MODE)==(FX_CORE_KERNEL_MODE))
169#if ((FX_CORE_MODE)==(FX_CORE_USER_MODE))
218#if (FX_CORE_MODE == FX_CORE_KERNEL_MODE)
378#if ((FX_CORE_MODE)==(FX_CORE_KERNEL_MODE))
406#elif ((FX_CORE_MODE)==(FX_CORE_USER_MODE))
485#if (FX_CORE_MODE == FX_CORE_KERNEL_MODE)
619#if ((FX_CORE_MODE)==(FX_CORE_KERNEL_MODE))
624#elif ((FX_CORE_MODE)==(FX_CORE_USER_MODE))
630 ThreadpoolWaitCallback(
635 QueueSingleWaitOnInterruptEvent(
640 StartThreadpoolWaitQueue(
645 StopAndFlushThreadpoolWaitQueue(
853#if (FX_CORE_MODE == FX_CORE_KERNEL_MODE)
static KSYNCHRONIZE_ROUTINE SynchronizeRoutine
static KDEFERRED_ROUTINE DpcHandler
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn UINT32 *TableIdx UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING ACPI_OBJECT_LIST ACPI_BUFFER *ReturnObjectBuffer ACPI_DEVICE_INFO **ReturnBuffer ACPI_HANDLE Parent
PFN_WDF_INTERRUPT_ENABLE m_EvtInterruptEnable
PWDF_INTERRUPT_INFO GetInfo(VOID)
BOOLEAN m_DisposeWaitLock
static MdInterruptSynchronizeRoutineType _InterruptDisableThunk
static MdInterruptSynchronizeRoutineType _InterruptSynchronizeThunk
VOID FlushAndRundown(VOID)
VOID FlushQueuedDpcs(VOID)
BOOLEAN m_PassiveHandling
BOOLEAN IsLevelTriggered(__in ULONG Flags)
VOID ReportActive(_In_ BOOLEAN Internal=FALSE)
struct _KINTERRUPT * GetInterruptPtr(VOID)
static EVT_SYSTEMWORKITEM _InterruptWorkItemCallback
FxCallbackLock * m_CallbackLock
static MdDeferredRoutineType _InterruptDpcThunk
VOID FlushQueuedWorkitem(VOID)
VOID InvokeWakeInterruptEvtIsr(VOID)
BOOLEAN m_IsEdgeTriggeredNonMsiInterrupt
RD_INTERRUPT_CONTEXT m_RdInterruptContext
static MdInterruptSynchronizeRoutineType _InterruptMarkDisconnecting
BOOLEAN m_CreatedInPrepareHardware
BOOLEAN IsSyncIrqlSet(VOID)
volatile KIRQL m_SynchronizeIrql
WDF_INTERRUPT_PRIORITY m_Priority
PFN_WDF_INTERRUPT_DPC m_EvtInterruptDpc
__inline BOOLEAN IsPassiveHandling(VOID)
BOOLEAN m_ForceDisconnected
VOID AssignResources(__in PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescRaw, __in PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescTrans)
VOID SetSyncIrql(KIRQL SyncIrql)
__inline BOOLEAN IsWakeCapable(VOID)
VOID OnPostReleaseHardware(VOID)
NTSTATUS InterruptDisable(VOID)
__inline BOOLEAN IsPassiveConnect(VOID)
PCM_PARTIAL_RESOURCE_DESCRIPTOR m_CmTranslatedResource
BOOLEAN Synchronize(__in PFN_WDF_INTERRUPT_SYNCHRONIZE Callback, __in WDFCONTEXT Context)
BOOLEAN IsSoftDisconnectCapable(VOID)
NTSTATUS InterruptEnableInvokeCallback(VOID)
PCM_PARTIAL_RESOURCE_DESCRIPTOR GetResources(VOID)
struct _KINTERRUPT * m_InterruptCaptured
VOID SetPolicyInternal(__in WDF_INTERRUPT_POLICY Policy, __in WDF_INTERRUPT_PRIORITY Priority, __in PGROUP_AFFINITY TargetProcessorSet)
FxWakeInterruptMachine * m_WakeInterruptMachine
PFN_WDF_INTERRUPT_ISR m_EvtInterruptIsr
virtual ~FxInterrupt(VOID)
static _Must_inspect_result_ NTSTATUS _CreateAndInit(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in CfxDevice *Device, __in_opt FxObject *Parent, __in PWDF_OBJECT_ATTRIBUTES Attributes, __in PWDF_INTERRUPT_CONFIG Configuration, __out FxInterrupt **Interrupt)
BOOLEAN WakeInterruptIsr(VOID)
BOOLEAN m_PassiveHandlingByRedirector
FxInterruptWaitblock * m_InterruptWaitblock
static MdInterruptServiceRoutineType _InterruptThunk
VOID DisconnectInternal(VOID)
BOOLEAN IsSharedSpinLock(VOID)
WDF_TRI_STATE m_ShareVector
PFN_WDF_INTERRUPT_DISABLE m_EvtInterruptDisable
static BOOLEAN _IsMessageInterrupt(__in USHORT ResourceFlags)
VOID SetPolicy(__in WDF_INTERRUPT_POLICY Policy, __in WDF_INTERRUPT_PRIORITY Priority, __in PGROUP_AFFINITY TargetProcessorSet)
VOID ProcessWakeInterruptEvent(__in FxWakeInterruptEvents Event)
VOID FlushAndRundownInternal(VOID)
VOID AssignResourcesInternal(__in PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescRaw, __in PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescTrans, __in PWDF_INTERRUPT_INFO InterruptConfig)
_Must_inspect_result_ NTSTATUS Disconnect(__in ULONG NotifyFlags)
CfxDevice * GetDevice(VOID)
BOOLEAN QueueWorkItemForIsr(VOID)
VOID RevokeResources(VOID)
BOOLEAN m_UseSoftDisconnect
_Must_inspect_result_ NTSTATUS ConnectInternal(VOID)
BOOLEAN SharesLock(FxInterrupt *Interrupt)
NTSTATUS InterruptDisableInvokeCallback(VOID)
VOID SetActiveForWake(__in BOOLEAN ActiveForWake)
WDF_INTERRUPT_POLICY m_Policy
VOID WorkItemHandler(VOID)
BOOLEAN QueueDpcForIsr(VOID)
_Must_inspect_result_ NTSTATUS CreateWakeInterruptMachine(VOID)
GROUP_AFFINITY m_Processors
_Must_inspect_result_ NTSTATUS InitializeInternal(__in FxObject *Parent, __in PWDF_INTERRUPT_CONFIG Configuration)
BOOLEAN TryToAcquireLock(VOID)
WDFINTERRUPT GetHandle(VOID)
struct _KINTERRUPT * m_Interrupt
static BOOLEAN _IsWakeHintedInterrupt(__in USHORT ResourceFlags)
BOOLEAN IsActiveForWake(VOID)
KIRQL GetResourceIrql(VOID)
FxSystemWorkItem * m_SystemWorkItem
VOID FilterResourceRequirements(__inout PIO_RESOURCE_DESCRIPTOR IoResourceDescriptor)
WDF_INTERRUPT_INFO m_InterruptInfo
virtual BOOLEAN Dispose(VOID)
_Must_inspect_result_ NTSTATUS InitializeWorker(__in FxObject *Parent, __in PWDF_INTERRUPT_CONFIG Configuration)
PFN_WDF_INTERRUPT_WORKITEM m_EvtInterruptWorkItem
static MdInterruptSynchronizeRoutineType _InterruptEnableThunk
VOID ReportInactive(_In_ BOOLEAN Internal=FALSE)
VOID RevokeResourcesInternal(VOID)
NTSTATUS InterruptEnable(VOID)
__inline BOOLEAN QueueDeferredRoutineForIsr(VOID)
__inline BOOLEAN IsAutomaticSerialization(VOID)
VOID ProcessEvent(__in FxWakeInterruptEvents Event)
return pObject GetObjectHandle()
FxInterruptEnableParameters FxInterruptDisableParameters
BOOLEAN _SynchronizeExecution(__in MdInterrupt Interrupt, __in MdInterruptSynchronizeRoutine SynchronizeRoutine, __in PVOID SynchronizeContext)
VOID pFxInterrupt ForceDisconnect()
VOID pFxInterrupt ForceReconnect()
_In_ PKSPIN_CONNECT Connect
KSYNCHRONIZE_ROUTINE * MdInterruptSynchronizeRoutine
KSERVICE_ROUTINE MdInterruptServiceRoutineType
KSYNCHRONIZE_ROUTINE MdInterruptSynchronizeRoutineType
KDEFERRED_ROUTINE MdDeferredRoutineType
IO_WORKITEM_ROUTINE MX_WORKITEM_ROUTINE
#define CM_RESOURCE_INTERRUPT_LEVEL_LATCHED_BITS
#define CM_RESOURCE_INTERRUPT_MESSAGE
#define CM_RESOURCE_INTERRUPT_WAKE_HINT
#define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
#define _Must_inspect_result_
#define UNREFERENCED_PARAMETER(P)
FxLibraryGlobalsType FxLibraryGlobals
PFN_IO_REPORT_INTERRUPT_INACTIVE IoReportInterruptInactive
_Must_inspect_result_ _In_ WDFDEVICE Device
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
EVT_WDF_INTERRUPT_DISABLE * PFN_WDF_INTERRUPT_DISABLE
_In_ WDFINTERRUPT _In_ WDF_INTERRUPT_POLICY _In_ WDF_INTERRUPT_PRIORITY _In_ KAFFINITY TargetProcessorSet
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_INTERRUPT_CONFIG Configuration
_In_ WDFINTERRUPT _In_ WDF_INTERRUPT_POLICY _In_ WDF_INTERRUPT_PRIORITY Priority
enum _WDF_INTERRUPT_PRIORITY WDF_INTERRUPT_PRIORITY
enum _WDF_INTERRUPT_POLICY WDF_INTERRUPT_POLICY
EVT_WDF_INTERRUPT_DPC * PFN_WDF_INTERRUPT_DPC
EVT_WDF_INTERRUPT_ISR * PFN_WDF_INTERRUPT_ISR
EVT_WDF_INTERRUPT_WORKITEM * PFN_WDF_INTERRUPT_WORKITEM
_In_ WDFINTERRUPT _In_ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
EVT_WDF_INTERRUPT_SYNCHRONIZE * PFN_WDF_INTERRUPT_SYNCHRONIZE
EVT_WDF_INTERRUPT_ENABLE * PFN_WDF_INTERRUPT_ENABLE
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_INTERRUPT_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFINTERRUPT * Interrupt
_In_ WDFINTERRUPT _In_ WDF_INTERRUPT_POLICY Policy
enum _WDF_TRI_STATE WDF_TRI_STATE
_Must_inspect_result_ _In_ ULONG Flags
_In_ PKSYNCHRONIZE_ROUTINE _In_opt_ __drv_aliasesMem PVOID SynchronizeContext
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2