IWDFIoTargetStateManagement::Stop 方法 (wudfddi.h)
[警告: UMDF 2 是最新版本的 UMDF,并取代 UMDF 1。 所有新的 UMDF 驱动程序都应使用 UMDF 2 编写。 不会向 UMDF 1 添加任何新功能,并且较新版本的 Windows 10 上对 UMDF 1 的支持有限。 通用 Windows 驱动程序必须使用 UMDF 2。 有关详细信息,请参阅使用 UMDF 入门。]
Stop 方法停止将排队的请求发送到本地 I/O 目标。
语法
HRESULT Stop(
[in] WDF_IO_TARGET_SENT_IO_ACTION Action
);
参数
[in] Action
一个WDF_IO_TARGET_SENT_IO_ACTION类型的值,该值标识在 I/O 目标对象停止时如何处理发送的 I/O。
返回值
停止 始终返回S_OK。
注解
如果驱动程序可以检测到可恢复的设备错误,你可能希望驱动程序调用 Stop 以暂时停止向本地 I/O 目标发送请求,然后稍后调用 IWDFIoTargetStateManagement::Start 以继续发送请求。
此外,如果驱动程序调用 IWDFUsbTargetPipe2::ConfigureContinuousReader 为 USB 管道配置连续读取器,则驱动程序的 IPnpCallback::OnD0Exit 回调函数必须调用 Stop 来停止读取器。
如果驱动程序已调用 Stop,它仍然可以在调用 IWDFIoRequest::Send 时通过设置WDF_REQUEST_OPTION_IGNORE_TARGET_STATE标志向目标发送请求。 如果驱动程序设置了此标志,驱动程序可以在驱动程序调用 Stop 后向设备发送请求,例如重置 USB 管道的请求 (请参阅 IWDFUsbTargetPipe::Reset) 。
驱动程序必须同步调用 IWDFIoTargetStateManagement::Start 和 Stop 。 驱动程序调用其中一个函数后,在第一次调用返回之前,它不得调用任一函数。
驱动程序可以在不调用 IWDFIoTargetStateManagement::Start 的情况下多次调用 Stop。 例如,驱动程序可能会执行以下操作:
- 调用 Stop 并指定 WdfIoTargetLeaveSentIoPending的 Action 值。
- 确定目标是否应继续处理 I/O 请求。
- 如果目标应恢复,请调用 IWDFIoTargetStateManagement::Start。 否则,请再次调用 Stop ,其 操作 值为 WdfIoTargetCancelSentIo。
有关 I/O 目标的详细信息,请参阅 使用 I/O 目标。
示例
下面的代码示例演示了如果驱动程序对 USB 管道使用连续读取器, IPnpCallback::OnD0Exit 回调函数如何调用 Stop。 (若要了解如何获取 IWDFIoTargetStateManagement 接口,请参阅 IWDFIoTargetStateManagement::Start.)
HRESULT
CMyDevice::OnD0Exit(
__in IWDFDevice* pWdfDevice,
__in WDF_POWER_DEVICE_STATE previousState
)
{
HRESULT hr;
hr = m_pIoTargetInterruptPipeStateMgmt->Stop(WdfIoTargetCancelSentIo);
return hr;
}
要求
要求 | 值 |
---|---|
结束支持 | 在 UMDF 2.0 及更高版本中不可用。 |
目标平台 | 桌面 |
最低 UMDF 版本 | 1.5 |
标头 | wudfddi.h (包括 Wudfddi.h) |
DLL | WUDFx.dll |