IWDFIoRequest::ForwardToIoQueue 方法 (wudfddi.h)
[警告: UMDF 2 是最新版的 UMDF,並取代 UMDF 1。 所有新的UMDF驅動程式都應該使用UMDF 2撰寫。 未將新功能新增至 UMDF 1,且較新版本的 #D78CE9DA12BE44427A561E0AA6F513EB3 上,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 方法來取消要求,驅動程式必須先呼叫 IWDFIoRequest::UnmarkCancelable 方法,再呼叫 ForwardToIoQueue。
範例
下列程式代碼範例示範如果要求的緩衝區不足以保存所需的資訊,如何將要求轉送至另一個佇列。
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 |