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 方法來讓要求取消,則驅動程式必須先呼叫 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 |