다음을 통해 공유


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 한 번만 호출해야. 필요한 버퍼 크기를 알 수 없거나 다른 경우 드라이버는 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