WdfFdoInitAllocAndQueryProperty 함수(wdffdo.h)

[KMDF 및 UMDF에 적용]

WdfFdoInitAllocAndQueryProperty 메서드는 버퍼를 할당하고 지정된 디바이스 속성을 검색합니다.

구문

NTSTATUS WdfFdoInitAllocAndQueryProperty(
  [in]           PWDFDEVICE_INIT          DeviceInit,
  [in]           DEVICE_REGISTRY_PROPERTY DeviceProperty,
  [in]           POOL_TYPE                PoolType,
  [in, optional] PWDF_OBJECT_ATTRIBUTES   PropertyMemoryAttributes,
  [out]          WDFMEMORY                *PropertyMemory
);

매개 변수

[in] DeviceInit

드라이버가 EvtDriverDeviceAdd 콜백 함수에서 가져온 WDFDEVICE_INIT 구조체에 대한 포인터입니다.

[in] DeviceProperty

검색할 디바이스 속성을 식별하는 DEVICE_REGISTRY_PROPERTY 형식의 열거자 값입니다.

[in] PoolType

할당할 메모리 유형을 지정하는 POOL_TYPE 형식의 열거자 값입니다.

[in, optional] PropertyMemoryAttributes

WdfFdoInitAllocAndQueryProperty가 할당할 메모리 개체의 개체 특성을 설명하는 호출자가 할당한 WDF_OBJECT_ATTRIBUTES 구조체에 대한 포인터입니다. 이 매개 변수는 선택 사항이며 WDF_NO_OBJECT_ATTRIBUTES 수 있습니다.

[out] PropertyMemory

프레임워크 메모리 개체에 대한 핸들을 수신하는 WDFMEMORY 형식의 위치에 대한 포인터입니다.

반환 값

작업이 성공하면 메서드는 STATUS_SUCCESS 반환합니다. 추가 반환 값은 다음과 같습니다.

반환 코드 설명
STATUS_INVALID_PARAMETER 또는 STATUS_INVALID_PARAMETER_2
지정된 DeviceProperty 값이 잘못되었습니다.
STATUS_INVALID_DEVICE_REQUEST
드라이버의 EvtDriverDeviceAdd 콜백 함수에서 WDFDEVICE_INIT 구조를 가져오지 못했습니다.
 

메서드는 다른 NTSTATUS 값을 반환할 수도 있습니다.

설명

드라이버는 WdfDeviceCreate를 호출하기 전에 WdfFdoInitAllocAndQueryProperty를 호출해야 합니다. WdfDeviceCreate 호출에 대한 자세한 내용은 프레임워크 디바이스 개체 만들기를 참조하세요.

WdfDeviceCreate를 호출한 후 드라이버는 WdfDeviceAllocAndQueryProperty를 호출하여 디바이스 속성 정보를 가져올 수 있습니다.

WdfFdoInitAllocAndQueryProperty 메서드에 대한 자세한 내용은 함수 드라이버에서 디바이스 개체 만들기를 참조하세요.

또는 WdfFdoInitAllocAndQueryPropertyEx 를 사용하여 통합 속성 모델을 통해 노출되는 디바이스 속성에 액세스할 수 있습니다.

예제

다음 코드 예제에서는 WdfFdoInitAllocAndQueryProperty 를 호출하여 디바이스의 설정 클래스 이름이 포함된 프레임워크 메모리 개체에 대한 핸들을 가져옵니다. 그런 다음 WdfMemoryGetBuffer 를 호출하여 설정 클래스 이름의 유니코드 문자열이 포함된 버퍼에 대한 포인터를 가져옵니다.

NTSTATUS  status = STATUS_SUCCESS;
PVOID  pMemoryBuffer = NULL;
WDFMEMORY  memory = NULL;

status = WdfFdoInitAllocAndQueryProperty(
                                         DeviceInit,
                                         DevicePropertyClassName, 
                                         NonPagedPool,
                                         WDF_NO_OBJECT_ATTRIBUTES,
                                         &memory
                                         );
if(NT_SUCCESS(status)){
 pMemoryBuffer = WdfMemoryGetBuffer(
                                    memory,
                                    NULL
                                    );
}

요구 사항

요구 사항
대상 플랫폼 유니버설
최소 KMDF 버전 1.0
최소 UMDF 버전 2.0
머리글 wdffdo.h(Wdf.h 포함)
라이브러리 Wdf01000.sys(KMDF); WUDFx02000.dll(UMDF)
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 DeviceInitAPI(kmdf), DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

추가 정보

WdfDeviceAllocAndQueryProperty

WdfFdoInitQueryProperty