Функция 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, если операция выполнена успешно. В противном случае метод может вернуть одно из следующих значений:

Код возврата Описание
STATUS_INVALID_DEVICE_REQUEST

WdfRegistryQueryMemory не был вызван в IRQL = PASSIVE_LEVEL.

STATUS_INVALID_PARAMETER
Указан недопустимый параметр.
STATUS_INSUFFICIENT_RESOURCES
Не удалось выделить объект памяти.
STATUS_ACCESS_DENIED
Драйвер не открывал раздел реестра с доступом KEY_QUERY_VALUE, KEY_READ или KEY_ALL_ACCESS.
STATUS_OBJECT_NAME_NOT_FOUND
Значение реестра недоступно.
STATUS_RESOURCE_DATA_NOT_FOUND
Значение реестра существует в указанном разделе, но является пустым.
 

Список других возвращаемых значений, которые может возвращать метод 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)

См. также раздел

KEY_VALUE_BASIC_INFORMATION

POOL_TYPE

UNICODE_STRING

WDF_OBJECT_ATTRIBUTES

WdfMemoryGetBuffer

WdfRegistryQueryMultiString

WdfRegistryQueryString

WdfRegistryQueryULong

WdfRegistryQueryUnicodeString

WdfRegistryQueryValue