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

另請參閱

IWDFIoQueue

IWDFIoQueue::RetrieveNextRequest

IWDFIoRequest

IWDFIoRequest::MarkCancelable

IWDFIoRequest::UnmarkCancelable