次の方法で共有


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 要求を送信する場合、ドライバーは 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)

こちらもご覧ください

WdfDeviceGetIoTarget

WdfRequestCreate

WdfRequestSend