WdfRegistryQueryValue 함수(wdfregistry.h)
[KMDF 및 UMDF에 적용]
WdfRegistryQueryValue 메서드는 현재 지정된 레지스트리 값에 할당된 데이터를 검색합니다.
구문
NTSTATUS WdfRegistryQueryValue(
[in] WDFKEY Key,
[in] PCUNICODE_STRING ValueName,
[in] ULONG ValueLength,
[out, optional] PVOID Value,
[out, optional] PULONG ValueLengthQueried,
[out, optional] PULONG ValueType
);
매개 변수
[in] Key
열린 레지스트리 키를 나타내는 레지스트리 키 개체에 대한 핸들입니다.
[in] ValueName
값 이름을 포함하는 UNICODE_STRING 구조체에 대한 포인터입니다.
[in] ValueLength
값이 가리키는 버퍼의 길이(바이트)입니다.
[out, optional] Value
레지스트리 값의 데이터를 수신하는 드라이버 할당 버퍼에 대한 포인터입니다. 이 포인터가 NULL이면 WdfRegistryQueryValue 는 데이터 길이를 검색하지만 데이터는 검색하지 않습니다.
[out, optional] ValueLengthQueried
레지스트리 값의 데이터 길이를 받는 위치에 대한 포인터입니다. 이 포인터는 선택 사항이며 NULL일 수 있습니다.
[out, optional] ValueType
레지스트리 값의 데이터 형식을 받는 위치에 대한 포인터입니다. 데이터 형식 값 목록은 KEY_VALUE_BASIC_INFORMATIONType 멤버를 참조하세요. 이 포인터는 선택 사항이며 NULL일 수 있습니다.
반환 값
WdfRegistryQueryValue 는 작업이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 메서드는 다음 값 중 하나를 반환할 수 있습니다.
반환 코드 | 설명 |
---|---|
|
WdfRegistryQueryValue 는 IRQL = PASSIVE_LEVEL 호출되지 않았습니다. |
|
잘못된 매개 변수가 지정되었습니다. |
|
드라이버가 KEY_QUERY_VALUE, KEY_READ 또는 KEY_ALL_ACCESS 액세스 권한이 있는 레지스트리 키를 열지 않았습니다. |
|
Value 매개 변수가 가리키는 버퍼가 너무 작고 부분 데이터만 버퍼에 기록되었습니다. |
|
값 버퍼가 너무 작고 버퍼에 데이터가 기록되지 않았습니다. |
|
레지스트리 값을 사용할 수 없습니다. |
이 메서드는 다른 NTSTATUS 값을 반환할 수도 있습니다.
드라이버가 잘못된 개체 핸들을 제공하는 경우 버그 검사 발생합니다.
설명
레지스트리 키 개체에 대한 자세한 내용은 Framework-Based 드라이버에서 레지스트리 사용을 참조하세요.
예제
다음 코드 예제에서는 디바이스의 하드웨어 키를 열고 디바이스의 하드웨어 키 아래에 저장된 NumberOfToasters 값에 할당된 데이터를 검색합니다.
WCHAR comPort[FM_COM_PORT_STRING_LENGTH];
ULONG length;
NTSTATUS status;
ULONG length, valueType, value;
DECLARE_CONST_UNICODE_STRING(valueName, L"NumberOfToasters");
WDFKEY hKey;
status = WdfDeviceOpenRegistryKey(
Device,
PLUGPLAY_REGKEY_DEVICE,
KEY_QUERY_VALUE,
NULL,
&hKey
);
if (!NT_SUCCESS (status)) {
goto Error;
}
status = WdfRegistryQueryValue(
hKey,
&valueName,
sizeof(ULONG),
&value,
&length,
&valueType
);
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 유니버설 |
최소 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) |