Функция WdfRegistryQueryMemory (wdfregistry.h)
[Относится к KMDF и UMDF]
Метод WdfRegistryQueryMemory извлекает данные, которые в настоящее время назначены указанному значению реестра, сохраняет данные в буфере, выделенном платформой, и создает объект памяти платформы для представления буфера.
Синтаксис
NTSTATUS WdfRegistryQueryMemory(
[in] WDFKEY Key,
[in] PCUNICODE_STRING ValueName,
[in] POOL_TYPE PoolType,
[in, optional] PWDF_OBJECT_ATTRIBUTES MemoryAttributes,
[out] WDFMEMORY *Memory,
[out, optional] PULONG ValueType
);
Параметры
[in] Key
Дескриптор для объекта раздела реестра, представляющего открытый раздел реестра.
[in] ValueName
Указатель на структуру UNICODE_STRING , содержащую имя значения.
[in] PoolType
POOL_TYPE типизированное значение, указывающее тип памяти, выделяемой для буфера данных.
[in, optional] MemoryAttributes
Указатель на структуру WDF_OBJECT_ATTRIBUTES , содержащую атрибуты объекта для нового объекта памяти. Этот параметр является необязательным и может быть WDF_NO_OBJECT_ATTRIBUTES.
[out] Memory
Указатель на расположение, которое получает дескриптор нового объекта памяти.
[out, optional] ValueType
Указатель на расположение, которое получает тип данных. Список значений типов данных см. в элементе TypeKEY_VALUE_BASIC_INFORMATION. Этот указатель является необязательным и может иметь значение NULL.
Возвращаемое значение
WdfRegistryQueryMemory возвращает STATUS_SUCCESS, если операция выполнена успешно. В противном случае метод может вернуть одно из следующих значений:
Код возврата | Описание |
---|---|
|
WdfRegistryQueryMemory не был вызван в IRQL = PASSIVE_LEVEL. |
|
Указан недопустимый параметр. |
|
Не удалось выделить объект памяти. |
|
Драйвер не открывал раздел реестра с доступом KEY_QUERY_VALUE, KEY_READ или KEY_ALL_ACCESS. |
|
Значение реестра недоступно. |
|
Значение реестра существует в указанном разделе, но является пустым. |
Список других возвращаемых значений, которые может возвращать метод WdfRegistryQueryMemory , см. в разделе Ошибки создания объектов платформы.
Этот метод также может возвращать другие значения NTSTATUS.
Ошибка проверка возникает, если драйвер предоставляет недопустимый дескриптор объекта.
Комментарии
Когда драйвер вызывает WdfRegistryQueryMemory, платформа выделяет буфер, который достаточно велик для хранения данных указанного значения реестра. После возврата WdfRegistryQueryMemory драйвер может вызвать WdfMemoryGetBuffer , чтобы получить указатель на буфер и его размер.
Дополнительные сведения об объектах раздела реестра см. в статье Использование реестра в Framework-Based Drivers.
Примеры
В следующем примере кода извлекаются данные, назначенные значению MyValueName , а затем извлекаются адрес и размер данных.
WDFMEMORY memory;
size_t size;
PUCHAR pBuf;
NTSTATUS status;
ULONG type;
DECLARE_CONST_UNICODE_STRING(valueName1, L"MyValueName");
status = WdfRegistryQueryMemory(
Key,
&valueName1,
PagedPool,
NULL,
&memory,
&type
);
pBuf = (PUCHAR)WdfMemoryGetBuffer(
memory,
&size
);
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Минимальная версия 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) |