次の方法で共有


WdfFdoInitAllocAndQueryProperty 関数 (wdffdo.h)

[KMDF と UMDF に適用]

WdfFdoInitAllocAndQueryProperty メソッドはバッファーを割り当て、指定されたデバイス プロパティを取得します。

構文

NTSTATUS WdfFdoInitAllocAndQueryProperty(
  [in]           PWDFDEVICE_INIT          DeviceInit,
  [in]           DEVICE_REGISTRY_PROPERTY DeviceProperty,
  [in]           POOL_TYPE                PoolType,
  [in, optional] PWDF_OBJECT_ATTRIBUTES   PropertyMemoryAttributes,
  [out]          WDFMEMORY                *PropertyMemory
);

パラメーター

[in] DeviceInit

ドライバーが EvtDriverDeviceAdd コールバック関数から取得したWDFDEVICE_INIT構造体へのポインター。

[in] DeviceProperty

取得 するデバイス プロパティを識別するDEVICE_REGISTRY_PROPERTY型指定の列挙子値。

[in] PoolType

割り当てる メモリの種類を指定するPOOL_TYPE型指定された列挙子値。

[in, optional] PropertyMemoryAttributes

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

[out] PropertyMemory

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

戻り値

操作が成功した場合、メソッドは STATUS_SUCCESSを返します。 その他の戻り値は次のとおりです。

リターン コード 説明
STATUS_INVALID_PARAMETERまたはSTATUS_INVALID_PARAMETER_2
指定された DeviceProperty 値が無効です。
STATUS_INVALID_DEVICE_REQUEST
WDFDEVICE_INIT構造体は、ドライバーの EvtDriverDeviceAdd コールバック関数から取得されませんでした。
 

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

注釈

ドライバーは、WdfDeviceCreate を呼び出す前に WdfFdoInitAllocAndQueryProperty を呼び出す必要があります。 WdfDeviceCreate の呼び出しの詳細については、「フレームワーク デバイス オブジェクトの作成」を参照してください。

WdfDeviceCreate を呼び出した後、ドライバーは WdfDeviceAllocAndQueryProperty を呼び出すことによってデバイス プロパティ情報を取得できます。

WdfFdoInitAllocAndQueryProperty メソッドの詳細については、「関数ドライバーでのデバイス オブジェクトの作成」を参照してください。

または、 WdfFdoInitAllocAndQueryPropertyEx を使用して、統合プロパティ モデルによって公開されるデバイス プロパティにアクセスすることもできます。

次のコード例では 、WdfFdoInitAllocAndQueryProperty を呼び出して、デバイスのセットアップ クラスの名前を含むフレームワーク メモリ オブジェクトへのハンドルを取得します。 次に、この例では WdfMemoryGetBuffer を呼び出して、セットアップ クラス名の Unicode 文字列を含むバッファーへのポインターを取得します。

NTSTATUS  status = STATUS_SUCCESS;
PVOID  pMemoryBuffer = NULL;
WDFMEMORY  memory = NULL;

status = WdfFdoInitAllocAndQueryProperty(
                                         DeviceInit,
                                         DevicePropertyClassName, 
                                         NonPagedPool,
                                         WDF_NO_OBJECT_ATTRIBUTES,
                                         &memory
                                         );
if(NT_SUCCESS(status)){
 pMemoryBuffer = WdfMemoryGetBuffer(
                                    memory,
                                    NULL
                                    );
}

要件

要件
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.0
最小 UMDF バージョン 2.0
Header wdffdo.h (Wdf.h を含む)
Library Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 DeviceInitAPI(kmdf)DriverCreate(kmdf)KmdfIrql(kmdf)KmdfIrql2(kmdf)、KmdfIrqlExplicit(kmdf)

こちらもご覧ください

WdfDeviceAllocAndQueryProperty

WdfFdoInitQueryProperty