Compartir a través de


Función WdfRegistryQueryValue (wdfregistry.h)

[Se aplica a KMDF y UMDF]

El método WdfRegistryQueryValue recupera los datos asignados actualmente a un valor del Registro especificado.

Sintaxis

NTSTATUS WdfRegistryQueryValue(
  [in]            WDFKEY           Key,
  [in]            PCUNICODE_STRING ValueName,
  [in]            ULONG            ValueLength,
  [out, optional] PVOID            Value,
  [out, optional] PULONG           ValueLengthQueried,
  [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] ValueLength

Longitud, en bytes, del búfer al que apunta Value .

[out, optional] Value

Puntero a un búfer asignado por el controlador que recibe los datos del valor del Registro. Si este puntero es NULL, WdfRegistryQueryValue recupera la longitud de los datos, pero no los datos.

[out, optional] ValueLengthQueried

Puntero a una ubicación que recibe la longitud de datos del valor del Registro. Este puntero es opcional y puede ser NULL.

[out, optional] ValueType

Puntero a una ubicación que recibe el tipo de datos del valor del Registro. 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

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

STATUS_INVALID_PARAMETER
Se especificó un parámetro no válido.
STATUS_ACCESS_DENIED
El controlador no ha abierto la clave del Registro con KEY_QUERY_VALUE, KEY_READ o acceso KEY_ALL_ACCESS.
STATUS_BUFFER_OVERFLOW
El búfer al que apunta el parámetro Value es demasiado pequeño y solo se han escrito datos parciales en el búfer.
STATUS_BUFFER_OVERFLOW
El búfer valor es demasiado pequeño y no se ha escrito ningún dato en el búfer.
STATUS_OBJECT_NAME_NOT_FOUND
El valor del Registro no estaba disponible.
 

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

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 abre la clave de hardware de un dispositivo y se recuperan los datos asignados al valor NumberOfToasters , que se almacena en la clave de hardware del dispositivo.

WCHAR  comPort[FM_COM_PORT_STRING_LENGTH];
ULONG  length;
NTSTATUS  status;
ULONG  length, valueType, value;
DECLARE_CONST_UNICODE_STRING(valueName, L"NumberOfToasters");
WDFKEY  hKey;

status = WdfDeviceOpenRegistryKey(
                                  Device,
                                  PLUGPLAY_REGKEY_DEVICE,
                                  KEY_QUERY_VALUE,
                                  NULL, 
                                  &hKey
                                  );
if (!NT_SUCCESS (status)) {
    goto Error;
}
status = WdfRegistryQueryValue(
                               hKey,
                               &valueName,
                               sizeof(ULONG),
                               &value,
                               &length,
                               &valueType
                               );

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

UNICODE_STRING

WdfDeviceOpenRegistryKey

WdfRegistryQueryMemory

WdfRegistryQueryMultiString

WdfRegistryQueryString

WdfRegistryQueryULong

WdfRegistryQueryUnicodeString