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


Функция 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

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

[in] Memory

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

[in, optional] MemoryOffsets

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

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

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

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

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

СТАТУС_НЕДЕЙСТВИТЕЛЬНЫЙ_ПАРАМЕТР
Указан недопустимый параметр.
STATUS_ACCESS_DENIED
Драйвер не открыл раздел реестра с KEY_SET_VALUE доступом.
STATUS_INTEGER_OVERFLOW
Содержимое структуры WDFMEMORY_OFFSET, указанной параметром MemoryOffsets, был недопустимым.
 

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

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

Замечания

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

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

Примеры

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

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 (include 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