Функция OREnumValue
Перечисляет значения для указанного открытого раздела реестра в автономном кусте реестра. Функция получает сведения для одного значения под указанным ключом при каждом вызове функции.
Синтаксис
DWORD OREnumValue(
_In_ ORHKEY Handle,
_In_ DWORD dwIndex,
_Out_ PWSTR lpValueName,
_Inout_ PDWORD lpcValueName,
_Out_opt_ PDWORD lpType,
_Out_opt_ PBYTE lpData,
_Inout_opt_ PDWORD lpcbData
);
Параметры
-
Дескриптор [в]
-
Дескриптор открытого раздела реестра в автономном кусте реестра.
-
dwIndex [in]
-
Индекс извлекаемого значения. Этот параметр должен быть равен нулю для первого вызова функции, а затем увеличиваться для последующих вызовов.
Поскольку значения не упорядочены, любое новое значение будет иметь произвольный индекс. Это означает, что функция может возвращать значения в любом порядке.
-
lpValueName [out]
-
Указатель на буфер, который получает имя значения в виде строки, заканчивающейся null. Этот буфер должен быть достаточно большим для включения завершающего символа NULL.
Дополнительные сведения см. в разделе Ограничения размера элементов реестра.
-
lpcValueName [in, out]
-
Указатель на переменную, указывающую размер буфера, на который указывает параметр lpValueName , в символах. При возврате функции переменная получает количество символов, хранящихся в буфере, не включая завершающий символ NULL.
-
lpType [out, optional]
-
Указатель на переменную, получающую код, указывающий тип данных, хранящихся в указанном значении. Список возможных кодов типов см. в разделе Типы значений реестра. Если код типа не требуется, параметр lpType может иметь значение NULL .
-
lpData [out, optional]
-
Указатель на буфер, который получает данные для записи значения. Этот параметр может иметь значение NULL , если данные не требуются.
Если lpData имеет значение NULL , а lpcbData не равно NULL, функция сохраняет размер данных в байтах в переменной, на которую указывает lpcbData. Это позволяет приложению определить оптимальный способ выделения буфера для данных.
-
lpcbData [in, out, optional]
-
Указатель на переменную, указывающую размер буфера, на который указывает параметр lpData , в байтах. При возврате функции переменная получает количество байтов, хранящихся в буфере.
Этот параметр может иметь значение NULL , только если lpData имеет значение NULL.
Если данные имеют тип REG_SZ, REG_MULTI_SZ или REG_EXPAND_SZ, этот размер включает все завершающие символы NULL или символы. Дополнительные сведения см. в подразделе "Примечания".
Если буфер, заданный lpData , недостаточно велик для хранения данных, функция возвращает ERROR_MORE_DATA и сохраняет требуемый размер буфера в переменной, на которую указывает lpcbData. В этом случае содержимое lpData не определено.
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение будет ERROR_SUCCESS.
Если функция завершается сбоем, возвращаемое значение представляет собой код ошибки, отличный от нуля, определенный в Winerror.h. Чтобы получить общее описание ошибки, можно использовать функцию FormatMessage с флагом FORMAT_MESSAGE_FROM_SYSTEM.
Если буфер lpData слишком мал для получения значения, функция возвращает ERROR_MORE_DATA.
Комментарии
Для перечисления значений приложение должно сначала вызвать функцию OREnumValue с параметром dwIndex , равным нулю. Затем приложение должно увеличить dwIndex и вызывать функцию OREnumValue , пока не будет больше значений (пока функция не вернет ERROR_NO_MORE_ITEMS).
Приложение также может присвоить dwIndex индексу последнего значения при первом вызове функции и уменьшать индекс до тех пор, пока не будет перечислено значение с индексом 0. Чтобы получить индекс последнего значения, используйте функцию ORQueryInfoKey .
При использовании OREnumValue приложение не должно вызывать функции автономного реестра, которые могут изменить запрашиваемый ключ.
Если данные имеют тип REG_SZ, REG_MULTI_SZ или REG_EXPAND_SZ, возможно, строка не была сохранена с соответствующими символами конца null. Поэтому, даже если функция возвращает ERROR_SUCCESS, приложение должно убедиться, что строка правильно завершена, прежде чем использовать ее; В противном случае он может перезаписать буфер. (Обратите внимание, что REG_MULTI_SZ строки должны содержать два символа с завершающим значением NULL.)
Чтобы определить максимальный размер имен и буферов данных, используйте функцию ORQueryInfoKey .
Требования
Требование | Значение |
---|---|
Распространяемые компоненты |
Библиотека автономного реестра Windows версии 1.0 или более поздней |
Заголовок |
|
DLL |
|
См. также раздел