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


Метод IRegistryKey::QueryValueKey (portcls.h)

Метод QueryValueKey извлекает сведения о записях значений раздела реестра, включая их имена, типы, размеры данных и значения.

Синтаксис

NTSTATUS QueryValueKey(
  [in]  PUNICODE_STRING             ValueName,
  [in]  KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
  [out] PVOID                       KeyValueInformation,
  [in]  ULONG                       Length,
  [out] PULONG                      ResultLength
);

Параметры

[in] ValueName

Указатель на предоставленное производителем имя записи значения. Строка имени задается структурой типа UNICODE_STRING.

[in] KeyValueInformationClass

Указывает тип сведений, возвращаемых в буфере. Задайте для этого параметра одно из следующих значений перечисления KEY_VALUE_INFORMATION_CLASS:

  • KeyValueBasicInformation
  • KeyValueFullInformation
  • KeyValuePartialInformation

[out] KeyValueInformation

Указатель на буфер, выделенный вызывающим объектом, в который метод записывает запрошенные данные. Буфер содержит структуру типа KEY_VALUE_BASIC_INFORMATION, KEY_VALUE_FULL_INFORMATION или KEY_VALUE_PARTIAL_INFORMATION в зависимости от значения KeyValueInformationClass. За структурой следуют дополнительные данные, размер которых зависит от типа данных значения ключа.

[in] Length

Размер буфера KeyValueInformation в байтах, который вызывающий объект должен задать в соответствии с заданным параметром KeyValueInformationClass. Чтобы получить все запрошенные данные, размер буфера должен быть не ниже размера запрошенных данных.

[out] ResultLength

Выходной указатель на длину результирующие данные. Этот параметр указывает на выделенную вызывающим объектом переменную ULONG, в которую метод записывает количество байтов, записанных в буфер KeyValueInformation . Однако если указанная длина буфера слишком мала для хранения сведений, метод выводит требуемый размер буфера и возвращает STATUS_BUFFER_OVERFLOW или STATUS_BUFFER_TOO_SMALL. Дополнительные сведения см. в разделе "Примечания".

Возвращаемое значение

QueryValueKey возвращает STATUS_SUCCESS, если вызов успешно скопировать запрошенные сведения в буфер KeyValueInformation . Если указанный размер буфера слишком мал для получения всех запрошенных сведений, метод возвращает STATUS_BUFFER_OVERFLOW. Если указанный размер буфера слишком мал для получения любой из запрошенных сведений, метод возвращает STATUS_BUFFER_TOO_SMALL. В противном случае метод возвращает соответствующий код состояния ошибки. В следующей таблице показаны некоторые возможные коды ошибок.

Код возврата Описание
STATUS_INVALID_PARAMETER
Указывает, что один из параметров, переданных методу, недопустим.
STATUS_OBJECT_NAME_NOT_FOUND
Указывает, что запись значения с указанным именем не найдена.

Комментарии

Если буфер KeyValueInformation слишком мал для хранения запрошенной информации, метод записывает необходимый размер в файл *ResultLength и возвращает код состояния STATUS_BUFFER_OVERFLOW или STATUS_BUFFER_TOO_SMALL. Метод возвращает STATUS_BUFFER_OVERFLOW, если ему удалось записать в буфер только часть запрошенных сведений. Метод возвращает STATUS_BUFFER_TOO_SMALL, если ему не удалось записать какие-либо сведения в буфер. Значение, записанное в *ResultLength , указывает минимальный размер буфера, необходимый для хранения всех запрошенных сведений.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть portcls.h (включая Portcls.h)
IRQL PASSIVE_LEVEL

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

IRegistryKey

KEY_VALUE_BASIC_INFORMATION

KEY_VALUE_FULL_INFORMATION

KEY_VALUE_PARTIAL_INFORMATION

UNICODE_STRING

ZwQueryValueKey