WdfFdoInitQueryPropertyEx 함수(wdffdo.h)
[KMDF 및 UMDF에 적용]
WdfFdoInitQueryPropertyEx 메서드는 지정된 디바이스 속성을 검색합니다.
구문
NTSTATUS WdfFdoInitQueryPropertyEx(
[in] PWDFDEVICE_INIT DeviceInit,
[in] PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
[in] ULONG BufferLength,
[out] PVOID PropertyBuffer,
[out] PULONG ResultLength,
[out] PDEVPROPTYPE Type
);
매개 변수
[in] DeviceInit
드라이버가 EvtDriverDeviceAdd 콜백 함수에서 가져온 WDFDEVICE_INIT 구조체에 대한 포인터입니다.
[in] DeviceProperty
검색할 디바이스 속성을 식별하는 WDF_DEVICE_PROPERTY_DATA 구조체에 대한 포인터입니다.
[in] BufferLength
PropertyBuffer가 가리키는 버퍼의 크기(바이트)입니다.
[out] PropertyBuffer
요청된 정보를 수신하는 호출자가 할당한 버퍼에 대한 호출자 제공 포인터입니다. BufferLength 매개 변수가 0이면 포인터가 NULL일 수 있습니다.
[out] ResultLength
반환 시 메서드가 PropertyBuffer에 저장한 정보의 크기(바이트)를 포함하는 호출자 제공 위치입니다. 함수의 반환 값이 STATUS_BUFFER_TOO_SMALL 경우 이 위치는 필요한 버퍼 크기를 받습니다.
[out] Type
반환 시 PropertyBuffer에 저장된 속성 데이터의 속성 형식 값을 포함하는 DEVPROPTYPE 변수에 대한 포인터입니다.
반환 값
작업이 성공하면 WdfFdoInitQueryPropertyEx 는 STATUS_SUCCESS 반환합니다. 추가 반환 값은 다음과 같습니다.
반환 코드 | 설명 |
---|---|
|
제공된 버퍼가 너무 작아서 정보를 받을 수 없습니다. |
|
지정된 DeviceProperty 값이 잘못되었습니다. |
메서드는 다른 NTSTATUS 값을 반환할 수 있습니다.
드라이버가 잘못된 개체 핸들을 제공하는 경우 버그 검사 발생합니다.
설명
디바이스 속성 데이터를 수신하기 전에 드라이버는 일반적으로 WdfFdoInitQueryPropertyEx 메서드를 호출하여 필요한 버퍼 크기를 가져옵니다. 일부 속성의 경우 필요한 크기가 반환되는 시점과 드라이버가 WdfFdoInitQueryPropertyEx를 다시 호출하는 시점 간에 데이터 크기가 변경됩니다. 따라서 드라이버는 반환 상태 STATUS_BUFFER_TOO_SMALL 않을 때까지 실행되는 루프 내에서 WdfFdoInitQueryPropertyEx를 호출해야 합니다.
필요한 버퍼 크기를 알고 변경되지 않는 경우에만 WdfFdoInitQueryPropertyEx 를 사용하는 것이 가장 좋습니다. 이 경우 드라이버는 WdfFdoInitQueryPropertyEx 를 한 번만 호출해야 하기 때문입니다. 필요한 버퍼 크기를 알 수 없거나 다른 경우 드라이버는 WdfFdoInitAllocAndQueryPropertyEx를 호출해야 합니다.
드라이버는 WdfDeviceCreate를 호출하기 전에 WdfFdoInitQueryPropertyEx를 호출할 수 있습니다. WdfDeviceCreate 호출에 대한 자세한 내용은 프레임워크 디바이스 개체 만들기를 참조하세요.
WdfDeviceCreate를 호출한 후 드라이버는 WdfDeviceQueryPropertyEx를 호출하여 디바이스 속성 정보를 가져올 수 있습니다.
관련 방법에 대한 자세한 내용은 통합 디바이스 속성 모델 액세스를 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 유니버설 |
최소 KMDF 버전 | 1.13 |
최소 UMDF 버전 | 2.0 |
머리글 | wdffdo.h(Wdf.h 포함) |
라이브러리 | Wdf01000.sys(KMDF); WUDFx02000.dll(UMDF) |
IRQL | PASSIVE_LEVEL |