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 |