Функция RegQueryMultipleValues получает тип и данные для списка имен значений, ассоциированных с открытым ключом реестра.
LONG RegQueryMultipleValues(
HKEY hKey, // дескриптор ключа
PVALENT val_list, // адрес массива со структурами значений
DWORD num_vals, // размер массива со структурами значений
LPTSTR lpValueBuf, // адрес буфера для информации значений
LPDWORD ldwTotsize // адрес размера буфера для информации значений
);
Параметры:
hKey |
Идентифицирует открытый в текущий момент ключ или один из следующих предопределенных значений дескрипторов:
HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USERS HKEY_CURRENT_CONFIG |
val_list |
Адрес массива из структур VALENT, который описывает один или более вхождений значения. На выходе, член ve_valuename каждой структуры должен содержать адрес имени значения для его получения. Функция завершается с ошибкой, если любой из указанных значений не существует в указанном ключе. При успехе функции, каждый элемент массива содержит информацию для указанного ключа. |
num_vals |
Определяет количество элементов в массиве val_list. |
lpValueBuf |
Адрес буфера. Если функция успешна, буфер содержит данные для каждого значения. Если lpValueBuf равен NULL, функция возвращается с удачей, и ldwTotsize будет содержать требуемый размер буфера в байтах. |
ldwTotsize |
Адрес переменной, которая определяет размер в байтах буфера, на который указывает параметр lpValueBuf. Если функция успешна, ldwTotsize будет содержать количество байт, скопированных в буфер. Если функция завершится с ошибкой, значит буфер слишком мал, и ldwTotsize будет содержать требуемый размер в байтах. |
Возвращаемые значения:
Если функция успешна, возвращается значение ERROR_SUCCESS.
Если произошла ошибка, возвращается один из следующих кодов ошибки:
Значение: |
Назначение: |
ERROR_CANTREAD   |
RegQueryMultipleValues не может инициализировать или получить доступ к предоставителю (провайдеру) динамического ключа. |
ERROR_MORE_DATA   |
Буфер, на который указывает lpValueBuf, был слишком мал. В этом случае, в ldwTotsize возвращается требуемый размер буфера. |
ERROR_TRANSFER_TOO_LONG   |
Общая длина запрашиваемых данных (размер массива val_list + ldwTotSize) больше, чем лимит системы в один мегабайт. |
Возвращаемые значения:
Если функция успешно, возвращается значение ERROR_SUCCESS.
При ошибке, возвращаемое значение – это код ошибки, объявленный в WINERROR.H. Вы можете использовать функцию FormatMessage с флагом FORMAT_MESSAGE_FROM_SYSTEM для получения общего описания ошибки.
Замечания:
Функция RegQueryMultipleValues позволяет приложению получить одно или более значений статического или динамического ключа. Если это статический ключ, система предоставляет все значения в стиле атома. Для предотвращения чрезмерной сериализации, совокупность возвращенных функцией данных не может превышать один мегабайт.
Если целевой ключ – это динамический ключ, предоставитель (провайдер) должен предоставить все значения в стиле атома. Это означает, что провайдер может заполнить буфер синхронно, предоставляя согласующийся вид всех значений в буфер, пока избегается чрезмерная сериализация. Провайдер может предоставить более одного мегабайта данных в течении вызовов этой функции.
RegQueryMultipleValues поддерживает удаленность; тогда параметр hKey, передаваемый функции, может ссылаться на удаленный компьютер.
Смотрите также:
VALENT
|