Функция 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
Буфер, на который указывает параметр Value , слишком мал, и в буфер были записаны только частичные данные.
STATUS_BUFFER_OVERFLOW
Буфер значений слишком мал, и данные в него не записаны.
STATUS_OBJECT_NAME_NOT_FOUND
Значение реестра недоступно.
 

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

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

Комментарии

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

Примеры

В следующем примере кода открывается аппаратный ключ устройства и извлекаются данные, назначенные значению 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 (включая 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