WdfDeviceQueryProperty 関数 (wdfdevice.h)
[KMDF と UMDF に適用]
WdfDeviceQueryProperty メソッドは、指定されたデバイス プロパティを取得します。
構文
NTSTATUS WdfDeviceQueryProperty(
[in] WDFDEVICE Device,
[in] DEVICE_REGISTRY_PROPERTY DeviceProperty,
[in] ULONG BufferLength,
[out] PVOID PropertyBuffer,
[out] PULONG ResultLength
);
パラメーター
[in] Device
フレームワーク デバイス オブジェクトへのハンドル。
[in] DeviceProperty
取得 するデバイス プロパティを識別するDEVICE_REGISTRY_PROPERTY型の列挙子。
[in] BufferLength
PropertyBuffer が指すバッファーのサイズ (バイト単位)。
[out] PropertyBuffer
要求された情報を受信する呼び出し元によって割り当てられたバッファーへの呼び出し元から提供されるポインター。 BufferLength パラメーターが 0 の場合、ポインターは NULL にすることができます。
[out] ResultLength
呼び出し元が指定した場所。戻り値に、メソッドが PropertyBuffer に格納した情報のサイズをバイト単位で格納します。 関数の戻り値がSTATUS_BUFFER_TOO_SMALL場合、この場所は必要なバッファー サイズを受け取ります。
戻り値
操作が成功した場合、 WdfDeviceQueryProperty はSTATUS_SUCCESSを返します。 その他の戻り値は次のとおりです。
リターン コード | 説明 |
---|---|
|
指定されたバッファーが小さすぎて情報を受信できません。 |
|
指定された DeviceProperty 値が無効です |
|
デバイスのドライバーは、デバイスのプロパティをまだ報告していません。 |
メソッドは、他の NTSTATUS 値を返す場合があります。
ドライバーが無効なオブジェクト ハンドルを提供すると、バグ チェックが発生します。
注釈
デバイス プロパティ データを受信する前に、ドライバーは通常、必要なバッファー サイズを取得するために WdfDeviceQueryProperty メソッドを呼び出します。 一部のプロパティでは、必要なサイズが返されたときとドライバーが WdfDeviceQueryProperty を再度呼び出すときの間で、データ サイズが変更される可能性があります。 したがって、ドライバーは、戻り状態がSTATUS_BUFFER_TOO_SMALLされないまで実行されるループ内で WdfDeviceQueryProperty を呼び出す必要があります。
WdfDeviceQueryProperty は、必要なバッファー サイズが既知で変更されていない場合にのみ使用することをお勧めします。その場合、ドライバーは WdfDeviceQueryProperty を 1 回だけ呼び出す必要があるためです。 必要なバッファー サイズが不明な場合、または異なる場合、ドライバーは WdfDeviceAllocAndQueryProperty を呼び出す必要があります。
または、 WdfDeviceQueryPropertyEx を使用して、統合プロパティ モデルによって公開されるデバイス プロパティにアクセスすることもできます。
例
次のコード例では、デバイスの DevicePropertyBusTypeGuid プロパティを 取得します。 この例では、GUID の長さがわかっているため、WdfDeviceAllocAndQueryProperty ではなく WdfDeviceQueryProperty を呼び出します。
GUID busTypeGuid;
ULONG resultLength = 0;
NTSTATUS status;
status = WdfDeviceQueryProperty(
device,
DevicePropertyBusTypeGuid,
sizeof(GUID),
(PVOID)&busTypeGuid,
&resultLength
);
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
最小 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) |