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。

言论

如果驱动程序可以检测到可恢复的设备错误,则可能希望驱动程序调用 停止 暂时停止向本地 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。 例如,驱动程序可能执行以下作:

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

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

另请参阅

IWDFIoTargetStateManagement

IWDFRemoteTarget::Stop