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 반환합니다. 추가 반환 값은 다음과 같습니다.
반환 코드 | 설명 |
---|---|
|
지정된 DeviceProperty 값이 잘못되었습니다. |
|
드라이버의 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) |