271 "WDF_INTERRUPT_CONFIG size 0x%x incorrect, expected 0x%x",
303#if (FX_CORE_MODE == FX_CORE_USER_MODE)
317 CHECK(
"PassiveHandling not set to TRUE in WDF_INTERRUPT_CONFIG structure",
325 "NULL EvtInterruptIsr in WDF_INTERRUPT_CONFIG structure 0x%p"
363 "WDFINTERRUPTs can only be created during: "
364 "(1) EvtDriverDeviceAdd when the WDFDEVICE %p is initially created, or "
365 "(2) EvtDevicePrepareHardware, %!STATUS!",
Device,
status);
383 "Not NULL InterruptRaw or InterruptTranslated in "
384 "WDF_INTERRUPT_CONFIG structure 0x%p passed, %!STATUS!",
399 "CanWakeDevice set in WDF_INTERRUPT_CONFIG structure 0x%p"
400 "during EvtDriverDeviceAdd, %!STATUS!",
421 "NULL InterruptRaw or InterruptTranslated in "
422 "WDF_INTERRUPT_CONFIG structure 0x%p passed, %!STATUS!",
436 "Driver cannot specify ShareVector different from "
437 "WdfUseDefault in EvtDevicePrepareHardware callback,"
438 "WDF_INTERRUPT_CONFIG structure 0x%p passed, %!STATUS!",
453 "Driver cannot specify an interrupt as CanWakeDevice if "
454 "the CM_RESOURCE_INTERRUPT_WAKE_HINT is not present."
455 "WDF_INTERRUPT_CONFIG structure 0x%p passed, %!STATUS!",
470 "Driver cannot specify an interrupt as CanWakeDevice if "
471 "it is not power policy powner. WDF_INTERRUPT_CONFIG "
472 "structure 0x%p passed, %!STATUS!",
487 "Driver cannot specify an interrupt as CanWakeDevice for a PDO "
488 "WDF_INTERRUPT_CONFIG structure 0x%p passed, %!STATUS!",
500 "Driver can provide either EvtInterruptDpc or "
501 "EvtInterruptWorkItem callback but not both. "
502 "WDF_INTERRUPT_CONFIG structure 0x%p passed, %!STATUS!",
516 "Driver cannot specify WaitLock when handling interrupts at "
517 "DIRQL, WDF_INTERRUPT_CONFIG structure 0x%p passed, %!STATUS!",
532 "CanWakeDevice set in WDF_INTERRUPT_CONFIG structure for an"
533 "interrupt not marked as passive 0x%p, %!STATUS!",
547 "The current version of Windows does not support the handling "
548 "of interrupts at passive-level, WDF_INTERRUPT_CONFIG "
558 "Driver cannot specify SpinLock when handling interrupts at "
559 "passive-level, WDF_INTERRUPT_CONFIG structure 0x%p passed, "
571#if (FX_CORE_MODE == FX_CORE_KERNEL_MODE)
578 "Driver cannot specify PassiveHandling for MSI interrupts, "
579 "WDF_INTERRUPT_CONFIG structure 0x%p passed, %!STATUS!",
1038 "WDF_INTERRUPT_INFO %p Size %d invalid, expected %d",
1138 "Policy %d is out of range",
Policy);
1146 "Priority %d is out of range",
Priority);
1160WDFEXPORT(WdfInterruptSetExtendedPolicy)(
1207 "WDF_INTERRUPT_EXTENDED_POLICY %p Size %d invalid, expected %d",
1223 "Policy %d is out of range",
policy);
1231 "Priority %d is out of range",
priority);
1240 "TargetProcessorSet's reserved fields are not zero");
1295 "WDFINTERRUPT %p is handled at DIRQL. This API is not "
1296 "available for DIQRL interrupt handling.",
WDFDEVICE __inline GetHandle(VOID)
__inline BOOLEAN IsPdo(VOID)
__inline BYTE GetCallbackFlags(VOID)
BOOLEAN IsInterruptAccessAllowed(VOID)
__inline WDF_DEVICE_PNP_STATE GetDevicePnpState()
PWDF_INTERRUPT_INFO GetInfo(VOID)
_Must_inspect_result_ NTSTATUS ForceReconnect(VOID)
VOID ReportActive(_In_ BOOLEAN Internal=FALSE)
struct _KINTERRUPT * GetInterruptPtr(VOID)
__inline BOOLEAN IsPassiveHandling(VOID)
BOOLEAN Synchronize(__in PFN_WDF_INTERRUPT_SYNCHRONIZE Callback, __in WDFCONTEXT Context)
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)
static BOOLEAN _IsMessageInterrupt(__in USHORT ResourceFlags)
VOID SetPolicy(__in WDF_INTERRUPT_POLICY Policy, __in WDF_INTERRUPT_PRIORITY Priority, __in PGROUP_AFFINITY TargetProcessorSet)
CfxDevice * GetDevice(VOID)
BOOLEAN QueueWorkItemForIsr(VOID)
BOOLEAN TryToAcquireLock(VOID)
static BOOLEAN _IsWakeHintedInterrupt(__in USHORT ResourceFlags)
VOID ReportInactive(_In_ BOOLEAN Internal=FALSE)
_Must_inspect_result_ NTSTATUS ForceDisconnect(VOID)
__inline BOOLEAN QueueDeferredRoutineForIsr(VOID)
PVOID __inline GetObjectHandle(VOID)
__inline PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
BOOLEAN IsPowerPolicyOwner(VOID)
_Must_inspect_result_ NTSTATUS ValidateInterruptResourceCm(__in PCM_PARTIAL_RESOURCE_DESCRIPTOR CmIntResourceRaw, __in PCM_PARTIAL_RESOURCE_DESCRIPTOR CmIntResource, __in PWDF_INTERRUPT_CONFIG Configuration)
#define _Acquires_lock_(lock)
#define _Requires_lock_held_(lock)
#define _Requires_lock_not_held_(lock)
#define _Releases_lock_(lock)
#define STATUS_NOT_SUPPORTED
#define ERROR_STRING_HW_ACCESS_NOT_ALLOWED
#define NT_SUCCESS(StatCode)
#define _IRQL_requires_max_(irql)
#define __drv_maxIRQL(irql)
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
_Must_inspect_result_ __inline BOOLEAN FxIsPassiveLevelInterruptSupported(VOID)
__inline PFX_DRIVER_GLOBALS GetFxDriverGlobals(__in PWDF_DRIVER_GLOBALS DriverGlobals)
__in WDFINTERRUPT __in WDF_INTERRUPT_POLICY __in WDF_INTERRUPT_PRIORITY Priority
struct _WDF_INTERRUPT_CONFIG_V1_11 * PWDF_INTERRUPT_CONFIG_V1_11
__in WDFINTERRUPT __out PWDF_INTERRUPT_INFO Info
struct _WDF_INTERRUPT_CONFIG_V1_9 * PWDF_INTERRUPT_CONFIG_V1_9
_Must_inspect_result_ struct _KINTERRUPT *STDCALL WDFEXPORT() WdfInterruptWdmGetInterrupt(__in PWDF_DRIVER_GLOBALS DriverGlobals, __in WDFINTERRUPT Interrupt)
WDF_DEVICE_PNP_STATE devicePnpState
GROUP_AFFINITY processorSet
__in WDFINTERRUPT __in WDF_INTERRUPT_POLICY Policy
FxVerifierDbgBreakPoint(pFxDriverGlobals)
_Must_inspect_result_ __in WDFDEVICE __in PWDF_INTERRUPT_CONFIG __in_opt PWDF_OBJECT_ATTRIBUTES __out WDFINTERRUPT * Interrupt
struct _WDF_INTERRUPT_CONFIG_V1_11_BETA * PWDF_INTERRUPT_CONFIG_V1_11_BETA
WDF_INTERRUPT_PRIORITY priority
__in WDFINTERRUPT __in PFN_WDF_INTERRUPT_SYNCHRONIZE __in WDFCONTEXT Context
__in WDFINTERRUPT __in PWDF_INTERRUPT_EXTENDED_POLICY PolicyAndGroup
BOOLEAN STDCALL WDFEXPORT() WdfInterruptQueueDpcForIsr(__in PWDF_DRIVER_GLOBALS DriverGlobals, __in WDFINTERRUPT Interrupt)
struct _WDF_INTERRUPT_CONFIG_V1_11_BETA WDF_INTERRUPT_CONFIG_V1_11_BETA
_Must_inspect_result_ __in WDFDEVICE Device
FX_VERIFY_WITH_NAME(DRIVER(BadArgument, TODO), CHECK(ERROR_STRING_HW_ACCESS_NOT_ALLOWED,(pDevice->IsInterruptAccessAllowed()==TRUE)), DriverGlobals->DriverName)
BOOLEAN STDCALL WDFEXPORT() WdfInterruptQueueWorkItemForIsr(__in PWDF_DRIVER_GLOBALS DriverGlobals, __in WDFINTERRUPT Interrupt)
WDF_INTERRUPT_CONFIG intConfig
WDFDEVICE STDCALL WDFEXPORT() WdfInterruptGetDevice(__in PWDF_DRIVER_GLOBALS DriverGlobals, __in WDFINTERRUPT Interrupt)
_Must_inspect_result_ __in WDFDEVICE __in PWDF_INTERRUPT_CONFIG __in_opt PWDF_OBJECT_ATTRIBUTES Attributes
__in WDFINTERRUPT __in PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
struct _WDF_INTERRUPT_CONFIG_V1_11 WDF_INTERRUPT_CONFIG_V1_11
FxInterrupt * pFxInterrupt
FxObjectHandleGetPtrAndGlobals(GetFxDriverGlobals(DriverGlobals), Device, FX_TYPE_DEVICE,(PVOID *)&pDevice, &pFxDriverGlobals)
__in WDFINTERRUPT __in WDF_INTERRUPT_POLICY __in WDF_INTERRUPT_PRIORITY __in KAFFINITY TargetProcessorSet
WDF_INTERRUPT_POLICY policy
struct _WDF_INTERRUPT_CONFIG_V1_9 WDF_INTERRUPT_CONFIG_V1_9
_Must_inspect_result_ __in WDFDEVICE __in PWDF_INTERRUPT_CONFIG Configuration
FxObjectHandleGetPtr(GetFxDriverGlobals(DriverGlobals), Interrupt, FX_TYPE_INTERRUPT,(PVOID *)&pFxInterrupt)
PFX_DRIVER_GLOBALS pFxDriverGlobals
#define FxPointerNotNull(FxDriverGlobals, Ptr)
@ FXDEVICE_CALLBACK_IN_PREPARE_HARDWARE
@ FX_VALIDATE_OPTION_NONE_SPECIFIED
@ FX_VALIDATE_OPTION_PARENT_NOT_ALLOWED
_Must_inspect_result_ NTSTATUS FxValidateObjectAttributes(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PWDF_OBJECT_ATTRIBUTES Attributes, __in ULONG Flags=FX_VALIDATE_OPTION_NONE_SPECIFIED)
__inline NTSTATUS FxVerifierCheckIrqlLevel(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in KIRQL Irql)
#define _Must_inspect_result_
#define _Post_satisfies_(e)
#define TRACE_LEVEL_ERROR
_Must_inspect_result_ BOOLEAN IsVersionGreaterThanOrEqualTo(__in ULONG Major, __in ULONG Minor)
PCM_PARTIAL_RESOURCE_DESCRIPTOR InterruptTranslated
WDF_TRI_STATE ShareVector
PFN_WDF_INTERRUPT_WORKITEM EvtInterruptWorkItem
PFN_WDF_INTERRUPT_DPC EvtInterruptDpc
BOOLEAN AutomaticSerialization
PCM_PARTIAL_RESOURCE_DESCRIPTOR InterruptRaw
PFN_WDF_INTERRUPT_ENABLE EvtInterruptEnable
PFN_WDF_INTERRUPT_ISR EvtInterruptIsr
PFN_WDF_INTERRUPT_DISABLE EvtInterruptDisable
PFN_WDF_INTERRUPT_ENABLE EvtInterruptEnable
PCM_PARTIAL_RESOURCE_DESCRIPTOR InterruptRaw
WDF_TRI_STATE ReportInactiveOnPowerDown
PFN_WDF_INTERRUPT_DISABLE EvtInterruptDisable
PCM_PARTIAL_RESOURCE_DESCRIPTOR InterruptTranslated
BOOLEAN AutomaticSerialization
PFN_WDF_INTERRUPT_ISR EvtInterruptIsr
WDF_TRI_STATE ShareVector
PFN_WDF_INTERRUPT_WORKITEM EvtInterruptWorkItem
PFN_WDF_INTERRUPT_DPC EvtInterruptDpc
PFN_WDF_INTERRUPT_DISABLE EvtInterruptDisable
PFN_WDF_INTERRUPT_DPC EvtInterruptDpc
WDF_TRI_STATE ShareVector
PFN_WDF_INTERRUPT_ENABLE EvtInterruptEnable
BOOLEAN AutomaticSerialization
PFN_WDF_INTERRUPT_ISR EvtInterruptIsr
PFN_WDF_INTERRUPT_ISR EvtInterruptIsr
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define STATUS_INVALID_PARAMETER
#define STATUS_INVALID_DEVICE_STATE
#define STATUS_INFO_LENGTH_MISMATCH
struct _WDF_INTERRUPT_INFO_V1_7 WDF_INTERRUPT_INFO_V1_7
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
_Must_inspect_result_ _In_ WDFDEVICE Device
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
enum _WDF_DEVICE_PNP_STATE WDF_DEVICE_PNP_STATE
EVT_WDF_INTERRUPT_DISABLE * PFN_WDF_INTERRUPT_DISABLE
struct _WDF_INTERRUPT_INFO WDF_INTERRUPT_INFO
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_INTERRUPT_CONFIG Configuration
struct _WDF_INTERRUPT_CONFIG WDF_INTERRUPT_CONFIG
_In_ WDFINTERRUPT _In_ WDF_INTERRUPT_POLICY _In_ WDF_INTERRUPT_PRIORITY Priority
_In_ WDFINTERRUPT _In_ PWDF_INTERRUPT_EXTENDED_POLICY PolicyAndGroup
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
FORCEINLINE VOID WDF_INTERRUPT_CONFIG_INIT(_Out_ PWDF_INTERRUPT_CONFIG Configuration, _In_ PFN_WDF_INTERRUPT_ISR EvtInterruptIsr, _In_opt_ PFN_WDF_INTERRUPT_DPC EvtInterruptDpc)
_In_ WDFINTERRUPT _In_ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
@ WdfIrqPolicyMachineDefault
@ WdfIrqPolicySpreadMessagesAcrossAllProcessors
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