Функция RegQueryMultipleValuesA (winreg.h)
Извлекает тип и данные для списка имен значений, связанных с открытым разделом реестра.
Синтаксис
LSTATUS RegQueryMultipleValuesA(
[in] HKEY hKey,
[out] PVALENTA val_list,
[in] DWORD num_vals,
[out, optional] LPSTR lpValueBuf,
[in, out, optional] LPDWORD ldwTotsize
);
Параметры
[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
[out] val_list
Указатель на массив
Структуры VALENT, описывающие одну или несколько записей значений. На входных данных элемент ve_valuename каждой структуры должен содержать указатель на имя извлекаемого значения. Функция завершается ошибкой, если какое-либо из указанных значений не существует в указанном ключе.
Если функция выполняется успешно, каждый элемент массива содержит сведения для указанного значения.
[in] num_vals
Количество элементов в массиве val_list .
[out, optional] lpValueBuf
Указатель на буфер. Если функция выполняется успешно, буфер получает данные для каждого значения.
Если lpValueBuf имеет значение NULL, значение, на которое указывает параметр ldwTotsize , должно быть равно нулю. В этом случае функция возвращает ERROR_MORE_DATA и ldwTotsize получает требуемый размер буфера в байтах.
[in, out, optional] ldwTotsize
Указатель на переменную, указывающую размер буфера, на который указывает параметр lpValueBuf , в байтах. Если функция выполнена успешно, ldwTotsize получает количество байтов, скопированных в буфер. Если функция завершается сбоем из-за слишком маленького буфера, ldwTotsize получает необходимый размер в байтах.
Возвращаемое значение
Если функция выполняется успешно, возвращаемое значение будет ERROR_SUCCESS.
Если функция завершается сбоем, возвращаемое значение представляет собой один из следующих кодов ошибок.
Код возврата | Описание |
---|---|
|
RegQueryMultipleValues не может создать экземпляр или получить доступ к поставщику динамического ключа. |
|
Буфер, на который указывает lpValueBuf, был слишком мал. В этом случае ldwTotsize получает требуемый размер буфера. |
|
Общий размер запрошенных данных (размер массива val_list + ldwTotSize) превышает системное ограничение в один мегабайт. |
Комментарии
Функция RegQueryMultipleValues позволяет приложению запрашивать одно или несколько значений статического или динамического ключа. Если целевой ключ является статическим, система предоставляет все значения атомарным образом. Чтобы предотвратить чрезмерную сериализацию, агрегированные данные, возвращаемые функцией, не могут превышать один мегабайт.
Если целевой ключ является динамическим, его поставщик должен предоставить все значения атомарным образом. Это означает, что поставщик должен заполнять буфер результатов синхронно, обеспечивая согласованное представление всех значений в буфере, избегая при этом чрезмерной сериализации. Поставщик может предоставить не более одного мегабайта общих выходных данных во время атомарного вызова этой функции.
RegQueryMultipleValues поддерживается удаленно; то есть параметр hKey , переданный функции, может ссылаться на удаленный компьютер.
Примечание
Заголовок winreg.h определяет RegQueryMultipleValues в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | winreg.h (включая Windows.h) |
Библиотека | Advapi32.lib |
DLL | Advapi32.dll |