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

另请参阅