IWDFIoRequest2::GetStatus 方法 (wudfddi.h)
[警告: UMDF 2 是最新版的 UMDF,並取代 UMDF 1。 所有新的UMDF驅動程式都應該使用UMDF 2撰寫。 未將新功能新增至 UMDF 1,且較新版本的 #D7A44312B64DC4D008632F4A48CDED9FA 上,UMDF 1 的支援有限。 通用 Windows 驅動程式必須使用 UMDF 2。 如需詳細資訊,請參閱使用 UMDF 使用者入門。]
GetStatus 方法會傳回 I/O 要求的狀態。
Syntax
HRESULT GetStatus();
傳回值
GetStatus 會傳回 HRESULT 類型的狀態值,這個值表示 IWDFIoRequest2 介面所代表之 I/O 要求的目前狀態。
備註
驅動程式可以在呼叫 IWDFIoRequest::Send 之後呼叫 GetStatus,以將 I/O 要求傳送至 I/O 目標。
-
如果驅動程式呼叫 Send 成功, GetStatus 會傳回由完成指定要求的驅動程式所設定的狀態值。
如果驅動程式在呼叫 Send 時指定要求的WDF_REQUEST_SEND_OPTION_SYNCHRONOUS,驅動程式可以在呼叫 Send 之後立即呼叫 GetStatus (或 IWDFIoRequest::GetCompletionParams) 。
如果驅動程式在呼叫 Send 時未指定WDF_REQUEST_SEND_OPTION_SYNCHRONOUS,驅動程式通常會從 IRequestCallbackRequestCompletion::OnCompletion 回呼函式內呼叫 GetStatus (或 IWDFIoRequest::GetCompletionParams) 。
- 如果驅動程式呼叫 Send 失敗, Send 會傳回架構設定為描述失敗的狀態值。 驅動程式可以呼叫 GetStatus (,但無法呼叫IWDFIoRequest::GetCompletionParams) 以取得要求的目前狀態,但在此情況下 ,GetStatus 會傳回 傳送 傳回的相同失敗碼。
範例
下列程式代碼範例會將 I/O 要求傳送至 I/O 目標。 如果呼叫 Send 成功,此範例會取得 IWDFIoRequest2 介面、呼叫 GetStatus 以取得要求的狀態值,然後呼叫 IWDFIoRequest::CompleteWithInformation 來完成 I/O 要求。
HRESULT hrSend = S_OK;
...
hrSend = fxRequest->Send(m_pIoTarget,
WDF_REQUEST_SEND_OPTION_SYNCHRONOUS,
0);
if (SUCCEEDED(hrSend))
{
//
// If send succeeded, complete the request and specify
// the current status value.
//
CComQIPtr<IWDFIoRequest2> fxRequest2 = fxRequest;
hrSend = fxRequest2->GetStatus();
fxRequest->CompleteWithInformation(hrSend, 0);
}
...
規格需求
需求 | 值 |
---|---|
終止支援 | 在 UMDF 2.0 和更新版本中無法使用。 |
目標平台 | 桌面 |
最低UMDF版本 | 1.9 |
標頭 | wudfddi.h (包含 Wudfddi.h) |
Dll | WUDFx.dll |
另請參閱
IRequestCallbackRequestCompletion::OnCompletion
IWDFIoRequest::CompleteWithInformation