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 |