Функция 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, если операция завершится успешно. В противном случае метод может вернуть одно из следующих значений:
Код возврата | Описание |
---|---|
|
WdfRegistryAssignMemory не был вызван в IRQL = PASSIVE_LEVEL. |
|
Указан недопустимый параметр. |
|
Драйвер не открыл раздел реестра с KEY_SET_VALUE доступом. |
|
Содержимое структуры 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) |