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。 否則,此方法可能會傳回下列其中一個值:
傳回碼 | 描述 |
---|---|
|
輸入參數無效。 |
|
系統資源不足,無法完成作業。 |
|
要求的 I/O 堆疊位置陣列不夠大,可讓驅動程式將要求傳送至 I/O 目標。 |
此方法也可能 傳回其他NTSTATUS 值。
如果驅動程式提供無效的物件句柄,就會發生錯誤檢查。
言論
如果驅動程式將單一 I/O 要求傳送至多個 I/O 目標,驅動程式應該先呼叫 WdfRequestChangeTarget 方法,再呼叫 WdfRequestSend。 WdfRequestChangeTarget 確認要求是否可以傳送至指定的 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) |