WdfRegistryQueryMemory 함수(wdfregistry.h)

[KMDF 및 UMDF에 적용]

WdfRegistryQueryMemory 메서드는 현재 지정된 레지스트리 값에 할당된 데이터를 검색하고, 프레임워크 할당 버퍼에 데이터를 저장하고, 버퍼를 나타내는 프레임워크 메모리 개체를 만듭니다.

구문

NTSTATUS WdfRegistryQueryMemory(
  [in]            WDFKEY                 Key,
  [in]            PCUNICODE_STRING       ValueName,
  [in]            POOL_TYPE              PoolType,
  [in, optional]  PWDF_OBJECT_ATTRIBUTES MemoryAttributes,
  [out]           WDFMEMORY              *Memory,
  [out, optional] PULONG                 ValueType
);

매개 변수

[in] Key

열린 레지스트리 키를 나타내는 레지스트리 키 개체에 대한 핸들입니다.

[in] ValueName

값 이름을 포함하는 UNICODE_STRING 구조체에 대한 포인터입니다.

[in] PoolType

데이터 버퍼에 할당할 메모리 유형을 지정하는 POOL_TYPE 형식의 값입니다.

[in, optional] MemoryAttributes

새 메모리 개체에 대한 개체 특성을 포함하는 WDF_OBJECT_ATTRIBUTES 구조체에 대한 포인터입니다. 이 매개 변수는 선택 사항이며 WDF_NO_OBJECT_ATTRIBUTES 수 있습니다.

[out] Memory

새 메모리 개체에 대한 핸들을 수신하는 위치에 대한 포인터입니다.

[out, optional] ValueType

데이터 형식을 수신하는 위치에 대한 포인터입니다. 데이터 형식 값 목록은 KEY_VALUE_BASIC_INFORMATION형식 멤버를 참조하세요. 이 포인터는 선택 사항이며 NULL일 수 있습니다.

반환 값

WdfRegistryQueryMemory 는 작업이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 메서드는 다음 값 중 하나를 반환할 수 있습니다.

반환 코드 설명
STATUS_INVALID_DEVICE_REQUEST

IRQL = PASSIVE_LEVEL WdfRegistryQueryMemory가 호출되지 않았습니다.

STATUS_INVALID_PARAMETER
잘못된 매개 변수가 지정되었습니다.
STATUS_INSUFFICIENT_RESOURCES
메모리 개체를 할당할 수 없습니다.
STATUS_ACCESS_DENIED
드라이버가 KEY_QUERY_VALUE, KEY_READ 또는 KEY_ALL_ACCESS 액세스 권한이 있는 레지스트리 키를 열지 않았습니다.
STATUS_OBJECT_NAME_NOT_FOUND
레지스트리 값을 사용할 수 없습니다.
STATUS_RESOURCE_DATA_NOT_FOUND
레지스트리 값은 지정된 키 아래에 있지만 비어 있습니다.
 

WdfRegistryQueryMemory 메서드가 반환할 수 있는 다른 반환 값 목록은 프레임워크 개체 만들기 오류를 참조하세요.

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

드라이버가 잘못된 개체 핸들을 제공하는 경우 버그 검사 발생합니다.

설명

드라이버가 WdfRegistryQueryMemory를 호출하면 프레임워크는 지정된 레지스트리 값의 데이터를 저장할 수 있을 만큼 큰 버퍼를 할당합니다. WdfRegistryQueryMemory가 반환되면 드라이버는 WdfMemoryGetBuffer를 호출하여 버퍼 및 버퍼 크기에 대한 포인터를 가져올 수 있습니다.

레지스트리 키 개체에 대한 자세한 내용은 Framework-Based 드라이버에서 레지스트리 사용을 참조하세요.

예제

다음 코드 예제에서는 MyValueName 값에 할당된 데이터를 검색한 다음, 데이터의 주소와 크기를 가져옵니다.

WDFMEMORY memory;
size_t size;
PUCHAR pBuf;
NTSTATUS status;
ULONG type;
DECLARE_CONST_UNICODE_STRING(valueName1, L"MyValueName");

status = WdfRegistryQueryMemory(
                                Key,
                                &valueName1,
                                PagedPool,
                                NULL,
                                &memory,
                                &type
                                );
pBuf = (PUCHAR)WdfMemoryGetBuffer(
                                   memory,
                                   &size
                                   );

요구 사항

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

추가 정보

KEY_VALUE_BASIC_INFORMATION

POOL_TYPE

UNICODE_STRING

WDF_OBJECT_ATTRIBUTES

WdfMemoryGetBuffer

WdfRegistryQueryMultiString

WdfRegistryQueryString

WdfRegistryQueryULong

WdfRegistryQueryUnicodeString

WdfRegistryQueryValue