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を返します。 その他の戻り値は次のとおりです。
リターン コード | 説明 |
---|---|
|
指定された DeviceProperty 値が無効です。 |
|
デバイスのドライバーは、デバイスのプロパティをまだ報告していません。 |
メソッドは、他の 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) |