IWDFDevice3::CreateInterrupt 方法(wudfddi.h)

[警告: UMDF 2 是最新版本的 UMDF,取代了 UMDF 1。 所有新的 UMDF 驱动程序都应使用 UMDF 2 编写。 没有将新功能添加到 UMDF 1,并且对较新版本的 Windows 10 上的 UMDF 1 的支持有限。 通用 Windows 驱动程序必须使用 UMDF 2。 有关详细信息,请参阅 UMDF入门 。]

CreateInterrupt 方法创建框架中断对象。

语法

HRESULT CreateInterrupt(
  [in]  PWUDF_INTERRUPT_CONFIG Configuration,
  [out] IWDFInterrupt          **ppInterrupt
);

参数

[in] Configuration

指向通过调用 WUDF_INTERRUPT_CONFIG_INIT 宏初始化的 WUDF_INTERRUPT_CONFIG 结构的指针。

[out] ppInterrupt

指向缓冲区的指针,该缓冲区接收指向新中断对象的 IWDFInterrupt 接口的指针。

返回值

如果作成功,该方法将返回S_OK。 否则,此方法返回在 Winerror.h 中定义的错误代码之一。

言论

驱动程序必须为每个设备所需的中断向量调用 CreateInterrupt 一次。 如果设备支持消息信号中断(MSI),驱动程序必须为设备可以支持的每个消息创建中断对象。

驱动程序通常从 OnDeviceAdd 回调函数调用 CreateInterrupt 方法,但也可以从 IPnpCallbackHardware2::OnPrepareHardware调用此方法。

即插即用(PnP)管理器将系统资源分配给设备后,框架会将有关设备分配的中断资源的信息存储在驱动程序创建的中断对象中。 (不支持即插即用的驱动程序无法使用中断对象。

系统可能不会分配设备可以支持的所有中断资源。 例如,驱动程序为能够支持 8 条 MSI 消息的设备创建 8 个中断对象。 但是,系统可能只向设备分配一条消息。 在这种情况下,将不使用其中七个中断对象。

通常,驱动程序应在中断对象的上下文空间中存储特定于中断的信息,例如设备中断寄存器的复制内容。 驱动程序调用 IWDFObject::AssignContext 来注册上下文,并在对象无效时请求通知。

UMDF 支持从 Windows 8 开始的级别触发中断。 如果早于 Windows 8 的作系统上运行的驱动程序在 OnDeviceAdd 中创建触发的中断,CreateInterrupt 成功,因为作系统尚未分配资源。 但是,当框架稍后尝试连接中断时,设备无法启动。

有关在 UMDF 驱动程序中处理中断的详细信息,请参阅 访问硬件和处理中断

例子

HRESULT  hr;
IWDFInterrupt* pInterrupt;
WUDF_INTERRUPT_CONFIG  interruptConfig;

WUDF_INTERRUPT_CONFIG_INIT(&interruptConfig,
                           MyInterruptIsr,
                           MyInterruptWorkItem);

hr = pDevice->Create(&interruptConfig, 
                     &pInterrupt);

要求

要求 价值
终止支持 在 UMDF 2.0 及更高版本中不可用。
目标平台 桌面
最低 UMDF 版本 1.11
标头 wudfddi.h
DLL WUDFx.dll

另请参阅

IWDFDevice3

WUDF_INTERRUPT_CONFIG

WUDF_INTERRUPT_CONFIG_INIT