次の方法で共有


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 値を返す場合もあります。

ドライバーが無効なオブジェクト ハンドルを提供すると、バグ チェックが発生します。

備考

ドライバーが 1 つの I/O 要求を複数の I/O ターゲットに送信する場合、ドライバーは WdfRequestSend 呼び出す前に、WdfRequestChangeTarget メソッドを呼び出す必要があります。 WdfRequestChangeTarget 、指定した I/O ターゲットに要求を送信できることを確認します。

ほとんどのドライバーは、各要求を 1 つのデバイスにのみ送信するため、1 つの I/O ターゲットにのみ送信します。 ドライバー 要求 を受信するか、WdfRequestCreate 呼び出して新しい要求を作成します。

ドライバーが 1 つのデバイスに要求を送信している場合は、WdfDeviceGetIoTarget を呼び出してデバイスの I/O ターゲットを特定し、WdfRequestSend を呼び出して、要求をターゲットに送信します。

ドライバーが複数のデバイスに要求を送信している場合は、デバイスの I/O ターゲット 決定する各デバイスの WdfDeviceGetIoTarget を呼び出します。 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