次の方法で共有


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 メソッドの詳細については、「Function Driverでのデバイス オブジェクトの作成」を参照してください。

または、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
ヘッダー wdffdo.h (Wdf.h を含む)
図書館 Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 する DeviceInitAPI(kmdf), DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

こちらもご覧ください

WdfDeviceAllocAndQueryProperty

WdfFdoInitQueryProperty