Compartir a través de


Función WdfFdoInitOpenRegistryKey (wdffdo.h)

[Se aplica a KMDF y UMDF]

El método WdfFdoInitOpenRegistryKey abre la clave de hardware de un dispositivo o la clave de software de un controlador en el Registro y crea un objeto de clave del Registro de marco que representa la clave del Registro.

Sintaxis

NTSTATUS WdfFdoInitOpenRegistryKey(
  [in]           PWDFDEVICE_INIT        DeviceInit,
  [in]           ULONG                  DeviceInstanceKeyType,
  [in]           ACCESS_MASK            DesiredAccess,
  [in, optional] PWDF_OBJECT_ATTRIBUTES KeyAttributes,
  [out]          WDFKEY                 *Key
);

Parámetros

[in] DeviceInit

Puntero a una estructura WDFDEVICE_INIT que el controlador obtuvo de su función de devolución de llamada EvtDriverDeviceAdd .

[in] DeviceInstanceKeyType

Especifica qué clave o subclave se va a abrir.

Nota

UMDF no admite la creación de subclaves.

Se trata de un OR bit a bit de las marcas siguientes (que se definen en Wdm.h).

Marca DeviceInstanceKeyType Significado marco
PLUGPLAY_REGKEY_DEVICE Abre la clave de hardware del dispositivo. KMDF/UMDF
PLUGPLAY_REGKEY_DRIVER Abre la clave de software del controlador. Un controlador UMDF que establece esta marca también debe establecer DesiredAccessen KEY_READ. De lo contrario, este método devuelve STATUS_ACCESS_DENIED. KMDF/UMDF
PLUGPLAY_REGKEY_CURRENT_HWPROFILE Un controlador KMDF usa esta marca para abrir la copia de la clave de hardware o software que se encuentra en el perfil de hardware actual. KMDF
PLUGPLAY_REGKEY_DRIVER | WDF_REGKEY_DRIVER_SUBKEY Un controlador UMDF usa estas marcas juntas para abrir la subclave ServiceName de la clave de software del controlador para el acceso de lectura y escritura. UMDF
PLUGPLAY_REGKEY_DEVICE | WDF_REGKEY_DEVICE_SUBKEY Del mismo modo, un controlador UMDF usa estas marcas para abrir la subclave ServiceName de la clave de hardware del dispositivo para el acceso de lectura y escritura. UMDF

[in] DesiredAccess

Valor con tipo ACCESS_MASK que especifica los derechos de acceso que solicita el controlador para la clave del Registro especificada.

Un controlador KMDF normalmente solicita KEY_READ, KEY_WRITE o KEY_READ | KEY_WRITE.

Si va a escribir un controlador UMDF, use la tabla siguiente.

DeviceInstanceKeyType DesiredAccess
PLUGPLAY_REGKEY_DEVICE KEY_READ
PLUGPLAY_REGKEY_DEVICE | WDF_REGKEY_DEVICE_SUBKEY KEY_READ o KEY_READ | KEY_SET_VALUE
PLUGPLAY_REGKEY_DRIVER KEY_READ
PLUGPLAY_REGKEY_DRIVER | WDF_REGKEY_DRIVER_SUBKEY KEY_READ o KEY_READ | KEY_SET_VALUE
 

Como procedimiento recomendado, solicite solo los tipos de acceso que necesita el controlador.

[in, optional] KeyAttributes

Puntero a una estructura WDF_OBJECT_ATTRIBUTES que contiene atributos proporcionados por el controlador para el nuevo objeto de clave del Registro. Este parámetro es opcional y puede ser WDF_NO_OBJECT_ATTRIBUTES.

[out] Key

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

Valor devuelto

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

STATUS_INVALID_PARAMETER
Se especificó un parámetro no válido o el controlador no obtuvo la estructura WDFDEVICE_INIT de su función de devolución de llamada EvtDriverDeviceAdd . En el caso de UMDF, este valor devuelto puede indicar derechos de acceso insuficientes.
STATUS_INSUFFICIENT_RESOURCES
No se pudo asignar un objeto de clave del Registro.
STATUS_OBJECT_NAME_NOT_FOUND
La clave del Registro especificada no existe.
 

Para obtener una lista de otros valores devueltos que puede devolver el método WdfFdoInitOpenRegistryKey , vea Errores de creación de objetos de marco.

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

Comentarios

El controlador debe llamar a WdfFdoInitOpenRegistryKey antes de llamar a WdfDeviceCreate. Para obtener más información sobre cómo llamar a WdfDeviceCreate, vea Creating a Framework Device Object.

Para obtener más información sobre el método WdfFdoInitOpenRegistryKey , vea Creating Device Objects in a Function Driver.

o más información sobre el registro, las claves de hardware y software y los objetos del Registro, consulte 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, con acceso de lectura.

WDFKEY key;
NTSTATUS status;

status = WdfFdoInitOpenRegistryKey(
                                   DeviceInit,
                                   PLUGPLAY_REGKEY_DEVICE,
                                   GENERIC_READ,
                                   WDF_NO_OBJECT_ATTRIBUTES,
                                   &key
                                   );
if (!NT_SUCCESS(status)) {
    return status;
}

Requisitos

Requisito Value
Plataforma de destino Universal
Versión mínima de KMDF 1.0
Versión mínima de UMDF 2.0
Encabezado wdffdo.h (incluir Wdf.h)
Library Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
Reglas de cumplimiento de DDI DeviceInitAPI(kmdf), DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Consulte también

WdfDeviceOpenRegistryKey

WdfDriverOpenParametersRegistryKey