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 要求を送信する場合、ドライバーは WdfRequestSend を呼び出す前に WdfRequestChangeTarget メソッドを呼び出す必要があります。 WdfRequestChangeTarget は、指定された I/O ターゲットに要求を送信できることを確認します。
ほとんどのドライバーは、各要求を 1 つのデバイスにのみ送信するため、1 つの I/O ターゲットにのみ送信します。 ドライバーは 、要求を受信 するか、 WdfRequestCreate を呼び出して新しい要求を作成します。
ドライバーが 1 つのデバイスに要求を送信している場合は、 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 |
Header | wdfrequest.h (Wdf.h を含む) |
Library | Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
DDI コンプライアンス規則 | DriverCreate(kmdf)、 InvalidReqAccess(kmdf)、 InvalidReqAccessLocal(kmdf)、 KmdfIrql(kmdf)、 KmdfIrql2(kmdf)、KmdfIrqlExplicit(kmdf) |