共用方式為


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。 否則,此方法可能會傳回下列其中一個值:

傳回碼 描述
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)
                                );

要求

要求 價值
目標平臺 普遍
最低 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