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);
1160 WDFEXPORT(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");
1253 WDFEXPORT(WdfInterruptTryToAcquireLock)(
1295 "WDFINTERRUPT %p is handled at DIRQL. This API is not " 1296 "available for DIQRL interrupt handling.",
PCM_PARTIAL_RESOURCE_DESCRIPTOR InterruptRaw
enum _WDF_DEVICE_PNP_STATE WDF_DEVICE_PNP_STATE
return STATUS_NOT_SUPPORTED
__in WDFINTERRUPT __in WDF_INTERRUPT_POLICY __in WDF_INTERRUPT_PRIORITY __in KAFFINITY TargetProcessorSet
__in WDFINTERRUPT __in PFN_WDF_INTERRUPT_SYNCHRONIZE __in WDFCONTEXT Context
#define STATUS_INFO_LENGTH_MISMATCH
PFN_WDF_INTERRUPT_ISR EvtInterruptIsr
PFN_WDF_INTERRUPT_DISABLE EvtInterruptDisable
WDF_TRI_STATE ShareVector
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_INTERRUPT_CONFIG Configuration
WDFDEVICE __inline GetHandle(VOID)
#define STATUS_INVALID_PARAMETER
enum _WDF_TRI_STATE WDF_TRI_STATE
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_INTERRUPT_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFINTERRUPT * Interrupt
__in WDFINTERRUPT __out PWDF_INTERRUPT_INFO Info
RtlCopyMemory(Info, pFxInterrupt->GetInfo(), size)
WDF_TRI_STATE ReportInactiveOnPowerDown
FxVerifierDbgBreakPoint(pFxDriverGlobals)
struct _WDF_INTERRUPT_CONFIG_V1_11 * PWDF_INTERRUPT_CONFIG_V1_11
__in WDFINTERRUPT __in WDF_INTERRUPT_POLICY Policy
#define _When_(expr, annos)
__in WDFINTERRUPT __in PWDF_INTERRUPT_EXTENDED_POLICY PolicyAndGroup
#define CHECK(type, val, base, expected)
struct _WDF_INTERRUPT_INFO WDF_INTERRUPT_INFO
PFN_WDF_INTERRUPT_DPC EvtInterruptDpc
_Must_inspect_result_ __in WDFDEVICE Device
_Must_inspect_result_ NTSTATUS ForceDisconnect(VOID)
WDF_INTERRUPT_POLICY policy
#define STATUS_INVALID_DEVICE_STATE
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
struct _WDF_INTERRUPT_CONFIG WDF_INTERRUPT_CONFIG
PFN_WDF_INTERRUPT_ENABLE EvtInterruptEnable
PFN_WDF_INTERRUPT_ENABLE EvtInterruptEnable
PFN_WDF_INTERRUPT_ISR EvtInterruptIsr
PCM_PARTIAL_RESOURCE_DESCRIPTOR InterruptTranslated
PFN_WDF_INTERRUPT_ENABLE EvtInterruptEnable
EVT_WDF_INTERRUPT_SYNCHRONIZE * PFN_WDF_INTERRUPT_SYNCHRONIZE
__in WDFINTERRUPT __in WDF_INTERRUPT_POLICY __in WDF_INTERRUPT_PRIORITY Priority
FORCEINLINE VOID WDF_INTERRUPT_CONFIG_INIT(_Out_ PWDF_INTERRUPT_CONFIG Configuration, _In_ PFN_WDF_INTERRUPT_ISR EvtInterruptIsr, _In_opt_ PFN_WDF_INTERRUPT_DPC EvtInterruptDpc)
struct _WDF_INTERRUPT_CONFIG_V1_11_BETA WDF_INTERRUPT_CONFIG_V1_11_BETA
VOID ReportActive(_In_ BOOLEAN Internal=FALSE)
WDF_TRI_STATE ShareVector
PVOID __inline GetObjectHandle(VOID)
struct _WDF_INTERRUPT_CONFIG_V1_11 WDF_INTERRUPT_CONFIG_V1_11
__inline BOOLEAN QueueDeferredRoutineForIsr(VOID)
#define ERROR_STRING_HW_ACCESS_NOT_ALLOWED
PFN_WDF_INTERRUPT_WORKITEM EvtInterruptWorkItem
enum _WDF_INTERRUPT_POLICY WDF_INTERRUPT_POLICY
_Must_inspect_result_ BOOLEAN IsVersionGreaterThanOrEqualTo(__in ULONG Major, __in ULONG Minor)
WDF_INTERRUPT_PRIORITY priority
BOOLEAN AutomaticSerialization
GROUP_AFFINITY processorSet
BOOLEAN STDCALL WDFEXPORT() WdfInterruptQueueDpcForIsr(__in PWDF_DRIVER_GLOBALS DriverGlobals, __in WDFINTERRUPT Interrupt)
PWDF_INTERRUPT_INFO GetInfo(VOID)
BOOLEAN AutomaticSerialization
struct _WDF_INTERRUPT_CONFIG_V1_9 * PWDF_INTERRUPT_CONFIG_V1_9
__in _Requires_lock_not_held_(_Curr_) _Acquires_lock_(_Curr_) WDFINTERRUPT Interrupt)
BOOLEAN STDCALL WDFEXPORT() WdfInterruptQueueWorkItemForIsr(__in PWDF_DRIVER_GLOBALS DriverGlobals, __in WDFINTERRUPT Interrupt)
PCM_PARTIAL_RESOURCE_DESCRIPTOR InterruptTranslated
struct _WDF_INTERRUPT_CONFIG_V1_9 WDF_INTERRUPT_CONFIG_V1_9
__inline NTSTATUS FxVerifierCheckIrqlLevel(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in KIRQL Irql)
#define _Post_satisfies_(cond)
_Must_inspect_result_ __in WDFDEVICE __in PWDF_INTERRUPT_CONFIG Configuration
PFN_WDF_INTERRUPT_DISABLE EvtInterruptDisable
CfxDevice * GetDevice(VOID)
#define _Releases_lock_(lock)
#define NT_SUCCESS(StatCode)
EVT_WDF_INTERRUPT_WORKITEM * PFN_WDF_INTERRUPT_WORKITEM
FxInterrupt * pFxInterrupt
enum _WDF_INTERRUPT_PRIORITY WDF_INTERRUPT_PRIORITY
__inline BYTE GetCallbackFlags(VOID)
_Must_inspect_result_ __in WDFDEVICE __in PWDF_INTERRUPT_CONFIG __in_opt PWDF_OBJECT_ATTRIBUTES __out WDFINTERRUPT * Interrupt
__in _Requires_lock_held_(_Curr_) _Releases_lock_(_Curr_) WDFINTERRUPT Interrupt)
PFN_WDF_INTERRUPT_DISABLE EvtInterruptDisable
EVT_WDF_INTERRUPT_ISR * PFN_WDF_INTERRUPT_ISR
PFN_WDF_INTERRUPT_ISR EvtInterruptIsr
_Must_inspect_result_ NTSTATUS ValidateInterruptResourceCm(__in PCM_PARTIAL_RESOURCE_DESCRIPTOR CmIntResourceRaw, __in PCM_PARTIAL_RESOURCE_DESCRIPTOR CmIntResource, __in PWDF_INTERRUPT_CONFIG Configuration)
EVT_WDF_INTERRUPT_ENABLE * PFN_WDF_INTERRUPT_ENABLE
BOOLEAN IsPowerPolicyOwner(VOID)
_In_ WDFINTERRUPT _In_ WDF_INTERRUPT_POLICY _In_ WDF_INTERRUPT_PRIORITY Priority
PFN_WDF_INTERRUPT_DPC EvtInterruptDpc
VOID SetPolicy(__in WDF_INTERRUPT_POLICY Policy, __in WDF_INTERRUPT_PRIORITY Priority, __in PGROUP_AFFINITY TargetProcessorSet)
__inline WDF_DEVICE_PNP_STATE GetDevicePnpState()
FxObjectHandleGetPtrAndGlobals(GetFxDriverGlobals(DriverGlobals), Device, FX_TYPE_DEVICE,(PVOID *)&pDevice, &pFxDriverGlobals)
BOOLEAN Synchronize(__in PFN_WDF_INTERRUPT_SYNCHRONIZE Callback, __in WDFCONTEXT Context)
_Must_inspect_result_ NTSTATUS FxValidateObjectAttributes(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PWDF_OBJECT_ATTRIBUTES Attributes, __in ULONG Flags=FX_VALIDATE_OPTION_NONE_SPECIFIED)
_Must_inspect_result_ __drv_maxIRQL(DISPATCH_LEVEL) NTSTATUS STDCALL WDFEXPORT(WdfInterruptCreate)(__in PWDF_DRIVER_GLOBALS DriverGlobals
#define _Must_inspect_result_
static BOOLEAN _IsWakeHintedInterrupt(__in USHORT ResourceFlags)
_Must_inspect_result_ _In_ WDFDEVICE Device
WDF_TRI_STATE ShareVector
#define TRACE_LEVEL_ERROR
_In_ WDFINTERRUPT _In_ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
PFX_DRIVER_GLOBALS pFxDriverGlobals
__inline BOOLEAN IsPassiveHandling(VOID)
#define _IRQL_requires_max_(irql)
__inline PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
__in WDFINTERRUPT __in PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
FX_VERIFY_WITH_NAME(DRIVER(BadArgument, TODO), CHECK(ERROR_STRING_HW_ACCESS_NOT_ALLOWED,(pDevice->IsInterruptAccessAllowed()==TRUE)), DriverGlobals->DriverName)
FxObjectHandleGetPtr(GetFxDriverGlobals(DriverGlobals), Interrupt, FX_TYPE_INTERRUPT,(PVOID *)&pFxInterrupt)
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
FxPointerNotNull(pFxDriverGlobals, Configuration)
PFN_WDF_INTERRUPT_WORKITEM EvtInterruptWorkItem
_Must_inspect_result_ NTSTATUS ForceReconnect(VOID)
EVT_WDF_INTERRUPT_DISABLE * PFN_WDF_INTERRUPT_DISABLE
BOOLEAN TryToAcquireLock(VOID)
_Must_inspect_result_ __in WDFDEVICE __in PWDF_INTERRUPT_CONFIG __in_opt PWDF_OBJECT_ATTRIBUTES Attributes
BOOLEAN QueueWorkItemForIsr(VOID)
_Must_inspect_result_ struct _KINTERRUPT *STDCALL WDFEXPORT() WdfInterruptWdmGetInterrupt(__in PWDF_DRIVER_GLOBALS DriverGlobals, __in WDFINTERRUPT Interrupt)
BOOLEAN IsInterruptAccessAllowed(VOID)
_Must_inspect_result_ __inline BOOLEAN FxIsPassiveLevelInterruptSupported(VOID)
#define RtlZeroMemory(Destination, Length)
WDFDEVICE STDCALL WDFEXPORT() WdfInterruptGetDevice(__in PWDF_DRIVER_GLOBALS DriverGlobals, __in WDFINTERRUPT Interrupt)
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)
__inline BOOLEAN IsPdo(VOID)
PFN_WDF_INTERRUPT_DPC EvtInterruptDpc
__inline PFX_DRIVER_GLOBALS GetFxDriverGlobals(__in PWDF_DRIVER_GLOBALS DriverGlobals)
WDF_DEVICE_PNP_STATE devicePnpState
_In_ WDFINTERRUPT _In_ PWDF_INTERRUPT_EXTENDED_POLICY PolicyAndGroup
#define _Acquires_lock_(lock)
VOID ReportInactive(_In_ BOOLEAN Internal=FALSE)
_In_ WDFINTERRUPT _In_ WDF_INTERRUPT_POLICY Policy
struct _WDF_INTERRUPT_CONFIG_V1_11_BETA * PWDF_INTERRUPT_CONFIG_V1_11_BETA
static BOOLEAN _IsMessageInterrupt(__in USHORT ResourceFlags)
BOOLEAN AutomaticSerialization
PCM_PARTIAL_RESOURCE_DESCRIPTOR InterruptRaw
PFN_WDF_INTERRUPT_ISR EvtInterruptIsr
WDF_INTERRUPT_CONFIG intConfig
EVT_WDF_INTERRUPT_DPC * PFN_WDF_INTERRUPT_DPC
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
struct _KINTERRUPT * GetInterruptPtr(VOID)