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を返します。 それ以外の場合、このメソッドは次のいずれかの値を返す可能性があります。
リターン コード | 説明 |
---|---|
|
入力パラメーターが無効です。 |
|
この値は、次のいずれかが発生した場合に返されます。
|
|
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) |