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::StartStop 。 驱动程序调用其中一个函数后,在第一次调用返回之前,它不得调用任一函数。

驱动程序可以在不调用 IWDFIoTargetStateManagement::Start 的情况下多次调用 Stop。 例如,驱动程序可能会执行以下操作:

  1. 调用 Stop 并指定 WdfIoTargetLeaveSentIoPending的 Action 值。
  2. 确定目标是否应继续处理 I/O 请求。
  3. 如果目标应恢复,请调用 IWDFIoTargetStateManagement::Start。 否则,请再次调用 Stop ,其 操作 值为 WdfIoTargetCancelSentIo
有关 停止的详细信息,请参阅 控制常规 I/O 目标的状态

有关 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

另请参阅

IWDFIoTargetStateManagement

IWDFRemoteTarget::Stop