IWDFIoRequest::ForwardToIoQueue 方法(wudfddi.h)

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

ForwardToIoQueue 方法转发(即重新排队)向调用驱动程序的 I/O 队列之一发出 I/O 请求。

语法

HRESULT ForwardToIoQueue(
  [in] IWDFIoQueue *pDestination
);

参数

[in] pDestination

指向目标队列对象的 IWDFIoQueue 接口的指针。

返回值

如果作成功,ForwardToIoQueue 将返回S_OK。 否则,此方法返回在 Winerror.h 中定义的错误代码之一。

言论

驱动程序必须拥有 I/O 请求,并且必须已从其中一个 I/O 队列获取请求。

源队列和目标队列不能相同。 换句话说,驱动程序无法调用 ForwardToIoQueue 将请求返回到来自队列的队列。 若要将 I/O 请求返回到它来自的 I/O 队列,驱动程序可以调用 IWDFIoRequest2::Requeue

源队列和目标队列必须属于同一设备。

此外,ForwardToIoQueue 方法无法重新排队通过调用 IWDFIoQueue::RetrieveNextRequest 方法获取的请求。

无法取消请求。 如果驱动程序之前调用了 IWDFIoRequest::MarkCancelable 方法以使请求可取消,驱动程序必须在调用 ForwardToIoQueue之前调用 IWDFIoRequest::UnmarkCancelable 方法。

例子

下面的代码示例演示如何将请求转发到另一个队列(如果请求的缓冲区不足以保存所需的信息)。

HRESULT hr;
 if (OutputBufferSizeInBytes < sizeof(SWITCH_STATE)) {
    hr = HRESULT_FROM_NT(ERROR_INSUFFICIENT_BUFFER);
 }
 else {
     hr = FxRequest->ForwardToIoQueue(
                          m_Device->GetSwitchChangeQueue()
                          );
     if (SUCCEEDED(hr)) {
         completeRequest = false;
     }
  }

要求

要求 价值
终止支持 在 UMDF 2.0 及更高版本中不可用。
目标平台 桌面
最低 UMDF 版本 1.5
标头 wudfddi.h (包括 Wudfddi.h)
DLL WUDFx.dll

另请参阅

IWDFIoQueue

IWDFIoQueue::RetrieveNextRequest

IWDFIoRequest

IWDFIoRequest::MarkCancelable

IWDFIoRequest::UnmarkCancelable