Función WdfRegistryQueryMemory (wdfregistry.h)

[Se aplica a KMDF y UMDF]

El método WdfRegistryQueryMemory recupera los datos asignados actualmente a un valor del Registro especificado, almacena los datos en un búfer asignado por el marco y crea un objeto de memoria del marco para representar el búfer.

Sintaxis

NTSTATUS WdfRegistryQueryMemory(
  [in]            WDFKEY                 Key,
  [in]            PCUNICODE_STRING       ValueName,
  [in]            POOL_TYPE              PoolType,
  [in, optional]  PWDF_OBJECT_ATTRIBUTES MemoryAttributes,
  [out]           WDFMEMORY              *Memory,
  [out, optional] PULONG                 ValueType
);

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 de UNICODE_STRING que contiene un nombre de valor.

[in] PoolType

Valor con tipo POOL_TYPE que especifica el tipo de memoria que se va a asignar para el búfer de datos.

[in, optional] MemoryAttributes

Puntero a una estructura de WDF_OBJECT_ATTRIBUTES que contiene atributos de objeto para el nuevo objeto de memoria. Este parámetro es opcional y se puede WDF_NO_OBJECT_ATTRIBUTES.

[out] Memory

Puntero a una ubicación que recibe un identificador para el nuevo objeto de memoria.

[out, optional] ValueType

Puntero a una ubicación que recibe el tipo de datos. Para obtener una lista de valores de tipo de datos, consulte el miembro Type de KEY_VALUE_BASIC_INFORMATION. Este puntero es opcional y puede ser NULL.

Valor devuelto

WdfRegistryQueryMemory 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 WdfRegistryQueryMemory en IRQL = PASSIVE_LEVEL.

STATUS_INVALID_PARAMETER
Se especificó un parámetro no válido.
STATUS_INSUFFICIENT_RESOURCES
No se pudo asignar un objeto de memoria.
STATUS_ACCESS_DENIED
El controlador no ha abierto la clave del Registro con KEY_QUERY_VALUE, KEY_READ o acceso KEY_ALL_ACCESS.
STATUS_OBJECT_NAME_NOT_FOUND
El valor del Registro no estaba disponible.
STATUS_RESOURCE_DATA_NOT_FOUND
El valor del Registro existe bajo la clave especificada, pero está vacío.
 

Para obtener una lista de otros valores devueltos que podría devolver el método WdfRegistryQueryMemory , vea Errores de creación de objetos de marco.

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

Cuando un controlador llama a WdfRegistryQueryMemory, el marco asigna un búfer lo suficientemente grande como para contener los datos del valor del Registro especificado. Después de que WdfRegistryQueryMemory vuelva, el controlador puede llamar a WdfMemoryGetBuffer para obtener un puntero al búfer y el tamaño del búfer.

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 recuperan los datos asignados al valor MyValueName y, a continuación, se obtiene la dirección y el tamaño de los datos.

WDFMEMORY memory;
size_t size;
PUCHAR pBuf;
NTSTATUS status;
ULONG type;
DECLARE_CONST_UNICODE_STRING(valueName1, L"MyValueName");

status = WdfRegistryQueryMemory(
                                Key,
                                &valueName1,
                                PagedPool,
                                NULL,
                                &memory,
                                &type
                                );
pBuf = (PUCHAR)WdfMemoryGetBuffer(
                                   memory,
                                   &size
                                   );

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

POOL_TYPE

UNICODE_STRING

WDF_OBJECT_ATTRIBUTES

WdfMemoryGetBuffer

WdfRegistryQueryMultiString

WdfRegistryQueryString

WdfRegistryQueryULong

WdfRegistryQueryUnicodeString

WdfRegistryQueryValue