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;

若要定义名为 MyInterruptIsrOnInterruptIsr 回调函数,必须先提供 SDV 和其他验证工具所需的函数声明,如下所示:

WUDF_INTERRUPT_NOTIFY  MyInterruptIsr;

然后,按如下所示实现回调函数:

BOOLEAN
  MyInterruptIsr (
    IN IWDFInterrupt*  Interrupt,
    IN ULONG  MessageID,
    IN ULONG Reserved
    )
  {…}

要求

要求
结束支持 在 UMDF 2.0 及更高版本中不可用。
目标平台 桌面
最低 UMDF 版本 1.11
标头 wudfinterrupt.h

另请参阅