次の方法で共有


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を返します。 その他の戻り値は次のとおりです。

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

メソッドは、他の 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)

こちらもご覧ください

WdfDeviceAllocAndQueryProperty

WdfFdoInitQueryProperty