次の方法で共有


WdfRequestRetrieveUnsafeUserInputBuffer 関数 (wdfrequest.h)

[KMDF にのみ適用]

WdfRequestRetrieveUnsafeUserInputBuffer メソッドは、データ バッファーにアクセスするための要求の手法がバッファー化も直接 I/O でもない場合、I/O 要求の入力バッファーを取得します。

構文

NTSTATUS WdfRequestRetrieveUnsafeUserInputBuffer(
  [in]            WDFREQUEST Request,
  [in]            size_t     MinimumRequiredLength,
  [out]           PVOID      *InputBuffer,
  [out, optional] size_t     *Length
);

パラメーター

[in] Request

フレームワーク要求オブジェクトへのハンドル。

[in] MinimumRequiredLength

ドライバーが I/O 要求を処理するために必要な最小バッファー サイズ (バイト単位)。

[out] InputBuffer

バッファーのアドレスを受け取る場所へのポインター。

[out, optional] Length

バッファーのサイズを受け取る場所へのポインター (バイト単位)。 このパラメーターは省略可能であり、 NULL にすることができます

戻り値

操作が成功した場合、WdfRequestRetrieveUnsafeUserInputBuffer はSTATUS_SUCCESSを返します。 それ以外の場合、このメソッドは次のいずれかの値を返す可能性があります。

リターン コード 説明
STATUS_INVALID_PARAMETER
入力パラメーターが無効です。
STATUS_INVALID_DEVICE_REQUEST
この値は、次のいずれかが発生した場合に返されます。
STATUS_BUFFER_TOO_SMALL
MinimumRequiredLength パラメーターは、バッファーの実際のサイズよりも大きいバッファー サイズを指定します。
 

このメソッドは、他の NTSTATUS 値も返す場合があります。

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

注釈

WdfRequestRetrieveUnsafeUserInputBuffer メソッドは、EvtIoInCallerContext コールバック関数から呼び出す必要があります。 WdfRequestRetrieveUnsafeUserInputBuffer を呼び出した後、ドライバーは WdfRequestProbeAndLockUserBufferForRead を呼び出す必要があります。

要求の I/O 制御コードがIRP_MJ_WRITEまたはIRP_MJ_DEVICE_CONTROL場合、ドライバーは WdfRequestRetrieveUnsafeUserInputBuffer を呼び出すことができます。

ドライバーは、要求パラメーターが表す I/O 要求が完了するまで、取得したバッファーにアクセスできます。

WdfRequestRetrieveUnsafeUserInputBuffer の詳細については、「Framework-Based ドライバーでのデータ バッファーへのアクセス」を参照してください。

WdfRequestRetrieveUnsafeUserInputBuffer を使用するコード例については、「WdfRequestProbeAndLockUserBufferForRead」を参照してください。

要件

要件
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.0
Header wdfrequest.h (Wdf.h を含む)
Library Wdf01000.sys (「Framework ライブラリのバージョン管理」を参照)。
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 BufAfterReqCompletedIntIoctl(kmdf), BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctl(kmdf), BufAfterReqCompletedIoctlA(kmdf)BufAfterReqCompletedRead(kmdf)BufAfterReqCompletedWrite(kmdf)BufAfterReqCompletedWriteA(kmdf)DriverCreate(kmdf)InputBufferAPI(kmdf)InvalidReqAccessLocal(kmdf)InvalidReqAccessLocal(kmdf)KmdfIrql(kmdf)KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

こちらもご覧ください

EvtIoInCallerContext

WdfRequestProbeAndLockUserBufferForRead

WdfRequestRetrieveUnsafeUserOutputBuffer