Функция RegEnumValue перечисляет значения в указанном открытом ключе реестра. Функция копирует одно имя значения и блок данных по индексу при каждом вызове.
LONG RegEnumValue(
HKEY hKey, // дескриптор запрашиваемого ключа
DWORD dwIndex, // индекс запрашиваемого значения
LPTSTR lpValueName, // адрес буфера для имени значения
LPDWORD lpcbValueName, // адрес переменной с размером буфера для имени значения
LPDWORD lpReserved, // зарезервировано
LPDWORD lpType, // адрес переменной с типом данных
LPBYTE lpData, // адрес буфера для данных значения
LPDWORD lpcbData // адрес переменной с размером буфера для данных
);
Параметры:
hKey |
Идентифицирует открытый в текущий момент ключ или один из следующих предопределенных значений дескрипторов:
HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USERS HKEY_CURRENT_CONFIG |
dwIndex |
Указывает индекс затребованного значения. Его значение должно быть нулевым для первого вызова функции RegEnumValue и инкрементироваться для последующих вызовов.
Поскольку значения не упорядочены, любой новое значение будет иметь произвольный индекс. Это означает, что функция может возвращать значения в любом порядке. |
lpValueName |
Адрес буфера, в который возвращается имя значения, включая и завершающий нулевой символ. |
lpcbValueName |
Указывает размер, в символах, буфера на который адресуется параметр lpValueName. Этот размер должен учитывать и нулевой символ – признак завершения строки.
Когда функция возвращается, переменная, на которую указывает lpcbValueName, содержит количество символов, записанных в буфер. Возвращенное число не учитывает нулевой символ завершения строки. |
lpReserved |
Зарезервировано. Должно быть NULL. |
lpType |
Адрес переменной, в которую возвращается код типа значения. Этот код может быть одним из следующих значний:
Значение: |
Описание: |
REG_BINARY |
Двоичные данные в любой форме. |
REG_DWORD |
32-ух битное число. |
REG_DWORD_LITTLE_ENDIAN |
32-ух битное число в формате little-endian (такое как и REG_DWORD). В формате little-endian, наиболее важный байт слова – это байт старешего порядка. |
REG_DWORD_BIG_ENDIAN |
32-ух битное число в формате big-endian. В формате big-endian, наиболее важный байт слова – это байт младшего порядка. |
REG_EXPAND_SZ |
Нульзаканчивающаяся строка, которая содержит непредвиденные символы для переменных окружения (например, "%PATH%"). Это может быть строка в виде Unicode или ANSI, в зависимости от того, используете вы функции Unicode или функции ANSI. |
REG_LINK |
Символическая ссылка в Unicode. |
REG_MULTI_SZ |
Массив нульзаканчивающихся строк, заканчивающийся двумя нулевыми символами. |
REG_NONE |
Неопределенный тип значения. |
REG_RESOURCE_LIST |
Список ресурса драйвера устройства. |
REG_SZ |
Нульзаканчивающаяся строка. Это может быть строка в виде Unicode или ANSI, в зависимости от того, используете вы функции Unicode или функции ANSI. |
Параметр lpType может быть NULL, если тип значения не требуется.
|
lpData |
Адрес буфера, в который возвращаются данные значения. Этот параметр может быть NULL, если данные значения не требуется. |
lpcbData |
Адрес переменной, которая задает размер, в байтах, буфера, на который ссылается параметр lpData. Когда функция возвращается, переменная, на которую ссылается lpcbData, содержит количество байт, записанных в буфер. Этот параметр может быть NULL только тогда, если и lpData равно NULL. |
Возвращаемые значения:
Если функция успешна, возвращается значение ERROR_SUCCESS.
При ошибке, возвращаемое значение – это код ошибки, объявленный в WINERROR.H. Вы можете использовать функцию FormatMessage с флагом FORMAT_MESSAGE_FROM_SYSTEM для получения общего описания ошибки.
Замечания:
Для перечисления значений, приложение должно при первом вызове функции RegEnumValue установить параметр dwIndex в нулевое значение. Затем, приложение должно инкрементировать параметр dwIndex и вызывать функцию RegEnumValue до тех пор, пока не будет более значений (пока функция не вернет ERROR_NO_MORE_ITEMS).
Приложение может, также, установить индекс на последнее значение при первом вызове функции и затем декрементировать индекс до значения с индексом 0. Для получения индекса последнего значения, используйте RegQueryInfoKey.
Пока приложение использует функцию RegEnumValue, оно не должно вызывать любые другие функции реестра, которые могут изменить запрашиваемые значения.
Ключ, указанный в параметре hKey, должен быть открытым с доступом KEY_QUERY_VALUE. Для открытия ключа используйте функцию RegCreateKeyEx или RegOpenKeyEx.
Для определения максимального размера имени и буферров данных, используйте функцию RegQueryInfoKey.
Смотрите также:
RegCreateKeyEx, RegEnumKey, RegEnumKeyEx, RegOpenKeyEx, RegQueryInfoKey
|