IQueueCallbackIoStop::OnIoStop 方法 (wudfddi.h)

[警告: UMDF 2 是最新版本的 UMDF,并取代 UMDF 1。 所有新的 UMDF 驱动程序都应使用 UMDF 2 编写。 不会向 UMDF 1 添加任何新功能,并且较新版本的 Windows 10 上对 UMDF 1 的支持有限。 通用 Windows 驱动程序必须使用 UMDF 2。 有关详细信息,请参阅使用 UMDF 入门。]

OnIoStop 回调函数停止处理来自指定队列的指定 I/O 请求。

语法

void OnIoStop(
  [in] IWDFIoQueue   *pWdfQueue,
  [in] IWDFIoRequest *pWdfRequest,
  [in] ULONG         ActionFlags
);

参数

[in] pWdfQueue

指向 I/O 队列对象的 IWDFIoQueue 接口的指针,该对象停止处理 I/O 请求。

[in] pWdfRequest

指向 IWDFIoRequest 接口的指针,该接口表示其处理已停止的框架请求对象。

[in] ActionFlags

WDF_REQUEST_STOP_ACTION_FLAGS类型值的有效按位 OR,用于标识停止操作请求的状态。

返回值

备注

驱动程序在调用 IWDFDevice::CreateIoQueue 方法以创建 I/O 队列或配置默认 I/O 队列时注册 IQueueCallbackIoStop 接口。

如果驱动程序为 I/O 队列注册 OnIoStop 回调函数,则当队列的基础设备离开其工作 (D0) 状态时,框架会调用它。 框架为驱动程序尚未完成的每个 I/O 请求(包括驱动程序拥有的请求以及它已转发到 I/O 目标的请求)调用 OnIoStop 回调函数。

OnIoStop 回调函数必须完成、取消或推迟对 I/O 请求的进一步处理。 必须使用以下规则:

如果驱动程序拥有 I/O 请求,则必须调用 IWDFIoRequest::Complete 才能完成或取消请求,或者必须推迟对请求的进一步处理,然后调用 IWDFIoRequest2::StopAcknowledge

如果驱动程序已将 I/O 请求转发到 I/O 目标,则必须调用 IWDFIoRequest::CancelSentRequest 以尝试取消请求,或者必须推迟对请求的进一步处理,然后调用 StopAcknowledge

如果在 ActionFlags 参数中设置了 WdfRequestStopRequestCancelable 标志,驱动程序必须在调用 IWDFIoRequest::Complete 之前调用 IWDFIoRequest::UnmarkCancelable 以完成 (或取消) 请求或调用 IWDFIoRequest2::StopAcknowledge 以重新排队请求。

要求

要求
目标平台 Windows
标头 wudfddi.h (包括 Wudfddi.h)

另请参阅

IQueueCallbackIoStop

IWDFDevice::CreateIoQueue

IWDFIoQueue

IWDFIoRequest

IWDFIoRequest2::StopAcknowledge

WDF_REQUEST_STOP_ACTION_FLAGS