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 |
---|---|
|
No se llamó a WdfRegistryQueryMemory en IRQL = PASSIVE_LEVEL. |
|
Se especificó un parámetro no válido. |
|
No se pudo asignar un objeto de memoria. |
|
El controlador no ha abierto la clave del Registro con KEY_QUERY_VALUE, KEY_READ o acceso KEY_ALL_ACCESS. |
|
El valor del Registro no estaba disponible. |
|
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) |