Поделиться через


Функция 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 или более поздней
Заголовок
Offreg.h
DLL
Offreg.dll

См. также раздел

ORCreateKey

OREnumKey

OROpenKey

ORQueryInfoKey