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 |