WdfRequestChangeTarget 函式 (wdfrequest.h)

[適用於 KMDF 和 UMDF]

WdfRequestChangeTarget 方法會確認指定的 I/O 要求可以傳送至指定的 I/O 目標。

語法

NTSTATUS WdfRequestChangeTarget(
  [in] WDFREQUEST  Request,
  [in] WDFIOTARGET IoTarget
);

參數

[in] Request

架構要求物件的句柄。

[in] IoTarget

架構 I/O 目標物件的句柄。

傳回值

如果作業成功,WdfRequestChangeTarget 會傳回STATUS_SUCCESS。 否則,此方法可能會傳回下列其中一個值:

傳回碼 Description
STATUS_INVALID_PARAMETER
輸入參數無效。
STATUS_INSUFFICIENT_RESOURCES
系統資源不足,無法完成作業。
STATUS_REQUEST_NOT_ACCEPTED
要求的 I/O 堆疊位置陣列不夠大,可讓驅動程式將要求傳送至 I/O 目標。
 

這個方法也可能傳回其他 NTSTATUS值

如果驅動程式提供無效的物件句柄,就會發生錯誤檢查。

備註

如果驅動程式將單一 I/O 要求傳送至多個 I/O 目標,驅動程式應該先呼叫 WdfRequestChangeTarget 方法,再呼叫 WdfRequestSendWdfRequestChangeTarget 會確認要求可以傳送至指定的 I/O 目標。

大部分驅動程式只會將每個要求傳送至一部裝置,因此只會傳送至一個 I/O 目標。 驅動程式會 接收要求 ,或呼叫 WdfRequestCreate 來建立新的要求。

如果驅動程式將要求傳送至一個裝置,它會呼叫 WdfDeviceGetIoTarget 來判斷裝置的 I/O 目標,然後呼叫 WdfRequestSend 將要求傳送至目標。

如果驅動程式將要求傳送至多個裝置,它會為每個裝置呼叫 WdfDeviceGetIoTarget ,以判斷裝置的 I/O 目標。 呼叫 WdfRequestSend 之前,驅動程式必須呼叫 WdfRequestChangeTarget 以確保每個 I/O 目標皆可存取。

如需 WdfRequestChangeTarget 的詳細資訊,請參閱 轉送 I/O 要求

範例

下列程式代碼範例會驗證 I/O 要求是否可以傳送至指定的裝置本機 I/O 目標。

NTSTATUS  status;

status = WdfRequestChangeTarget(
                                request,
                                WdfDeviceGetIoTarget(Device)
                                );

規格需求

需求
目標平台 Universal
最小 KMDF 版本 1.0
最低UMDF版本 2.0
標頭 wdfrequest.h (包含 Wdf.h)
程式庫 Wdf01000.sys (KMDF) ;WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
DDI 合規性規則 DriverCreate (kmdf) InvalidReqAccess (kmdf ) , InvalidReqAccessLocal (kmdf ) , KmdfIrql (kmdf) KmdfIrql2 (kmdf) , KmdfIrqlExplicit (kmdf)

另請參閱

WdfDeviceGetIoTarget

WdfRequestCreate

WdfRequestSend