[警告: 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。
言论
如果驱动程序可以检测到可恢复的设备错误,则可能希望驱动程序调用 停止 暂时停止向本地 I/O 目标发送请求,然后调用 IWDFIoTargetStateManagement::Start 继续发送请求。
此外,如果驱动程序调用 IWDFUsbTargetPipe2::ConfigureContinuousReader 来为 USB 管道配置连续读取器,驱动程序的 IPnpCallback::OnD0Exit 回调函数必须调用 Stop 停止读取器。
如果驱动程序已调用 停止,则当 调用 IWDFIoRequest::Send时,它仍可以通过设置WDF_REQUEST_OPTION_IGNORE_TARGET_STATE标志向目标发送请求。 如果驱动程序设置了此标志,驱动程序可以在驱动程序调用 停止后向设备发送请求,例如重置 USB 管道的请求(请参阅 IWDFUsbTargetPipe::Reset)。
驱动程序必须同步调用 IWDFIoTargetStateManagement::Start 并 停止。 驱动程序调用其中一个函数后,在首次调用返回之前,它不得调用任一函数。
驱动程序可以多次调用 停止,而无需调用 IWDFIoTargetStateManagement::Start。 例如,驱动程序可能执行以下作:
- 调用 停止 并指定 作 值 WdfIoTargetLeaveSentIoPending。
- 确定目标是否应恢复处理 I/O 请求。
- 如果目标应恢复,请调用 IWDFIoTargetStateManagement::Start。 否则,请使用 WdfIoTargetCancelSentIo的 Action 值再次调用 停止。
有关 I/O 目标的详细信息,请参阅 使用 I/O 目标。
例子
下面的代码示例演示 IPnpCallback::OnD0Exit 回调函数如何调用 停止(如果驱动程序对 USB 管道使用连续读取器)。 (若要了解如何获取 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 |