WdfDeviceQueryPropertyEx function (wdfdevice.h)

[Applies to KMDF and UMDF]

The WdfDeviceQueryPropertyEx method retrieves a specified device property.

Syntax

NTSTATUS WdfDeviceQueryPropertyEx(
  [in]  WDFDEVICE                 Device,
  [in]  PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
  [in]  ULONG                     BufferLength,
  [out] PVOID                     PropertyBuffer,
  [out] PULONG                    RequiredSize,
  [out] PDEVPROPTYPE              Type
);

Parameters

[in] Device

A handle to a framework device object.

[in] DeviceProperty

A pointer to a WDF_DEVICE_PROPERTY_DATA structure that identifies the device property to be retrieved.

[in] BufferLength

The size, in bytes, of the buffer that is pointed to by PropertyBuffer.

[out] PropertyBuffer

A caller-supplied pointer to a caller-allocated buffer that receives the requested information. The pointer can be NULL if the BufferLength parameter is zero.

[out] RequiredSize

A caller-supplied location that, on return, contains the size, in bytes, of the information that the method stored in PropertyBuffer. If the function's return value is STATUS_BUFFER_TOO_SMALL, this location receives the required buffer size.

[out] Type

A pointer to a DEVPROPTYPE variable. If the method is successful, upon return this parameter contains the property type value of the property data stored in PropertyBuffer.

Return value

If the operation succeeds, WdfDeviceQueryPropertyEx returns STATUS_SUCCESS. Additional return values include:

Return code Description
STATUS_BUFFER_TOO_SMALL
The supplied buffer is too small to receive the information.
STATUS_INVALID_PARAMETER
The specified DeviceProperty value is invalid.
 

The method might return other NTSTATUS values.

A bug check occurs if the driver supplies an invalid object handle.

Remarks

You can use WdfDeviceQueryPropertyEx to retrieve any property that is exposed through the unified property model, whereas the WdfDeviceQueryProperty method only allows querying a subset of the unified property model.

Before receiving device property data, drivers typically call the WdfDeviceQueryPropertyEx method just to obtain the required buffer size. For some properties, the data size can change between when the required size is returned and when the driver calls WdfDeviceQueryPropertyEx again. Therefore, drivers should call WdfDeviceQueryPropertyEx inside a loop that executes until the return status is not STATUS_BUFFER_TOO_SMALL.

It is best to use WdfDeviceQueryPropertyEx only if the required buffer size is known and unchanging, because in that case the driver has to call WdfDeviceQueryPropertyEx only once. If the required buffer size is unknown or varies, the driver should call WdfDeviceAllocAndQueryPropertyEx.

For information about related methods, see Accessing the Unified Device Property Model.

Requirements

Requirement Value
Target Platform Universal
Minimum KMDF version 1.13
Minimum UMDF version 2.0
Header wdfdevice.h (include Wdf.h)
Library Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL APC_LEVEL

See also

WdfDeviceQueryInterfaceProperty

WdfDeviceQueryProperty