Поделиться через


Функция WdfRegistryAssignMemory (wdfregistry.h)

[Относится к KMDF и UMDF]

Метод WdfRegistryAssignMemory назначает данные, содержащиеся в указанном буфере памяти, указанному имени значения в реестре.

Синтаксис

NTSTATUS WdfRegistryAssignMemory(
  [in]           WDFKEY            Key,
  [in]           PCUNICODE_STRING  ValueName,
  [in]           ULONG             ValueType,
  [in]           WDFMEMORY         Memory,
  [in, optional] PWDFMEMORY_OFFSET MemoryOffsets
);

Параметры

[in] Key

Дескриптор для объекта раздела реестра, представляющего открытый раздел реестра.

[in] ValueName

Указатель на структуру UNICODE_STRING , содержащую имя значения.

[in] ValueType

Значение типа , определяющее тип данных. Список значений типов данных см. в элементе TypeKEY_VALUE_BASIC_INFORMATION.

[in] Memory

Дескриптор объекта памяти платформы. Этот объект представляет буфер, содержащий данные, которые будут назначены имени значения, на которое указывает ValueName .

[in, optional] MemoryOffsets

Указатель на структуру WDFMEMORY_OFFSET , предоставляемую драйвером, которая определяет подраздел буфера, указанного в памяти . Этот параметр является необязательным и может иметь значение NULL.

Возвращаемое значение

WdfRegistryAssignMemory возвращает STATUS_SUCCESS, если операция выполнена успешно. В противном случае метод может вернуть одно из следующих значений:

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

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

STATUS_INVALID_PARAMETER
Указан недопустимый параметр.
STATUS_ACCESS_DENIED
Драйвер не открыл раздел реестра с KEY_SET_VALUE доступом.
STATUS_INTEGER_OVERFLOW
Содержимое структуры WDFMEMORY_OFFSET , указанной параметром MemoryOffsets , было недопустимым.
 

Этот метод также может возвращать другие значения NTSTATUS.

Ошибка проверка возникает, если драйвер предоставляет недопустимый дескриптор объекта.

Комментарии

Если имя значения, указанное параметром ValueName , уже существует, WdfRegistryAssignMemory обновляет данные значения.

Дополнительные сведения об объектах раздела реестра см. в статье Использование реестра в Framework-Based Drivers.

Примеры

В следующем примере кода создается объект памяти платформы, загружается буфер объекта с поддельными данными и содержимое буфера присваивается значению реестра.

PUCHAR pBuffer;
WDFMEMORY memory;
NTSTATUS status;
UCHAR i;
DECLARE_UNICODE_STRING_SIZE(valueName, L"MyValueName");

status = WdfMemoryCreate(
                         WDF_NO_OBJECT_ATTRIBUTES,
                         NonPagedPool,
                         0,
                         MEMORY_LENGTH,
                         &memory,
                         (PVOID*)&pBuffer
                         );
if (NT_SUCCESS(status)) {

    // Fill the buffer with fake data.
    for (i = 1; i <= MEMORY_LENGTH; i++) {
        pBuffer[i-1] = i;
    }

    status = WdfRegistryAssignMemory(
                                     Key,
                                     &valueName,
                                     REG_BINARY,
                                     memory,
                                     NULL
                                     );
}

Требования

Требование Значение
Целевая платформа Универсальное
Минимальная версия 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

UNICODE_STRING

WDFMEMORY_OFFSET

WdfMemoryCreate

WdfRegistryAssignMultiString

WdfRegistryAssignString

WdfRegistryAssignULong

WdfRegistryAssignUnicodeString

WdfRegistryAssignValue