WdfDeviceAllocAndQueryProperty 関数 (wdfdevice.h)

[KMDF と UMDF に適用]

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

構文

NTSTATUS WdfDeviceAllocAndQueryProperty(
  [in]           WDFDEVICE                Device,
  [in]           DEVICE_REGISTRY_PROPERTY DeviceProperty,
  [in]           POOL_TYPE                PoolType,
  [in, optional] PWDF_OBJECT_ATTRIBUTES   PropertyMemoryAttributes,
  [out]          WDFMEMORY                *PropertyMemory
);

パラメーター

[in] Device

フレームワーク デバイス オブジェクトへのハンドル。

[in] DeviceProperty

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

[in] PoolType

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

[in, optional] PropertyMemoryAttributes

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

[out] PropertyMemory

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

戻り値

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

リターン コード 説明
STATUS_INVALID_PARAMETERまたはSTATUS_INVALID_PARAMETER_2
指定された DeviceProperty 値が無効です。
STATUS_INVALID_DEVICE_REQUEST
デバイスのドライバーは、デバイスのプロパティをまだ報告していません。
 

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

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

注釈

WdfDeviceAllocAndQueryProperty メソッドは、要求されたデバイス プロパティを保持するために必要なメモリの量を決定します。 データを保持するのに十分なメモリを割り当て、割り当てられたメモリを記述するフレームワーク メモリ オブジェクトにハンドルを返します。 データにアクセスするために、ドライバーは WdfMemoryGetBuffer を呼び出すことができます。

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

次のコード例では、フレームワークが要求されたプロパティに対して作成するフレームワーク メモリ オブジェクトの属性を使用して、 WDF_OBJECT_ATTRIBUTES 構造体を初期化します。 次に、この例では WdfDeviceAllocAndQueryProperty を呼び出して 、DevicePropertyPhysicalDeviceObjectName プロパティを取得します。 WdfDeviceAllocAndQueryProperty が返された後、ドライバーは WdfMemoryGetBuffer を呼び出して、名前文字列を含むバッファーへのポインターを取得できます。

WDF_OBJECT_ATTRIBUTES  attributes;
NTSTATUS  status;
WDFDEVICE  device;
WDFMEMORY  memory;

WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
attributes.ParentObject = device;

status = WdfDeviceAllocAndQueryProperty(device,
                                        DevicePropertyPhysicalDeviceObjectName,
                                        NonPagedPool,
                                        &attributes,
                                        &memory
                                        );
if (!NT_SUCCESS(status)) {
    return STATUS_UNSUCCESSFUL;
}

要件

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

こちらもご覧ください

WdfDeviceQueryProperty