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 |
ヘッダー | wdfdevice.h (Wdf.h を含む) |
ライブラリ | Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF) |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 を する | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |
WdfDeviceAllocAndQueryProperty の
WdfFdoInitQueryProperty の