次の方法で共有


WdfRequestCreate 関数 (wdfrequest.h)

[KMDF と UMDF に適用]

WdfRequestCreate メソッドは、空のフレームワーク要求オブジェクトを作成します。

構文

NTSTATUS WdfRequestCreate(
  [in, optional] PWDF_OBJECT_ATTRIBUTES RequestAttributes,
  [in, optional] WDFIOTARGET            IoTarget,
  [out]          WDFREQUEST             *Request
);

パラメーター

[in, optional] RequestAttributes

要求オブジェクトのオブジェクト属性を指定する呼び出し元によって割り当てられた WDF_OBJECT_ATTRIBUTES 構造体へのポインター。 このパラメーターは省略可能であり、WDF_NO_OBJECT_ATTRIBUTESできます。

[in, optional] IoTarget

フレームワーク I/O ターゲット オブジェクトへのハンドル。 このパラメーターは省略可能であり、NULL できます。 以外の NULLの場合、WdfRequestCreate は、ドライバーが最終的に指定された I/O ターゲットに要求を送信できることを確認します。

[out] Request

フレームワーク要求オブジェクトへのハンドルを受け取る場所へのポインター。

戻り値

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

リターン コード 形容
STATUS_INVALID_PARAMETER
入力パラメーターが無効です。
STATUS_INSUFFICIENT_RESOURCES
操作を完了するのに十分なシステム リソースがありません。
STATUS_REQUEST_NOT_ACCEPTED
要求の I/O スタックの場所の配列は、ドライバーが指定された I/O ターゲットに要求を送信するのに十分な大きさではありません。
 

その他の戻り値の一覧については、「Framework オブジェクト作成エラーの」を参照してください。

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

備考

フレームワーク ベースのドライバーは、WdfRequestCreate を呼び出して、その後、ドライバーが初期化のために他のフレームワーク関数に渡す新しい要求を作成できます。 たとえば、USB デバイスのドライバーは、新しい読み取り要求 フォーマットするために WdfUsbTargetPipeFormatRequestForRead を呼び出す場合があります。

WDM ドライバーと通信するフレームワーク ベースのドライバーは、WdfRequestCreateFromIrpを呼び出すことによって、要求の内容を指定できます。

ドライバーが WdfRequestCreate 呼び出して要求オブジェクトを作成する場合、要求オブジェクト WdfRequestComplete を呼び出してはなりません。 代わりに、ドライバーは要求オブジェクト 使用が完了したときに WdfObjectDelete を呼び出す必要があります。 詳細については、「I/O 要求の完了」を参照してください。

既定では、新しい要求オブジェクトの親は、WdfDriverCreate メソッドが作成したフレームワーク ドライバー オブジェクトです。 WDF_OBJECT_ATTRIBUTES 構造体の ParentObject メンバーを使用して、別の親を指定できます。 フレームワークは、親オブジェクトを削除すると、要求オブジェクトを削除します。 ドライバーが既定の親を変更しない場合、ドライバーは、オブジェクトの使用が完了したときに要求オブジェクトを削除する必要があります。それ以外の場合、要求オブジェクトは、I/O マネージャーがドライバーをアンロードするまで残ります。

WdfRequestCreate 呼び出しの詳細については、「フレームワーク要求オブジェクトの作成」を参照してください。

次のコード例では、I/O ターゲット オブジェクトを作成し、WDF_OBJECT_ATTRIBUTES 構造体を初期化し、WdfRequestCreate 呼び出します。 新しい要求オブジェクトの親は、I/O ターゲット オブジェクトです。

WDF_OBJECT_ATTRIBUTES  attributes;
WDFREQUEST newRequest;
WDFIOTARGET ioTarget;
...
status = WdfIoTargetCreate(
                           Device,
                           WDF_NO_OBJECT_ATTRIBUTES,
                           &ioTarget
                           );
  ...
WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
attributes.ParentObject = ioTarget;

status = WdfRequestCreate(
                          &attributes,
                          ioTarget,
                          &newRequest
                          );

if (!NT_SUCCESS(status)) {
    return status;
}

必要条件

要件 価値
ターゲット プラットフォーム 万国
最小 KMDF バージョン 1.0
UMDF の最小バージョン する 2.0
ヘッダー wdfrequest.h (Wdf.h を含む)
ライブラリ Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
DDI コンプライアンス規則 する DriverCreate(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) ReqDelete(kmdf), RequestForUrbXrb(kmdf), RequestSendAndForgetNoFormatting2(kmdf)

関連項目

WDF_OBJECT_ATTRIBUTES

WDF_OBJECT_ATTRIBUTES_INIT

WdfDeviceInitSetRequestAttributes

WdfDriverCreate

WdfRequestCreateFromIrp

WdfRequestReuse