Compartilhar via


Função WdfRegistryAssignMemory (wdfregistry.h)

[Aplica-se a KMDF e UMDF]

O método WdfRegistryAssignMemory atribui dados contidos em um buffer de memória especificado a um nome de valor especificado no registro.

Sintaxe

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

Parâmetros

[in] Key

Um identificador para um objeto de chave do Registro que representa uma chave do Registro aberta.

[in] ValueName

Um ponteiro para uma estrutura UNICODE_STRING que contém um nome de valor.

[in] ValueType

Um valor que identifica o tipo de dados. Para obter uma lista de valores de tipo de dados, consulte o membro Tipo de KEY_VALUE_BASIC_INFORMATION.

[in] Memory

Um identificador para um objeto de memória de estrutura. Esse objeto representa um buffer que contém dados que serão atribuídos ao nome do valor ao qual ValueName aponta.

[in, optional] MemoryOffsets

Um ponteiro para uma estrutura de WDFMEMORY_OFFSET fornecida pelo driver que identifica uma subseção do buffer especificado pela Memória . Esse parâmetro é opcional e pode ser NULL.

Retornar valor

WdfRegistryAssignMemory retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, o método poderá retornar um dos seguintes valores:

Código de retorno Descrição
STATUS_INVALID_DEVICE_REQUEST

WdfRegistryAssignMemory não foi chamado em IRQL = PASSIVE_LEVEL.

STATUS_INVALID_PARAMETER
Um parâmetro inválido foi especificado.
STATUS_ACCESS_DENIED
O driver não abriu a chave do Registro com acesso KEY_SET_VALUE.
STATUS_INTEGER_OVERFLOW
O conteúdo da estrutura WDFMEMORY_OFFSET que o parâmetro MemoryOffsets especificou era inválido.
 

Esse método também pode retornar outros valores NTSTATUS.

Um bug marcar ocorrerá se o driver fornecer um identificador de objeto inválido.

Comentários

Se o nome do valor especificado pelo parâmetro ValueName já existir, WdfRegistryAssignMemory atualizará os dados do valor.

Para obter mais informações sobre objetos de chave do Registro, consulte Usando o Registro em drivers de Framework-Based.

Exemplos

O exemplo de código a seguir cria um objeto de memória de estrutura, carrega o buffer do objeto com dados falsos e atribui o conteúdo do buffer a um valor do Registro.

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
                                     );
}

Requisitos

Requisito Valor
Plataforma de Destino Universal
Versão mínima do KMDF 1.0
Versão mínima do UMDF 2,0
Cabeçalho wdfregistry.h (inclua Wdf.h)
Biblioteca Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
Regras de conformidade de DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Confira também

KEY_VALUE_BASIC_INFORMATION

UNICODE_STRING

WDFMEMORY_OFFSET

WdfMemoryCreate

WdfRegistryAssignMultiString

WdfRegistryAssignString

WdfRegistryAssignULong

WdfRegistryAssignUnicodeString

WdfRegistryAssignValue