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 |
---|---|
|
No se llamó a WdfFdoInitOpenRegistryKey en IRQL = PASSIVE_LEVEL. |
|
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. |
|
No se pudo asignar un objeto de clave del Registro. |
|
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) |