WUDF_INTERRUPT_ISR回调函数 (wudfinterrupt.h)
警告
UMDF 2 是最新版本的 UMDF,取代了 UMDF 1。 所有新的 UMDF 驱动程序都应使用 UMDF 2 编写。 未向 UMDF 1 添加新功能,并且较新版本的 Windows 10 上对 UMDF 1 的支持有限。 通用 Windows 驱动程序必须使用 UMDF 2。 有关详细信息,请参阅使用 UMDF 入门。
驱动程序的 OnInterruptIsr 事件回调函数为硬件中断提供服务。
语法
typedef
BOOLEAN
_Function_class_(WUDF_INTERRUPT_ISR)
WUDF_INTERRUPT_ISR(
_In_
IWDFInterrupt* Interrupt,
_In_
ULONG MessageID,
_In_
ULONG Reserved
);
typedef WUDF_INTERRUPT_ISR *PFN_WUDF_INTERRUPT_ISR;
参数
[in] Interrupt
指向 IWDFInterrupt 接口的 指针。
[in] MessageID
如果设备使用消息信号中断 (MSI) ,则此参数是标识设备硬件中断消息的消息号。 否则,此值为 0。
[in] Reserved
预留给系统使用。
返回值
无
备注
如果驱动程序确认中断的所有权,并且已停止并确认其设备上的中断,则返回 TRUE。 否则,返回 FALSE。
若要注册 OnInterruptIsr 回调函数,驱动程序必须在调用 IWDFDevice3::CreateInterrupt 之前将回调函数的地址置于 WUDF_INTERRUPT_CONFIG 结构中。
OnInterruptIsr 回调函数是 UMDF 驱动程序的中断服务例程 (ISR) ,在发生硬件中断时PASSIVE_LEVEL调用。
对于边缘触发的中断或 msi) (消息信号中断,框架在操作系统的中断调度上下文外部调用 OnInterruptIsr 。 这是因为 UMDF 仅允许非共享边缘触发或 MSI 中断,并且驱动程序不需要在此上下文中与其硬件交互。
对于级别触发的中断,框架在操作系统中断调度的上下文中调用 OnInterruptIsr 。 因此,操作系统的中断调度线程在内核模式下被阻止,等待驱动程序的响应。
通常, OnInterruptIsr 会保存任何可能丢失的易失性信息,并清除硬件中断。 对于级别触发的中断,驱动程序应停止并确认设备上的中断,如果它拥有该中断,则返回 TRUE。 驱动程序应在 OnInterruptWorkItem 回调中执行任何进一步处理。 若要对工作项进行排队,驱动程序会调用 IWDFInterrupt::QueueWorkItemForIsr 方法。
有关在 UMDF 驱动程序中处理中断的详细信息,请参阅 访问硬件和处理中断。
示例
函数类型在 Wudfinterrupt.h 中声明,如下所示。
typedef
BOOLEAN
WUDF_INTERRUPT_ISR(
_In_
IWDFInterrupt* Interrupt,
_In_
ULONG MessageID,
_In_
ULONG Reserved
);
typedef WUDF_INTERRUPT_ISR *PFN_WUDF_INTERRUPT_ISR;
若要定义名为 MyInterruptIsr 的 OnInterruptIsr 回调函数,必须先提供 SDV 和其他验证工具所需的函数声明,如下所示:
WUDF_INTERRUPT_NOTIFY MyInterruptIsr;
然后,按如下所示实现回调函数:
BOOLEAN
MyInterruptIsr (
IN IWDFInterrupt* Interrupt,
IN ULONG MessageID,
IN ULONG Reserved
)
{…}
要求
要求 | 值 |
---|---|
结束支持 | 在 UMDF 2.0 及更高版本中不可用。 |
目标平台 | 桌面 |
最低 UMDF 版本 | 1.11 |
标头 | wudfinterrupt.h |