Compartir a través de


Función WdfRegistryAssignMemory (wdfregistry.h)

[Se aplica a KMDF y UMDF]

El método WdfRegistryAssignMemory asigna datos contenidos en un búfer de memoria especificado a un nombre de valor especificado en el Registro.

Sintaxis

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

Parámetros

[in] Key

Identificador de un objeto de clave del Registro que representa una clave del Registro abierta.

[in] ValueName

Puntero a una estructura UNICODE_STRING que contiene un nombre de valor.

[in] ValueType

Valor que identifica el tipo de datos. Para obtener una lista de valores de tipo de datos, vea el miembro Type de KEY_VALUE_BASIC_INFORMATION.

[in] Memory

Identificador de un objeto de memoria de marco. Este objeto representa un búfer que contiene datos que se asignarán al nombre de valor al que ValueName apunta.

[in, optional] MemoryOffsets

Puntero a una estructura de WDFMEMORY_OFFSET proporcionada por el controlador que identifica una subsección del búfer que especifica Memory . Este parámetro es opcional y puede ser NULL.

Valor devuelto

WdfRegistryAssignMemory devuelve STATUS_SUCCESS si la operación se realiza correctamente. De lo contrario, el método podría devolver uno de los siguientes valores:

Código devuelto Descripción
STATUS_INVALID_DEVICE_REQUEST

No se llamó a WdfRegistryAssignMemory en IRQL = PASSIVE_LEVEL.

STATUS_INVALID_PARAMETER
Se especificó un parámetro no válido.
STATUS_ACCESS_DENIED
El controlador no abrió la clave del Registro con acceso KEY_SET_VALUE.
STATUS_INTEGER_OVERFLOW
El contenido de la estructura WDFMEMORY_OFFSET que el parámetro MemoryOffsets especificó no era válido.
 

Este método también podría devolver otros valores NTSTATUS.

Se produce una comprobación de errores si el controlador proporciona un identificador de objeto no válido.

Comentarios

Si el nombre del valor que el parámetro ValueName especifica ya existe, WdfRegistryAssignMemory actualiza los datos del valor.

Para obtener más información sobre los objetos de clave del Registro, vea Uso del Registro en controladores de Framework-Based.

Ejemplos

En el ejemplo de código siguiente se crea un objeto de memoria de marco, se carga el búfer del objeto con datos falsos y se asigna el contenido del búfer a un valor del 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 Value
Plataforma de destino Universal
Versión mínima de KMDF 1.0
Versión mínima de UMDF 2.0
Encabezado wdfregistry.h (incluir Wdf.h)
Library Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
Reglas de cumplimiento de DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Consulte también

KEY_VALUE_BASIC_INFORMATION

UNICODE_STRING

WDFMEMORY_OFFSET

WdfMemoryCreate

WdfRegistryAssignMultiString

WdfRegistryAssignString

WdfRegistryAssignULong

WdfRegistryAssignUnicodeString

WdfRegistryAssignValue