WdfRequestRetrieveInputWdmMdl 関数 (wdfrequest.h)

[KMDF にのみ適用]

WdfRequestRetrieveInputWdmMdl メソッドは、I/O 要求の入力バッファーを表すメモリ記述子リスト (MDL) を取得します。

構文

NTSTATUS WdfRequestRetrieveInputWdmMdl(
  [in]  WDFREQUEST Request,
  [out] PMDL       *Mdl
);

パラメーター

[in] Request

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

[out] Mdl

MDL へのポインターを受け取る場所へのポインター。

戻り値

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

リターン コード 説明
STATUS_INVALID_PARAMETER
入力パラメーターが無効です。
STATUS_INVALID_DEVICE_REQUEST
要求の種類が無効であるか、要求で バッファー処理された I/O もダイレクト I/O も使用されていません。 データ バッファーにアクセスするためにサポートされているメソッドの詳細については、次の「解説」セクションを参照してください。
STATUS_INTERNAL_ERROR
要求は既に完了しています。
STATUS_BUFFER_TOO_SMALL
入力バッファーの長さは 0 です。
STATUS_INSUFFICIENT_RESOURCES
メモリが不足しています。
 

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

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

注釈

要求の入力バッファーには、要求の発信元によって提供されたディスクに書き込まれるデータなどの情報が含まれます。 ドライバーは WdfRequestRetrieveInputWdmMdl を呼び出して、書き込み要求またはデバイス I/O 制御要求を呼び出すことができますが、読み取り要求には呼び出しません (読み取り要求では入力データが提供されないため)。

WdfRequestRetrieveInputWdmMdl メソッドは、バッファー処理された I/O メソッドまたはデータ バッファーにアクセスするためのダイレクト I/O メソッドを使用する I/O 要求の入力バッファーの MDL を取得します。 要求の I/O 制御コードが IRP_MJ_INTERNAL_DEVICE_CONTROLされている場合、または要求が別のカーネル モード ドライバーから送信された場合、 WdfRequestRetrieveInputWdmMdl では 、バッファーされた I/O も直接 I/O も使用しない I/O 要求もサポートされます。

WdfRequestRetrieveInputWdmMdl がSTATUS_SUCCESSを返す場合、ドライバーは入力バッファーを記述する MDL へのポインターを受け取ります。

ドライバーは、 I/O 要求の完了後に要求の MDL にアクセスすることはできません。

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

次のコード例は、I/O 要求の入力バッファーの MDL を取得する EvtIoWrite コールバック関数の一部です。 WdfRequestRetrieveInputWdmMdl の呼び出しが失敗した場合、ドライバーは WdfRequestRetrieveInputWdmMdl が返すエラー状態で要求を完了します。

VOID 
MyDrvEvtIoWrite(
    IN WDFQUEUE  Queue,
    IN WDFREQUEST  Request,
    IN size_t  Length
    )
{
    NTSTATUS  status;
    PMDL  mdl = NULL;

...
    status = WdfRequestRetrieveInputWdmMdl(
                                           Request,
                                           &mdl
                                           );
    if (!NT_SUCCESS(status))
    {
        WdfRequestCompleteWithInformation(
                                          Request,
                                          status,
                                          0
                                          );
    }
...
}

要件

要件
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.0
Header wdfrequest.h (Wdf.h を含む)
Library Wdf01000.sys (「Framework ライブラリのバージョン管理」を参照)。
IRQL <=DISPATCH_LEVEL
DDI コンプライアンス規則 DriverCreate(kmdf)InputBufferAPI(kmdf)InvalidReqAccess(kmdf)InvalidReqAccessLocal(kmdf)KmdfIrql(kmdf)KmdfIrql2(kmdf)、 KmdfIrqlExplicit(kmdf)、 MdlAfterReqCompletedIntIoctl(kmdf)MdlAfterReqCompletedIntIoctlA(kmdf)MdlAfterReqCompletedIoctl(kmdf)MdlAfterReqCompletedIoctlA(kmdf)MdlAfterReqReqCompletedRead(kmdf)MdlAfterReqCompletedWrite(kmdf)MdlAfterReqCompletedWriteA(kmdf)

こちらもご覧ください

WdfRequestRetrieveOutputWdmMdl