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


Функция WdfRegistryQueryValue (wdfregistry.h)

[Применимо к KMDF и UMDF]

Метод WdfRegistryQueryValue извлекает данные, назначенные в настоящее время указанному значению реестра.

Синтаксис

NTSTATUS WdfRegistryQueryValue(
  [in]            WDFKEY           Key,
  [in]            PCUNICODE_STRING ValueName,
  [in]            ULONG            ValueLength,
  [out, optional] PVOID            Value,
  [out, optional] PULONG           ValueLengthQueried,
  [out, optional] PULONG           ValueType
);

Параметры

[in] Key

Дескриптор объекта реестра, представляющего открытый раздел реестра.

[in] ValueName

Указатель на структуру UNICODE_STRING, содержащую имя значения.

[in] ValueLength

Длина буфера в байтах, на который значение указывает.

[out, optional] Value

Указатель на выделенный драйвером буфер, который получает данные значения реестра. Если этот указатель null, WdfRegistryQueryValue извлекает длину данных, но не данные.

[out, optional] ValueLengthQueried

Указатель на расположение, которое получает длину данных реестра. Этот указатель необязателен и может быть null.

[out, optional] ValueType

Указатель на расположение, которое получает тип данных значения реестра. Список значений типов данных см. в разделе Тип элемента KEY_VALUE_BASIC_INFORMATION. Этот указатель необязателен и может быть null.

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

WdfRegistryQueryValue возвращает STATUS_SUCCESS, если операция завершится успешно. В противном случае метод может вернуть одно из следующих значений:

Возвращаемый код Описание
STATUS_INVALID_DEVICE_REQUEST

WdfRegistryQueryValue не был вызван в IRQL = PASSIVE_LEVEL.

STATUS_INVALID_PARAMETER
Указан недопустимый параметр.
STATUS_ACCESS_DENIED
Драйвер не открыл раздел реестра с доступом KEY_QUERY_VALUE, KEY_READ или KEY_ALL_ACCESS.
STATUS_BUFFER_OVERFLOW
Буфер, на который указывает параметр значение, слишком мал, и в буфер записываются только частичные данные.
STATUS_BUFFER_OVERFLOW
Буфер значения слишком мал, и данные не записываются в буфер.
STATUS_OBJECT_NAME_NOT_FOUND
Значение реестра недоступно.
 

Этот метод также может возвращать другие значения NTSTATUS.

Ошибка возникает, если драйвер предоставляет недопустимый дескриптор объекта.

Замечания

Дополнительные сведения о объектах раздела реестра см. в разделе Использование реестра в Framework-Based драйверах.

Примеры

В следующем примере кода открывается аппаратный ключ устройства и извлекаются данные, назначенные NumberOfToasters значение, которое хранится под аппаратным ключом устройства.

WCHAR  comPort[FM_COM_PORT_STRING_LENGTH];
ULONG  length;
NTSTATUS  status;
ULONG  length, valueType, value;
DECLARE_CONST_UNICODE_STRING(valueName, L"NumberOfToasters");
WDFKEY  hKey;

status = WdfDeviceOpenRegistryKey(
                                  Device,
                                  PLUGPLAY_REGKEY_DEVICE,
                                  KEY_QUERY_VALUE,
                                  NULL, 
                                  &hKey
                                  );
if (!NT_SUCCESS (status)) {
    goto Error;
}
status = WdfRegistryQueryValue(
                               hKey,
                               &valueName,
                               sizeof(ULONG),
                               &value,
                               &length,
                               &valueType
                               );

Требования

Требование Ценность
целевая платформа Всеобщий
минимальная версия KMDF 1.0
минимальная версия UMDF 2.0
заголовка wdfregistry.h (include Wdf.h)
библиотеки Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
правил соответствия DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

См. также

KEY_VALUE_BASIC_INFORMATION

UNICODE_STRING

WdfDeviceOpenRegistryKey

WdfRegistryQueryMemory

WdfRegistryQueryMultiString

WdfRegistryQueryString

WdfRegistryQueryULong

WdfRegistryQueryUnicodeString