Функция 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
Указатель на расположение, которое получает тип данных. Список значений типов данных см. в разделе Тип элемента KEY_VALUE_BASIC_INFORMATION. Этот указатель необязателен и может быть null.
Возвращаемое значение
WdfRegistryQueryMemory возвращает STATUS_SUCCESS, если операция выполнена успешно. В противном случае метод может вернуть одно из следующих значений:
Код возврата | Описание |
---|---|
|
WdfRegistryQueryMemory не был вызван в IRQL = PASSIVE_LEVEL. |
|
Указан недопустимый параметр. |
|
Не удалось выделить объект памяти. |
|
Драйвер не открыл раздел реестра с доступом KEY_QUERY_VALUE, KEY_READ или KEY_ALL_ACCESS. |
|
Значение реестра недоступно. |
|
Значение реестра существует под указанным ключом, но пустое. |
Список других возвращаемых значений, возвращаемых методом WdfRegistryQueryMemor y, может возвращать, см. .
Этот метод также может возвращать другие значения NTSTATUS.
Ошибка возникает, если драйвер предоставляет недопустимый дескриптор объекта.
Замечания
Когда драйвер вызывает WdfRegistryQueryMemory, платформа выделяет буфер, который достаточно велик для хранения данных указанного значения реестра. После возврата WdfRegistryQueryMemor y драйвер может вызвать WdfMemoryGetBuffer, чтобы получить указатель на буфер и размер буфера.
Дополнительные сведения о объектах раздела реестра см. в разделе Использование реестра в Framework-Based драйверах.
Примеры
В следующем примере кода извлекаются данные, назначенные значению 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 (include Wdf.h) |
Библиотека | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | PASSIVE_LEVEL |
правил соответствия DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |