Функция 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, если операция выполнена успешно. В противном случае метод может вернуть одно из следующих значений:
Код возврата | Описание |
---|---|
|
WdfRegistryQueryValue не был вызван в IRQL = PASSIVE_LEVEL. |
|
Указан недопустимый параметр. |
|
Драйвер не открыл раздел реестра с доступом KEY_QUERY_VALUE, KEY_READ или KEY_ALL_ACCESS. |
|
Буфер, на который указывает параметр Value , слишком мал, и в буфер были записаны только частичные данные. |
|
Буфер значений слишком мал, и данные в него не записаны. |
|
Значение реестра недоступно. |
Этот метод также может возвращать другие значения 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) |