RegEnumValueA 함수(winreg.h)
지정된 열린 레지스트리 키의 값을 열거합니다. 함수는 호출될 때마다 키에 대해 인덱싱된 값 이름 및 데이터 블록을 하나씩 복사합니다.
통사론
LSTATUS RegEnumValueA(
[in] HKEY hKey,
[in] DWORD dwIndex,
[out] LPSTR lpValueName,
[in, out] LPDWORD lpcchValueName,
LPDWORD lpReserved,
[out, optional] LPDWORD lpType,
[out, optional] LPBYTE lpData,
[in, out, optional] LPDWORD lpcbData
);
매개 변수
[in] hKey
열린 레지스트리 키에 대한 핸들입니다. 키는 KEY_QUERY_VALUE 액세스 권한으로 열렸어야 합니다. 자세한 내용은 레지스트리 키 보안 및 액세스 권한참조하세요.
이 핸들은 RegCreateKeyEx, regCreateKeyTransacted, RegOpenKeyEx또는 RegOpenKeyTransacted 함수에 의해 반환됩니다. 또한 다음 미리 정의된 키중 하나일 수도 있습니다.
- HKEY_CLASSES_ROOT
- HKEY_CURRENT_CONFIG
- HKEY_CURRENT_USER
- HKEY_LOCAL_MACHINE
- HKEY_PERFORMANCE_DATA
- HKEY_USERS
[in] dwIndex
검색할 값의 인덱스입니다. 이 매개 변수는 RegEnumValue 함수에 대한 첫 번째 호출에 대해 0이어야 하며 이후 호출에 대해 증가해야 합니다.
값은 정렬되지 않으므로 새 값에는 임의의 인덱스가 있습니다. 즉, 함수는 임의의 순서로 값을 반환할 수 있습니다.
[out] lpValueName
null-terminated 문자열로 값의 이름을 수신하는 버퍼에 대한 포인터입니다.
이 버퍼는 종료 null 문자를 포함할 만큼 커야 합니다.
자세한 내용은 Registry 요소 크기 제한참조하세요.
[in, out] lpcchValueName
lpValueName 매개 변수가 가리키는 버퍼의 크기를 문자 단위로 지정하는 변수에 대한 포인터입니다. 함수가 반환되면 변수는 종료 null 문자를 포함하지 않고 버퍼에 저장된 문자 수를 받습니다.
lpValueName 지정한 버퍼가 데이터를 저장할 만큼 크지 않으면 함수는 ERROR_MORE_DATA 반환하고 lpValueName 가리키는 변수의 버퍼 크기는 변경되지 않습니다. 이 경우 lpcchValueName 내용은 정의되지 않습니다.
레지스트리 값 이름은 32,767바이트로 제한됩니다. 이 함수의 ANSI 버전은 이 매개 변수를 SHORT 값으로 처리합니다. 따라서 32,767바이트보다 큰 값을 지정하면 오버플로가 있고 함수가 ERROR_MORE_DATA 반환할 수 있습니다.
lpReserved
이 매개 변수는 예약되어 있으며 NULL
[out, optional] lpType
지정된 값에 저장된 데이터의 형식을 나타내는 코드를 받는 변수에 대한 포인터입니다. 가능한 형식 코드 목록은 레지스트리 값 형식참조하세요. 형식 코드가 필요하지 않은 경우
[out, optional] lpData
값 항목에 대한 데이터를 수신하는 버퍼에 대한 포인터입니다. 데이터가 필요하지 않은 경우 이 매개 변수는 NULL
[in, out, optional] lpcbData
lpData 매개 변수가 가리키는 버퍼의 크기를 바이트 단위로 지정하는 변수에 대한 포인터입니다. 함수가 반환되면 변수는 버퍼에 저장된 바이트 수를 받습니다.
이 매개 변수는
데이터에 REG_SZ, REG_MULTI_SZ 또는 REG_EXPAND_SZ 형식이 있는 경우 이 크기에는 종료 null 문자 또는 문자가 포함됩니다. 자세한 내용은 비고를 참조하세요.
lpData 지정된 버퍼가 데이터를 저장할 만큼 충분히 크지 않으면 함수는 ERROR_MORE_DATA 반환하고 필요한 버퍼 크기를 lpcbData가리키는 변수에 저장합니다. 이 경우 lpData 내용은 정의되지 않습니다.
반환 값
함수가 성공하면 반환 값이 ERROR_SUCCESS.
함수가 실패하면 반환 값은
lpValueName 또는 lpData 지정한 버퍼가 너무 작아서 값을 받지 못하면 함수는 ERROR_MORE_DATA 반환합니다.
발언
값을 열거하려면 애플리케이션이 처음에 dwIndex 매개 변수를 0으로 설정한 RegEnumValue 함수를 호출해야 합니다. 그런 다음, 애플리케이션은 dwIndex
또한 애플리케이션은 dwIndex 함수에 대한 첫 번째 호출에서 마지막 값의 인덱스로 설정하고 인덱스 0이 있는 값이 열거될 때까지 인덱스를 감소할 수 있습니다. 마지막 값의 인덱스 검색하려면 RegQueryInfoKey 함수를 사용합니다.
RegEnumValue사용하는 동안 애플리케이션은 쿼리할 키를 변경할 수 있는 레지스트리 함수를 호출해서는 안 됩니다.
데이터에 REG_SZ, REG_MULTI_SZ 또는 REG_EXPAND_SZ 형식이 있는 경우 문자열이 올바른 null종료 문자와 함께 저장되지 않았을 수 있습니다. 따라서 함수가 ERROR_SUCCESS 반환하더라도 애플리케이션은 문자열을 사용하기 전에 문자열이 제대로 종료되었는지 확인해야 합니다. 그렇지 않으면 버퍼를 덮어쓸 수 있습니다. (REG_MULTI_SZ 문자열에는 두 개의 null종료 문자가 있어야 합니다.
이름 및 데이터 버퍼의 최대 크기를 확인하려면 RegQueryInfoKey 함수를 사용합니다.
메모
레거시 버전의 Windows에서 이 API는 kernel32.dll의해 노출됩니다.
예제
예를 들어 레지스트리 하위 키열거하는
메모
winreg.h 헤더는 REgEnumValue를 UNICODE 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입대한
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows 2000 Server [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | winreg.h(Windows.h 포함) |
라이브러리 | Advapi32.lib |
DLL | Advapi32.dll |