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