다음을 통해 공유


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
WDFDEVICE_INIT 구조는 드라이버의 EvtDriverDeviceAdd 콜백 함수에서 가져오지 않았습니다.
 

이 메서드는 다른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