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
如果设备使用消息信号中断(MSIs),则此参数是标识设备硬件中断消息的消息号。 否则,此值为 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 |