Función IoOpenDeviceRegistryKey (wdm.h)
La rutina IoOpenDeviceRegistryKey devuelve un identificador a una ubicación de estado del Registro para una instancia de dispositivo determinada.
Sintaxis
NTSTATUS IoOpenDeviceRegistryKey(
[in] PDEVICE_OBJECT DeviceObject,
[in] ULONG DevInstKeyType,
[in] ACCESS_MASK DesiredAccess,
[out] PHANDLE DeviceRegKey
);
Parámetros
[in] DeviceObject
Puntero al objeto de dispositivo físico (PDO) de la instancia de dispositivo para la que se va a abrir la ubicación del estado del Registro.
[in] DevInstKeyType
Especifica marcas que indican si se debe abrir una clave de hardware específica del dispositivo o una clave de software específica del controlador. Las marcas también indican si la clave es relativa al perfil de hardware actual. Para obtener más información sobre las claves de hardware y software, consulte Introducción a las claves del Registro para controladores.
Las marcas se definen de la siguiente manera:
PLUGPLAY_REGKEY_DEVICE
Abra la clave de hardware del dispositivo, una ubicación de estado del Registro específica del dispositivo que contiene información sobre el dispositivo. Esta marca no se puede especificar con PLUGPLAY_REGKEY_DRIVER.
PLUGPLAY_REGKEY_DRIVER
Abra la clave de software del dispositivo, una ubicación de estado del Registro específica del dispositivo para almacenar información específica del controlador. Esta marca no se puede especificar con PLUGPLAY_REGKEY_DEVICE.
PLUGPLAY_REGKEY_CURRENT_HWPROFILE
Los perfiles de hardware están en desuso y el estado no debe almacenarse en relación con un perfil de hardware.
Abra una clave relativa al perfil de hardware actual para la información del dispositivo o del controlador. Esto permite al controlador acceder a la información de configuración específica del perfil de hardware. El autor de la llamada debe especificar PLUGPLAY_REGKEY_DEVICE o PLUGPLAY_REGKEY_DRIVER con esta marca.
[in] DesiredAccess
Especifica el valor ACCESS_MASK que representa el acceso que el autor de la llamada necesita a la clave. Consulte la rutina de ZwCreateKey para obtener una descripción de cada KEY_derecho de acceso XXX.
[out] DeviceRegKey
Puntero a un búfer asignado por el autor de la llamada que, al devolver correctamente, contiene un identificador para la ubicación de estado del Registro solicitada.
Valor devuelto
ioOpenDeviceRegistryKey devuelve STATUS_SUCCESS si la llamada se realizó correctamente. Entre los valores devueltos de error posibles se incluyen los siguientes:
Código devuelto | Descripción |
---|---|
STATUS_INVALID_PARAMETER | Posiblemente indica que el autor de la llamada especificó un conjunto no válido de marcas de DevInstKeyType o proporcionó un DeviceObject que no es un PDO válido. |
Observaciones
El controlador debe llamar a ZwClose para cerrar el identificador devuelto de esta rutina cuando el acceso ya no sea necesario.
Las claves del Registro abiertas por esta rutina no son volátiles.
Las aplicaciones de configuración en modo de usuario pueden acceder a estas claves del Registro mediante CM_Open_DevNode_Key o funciones de información del dispositivo, como SetupDiOpenDevRegKey o SetupDiCreateDevRegKey.
Para rellenar previamente el estado en estas ubicaciones de estado del Registro en el momento de la instalación del paquete de controladores, use directivas AddReg de INF en un archivo INF.
Los autores de llamadas de ioOpenDeviceRegistryKey deben ejecutarse en IRQL = PASSIVE_LEVEL en el contexto de un subproceso del sistema.
Requisitos
Requisito | Valor |
---|---|
de la plataforma de destino de | Universal |
encabezado de | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
biblioteca de | NtosKrnl.lib |
DLL de | NtosKrnl.exe |
irQL | PASSIVE_LEVEL (consulte la sección Comentarios) |
reglas de cumplimiento de DDI | HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm) |