Compartir a través de


Función ZwOpenKeyEx (wdm.h)

La rutina ZwOpenKeyEx abre una clave del Registro existente.

Sintaxis

NTSYSAPI NTSTATUS ZwOpenKeyEx(
  [out] PHANDLE            KeyHandle,
  [in]  ACCESS_MASK        DesiredAccess,
  [in]  POBJECT_ATTRIBUTES ObjectAttributes,
  [in]  ULONG              OpenOptions
);

Parámetros

[out] KeyHandle

Puntero a una variable HANDLE en la que la rutina escribe el identificador en la clave.

[in] DesiredAccess

Especifica el tipo de acceso a la clave que solicita el autor de la llamada. Este parámetro es un valor de ACCESS_MASK . Para obtener más información, vea la descripción del parámetro DesiredAccess de la rutina ZwCreateKey .

[in] ObjectAttributes

Puntero a los atributos de objeto de la clave que se está abriendo. Este parámetro apunta a una estructura OBJECT_ATTRIBUTES que debe haber sido inicializada previamente por la rutina InitializeObjectAttributes . El llamador debe especificar el nombre de la clave del Registro como parámetro ObjectName en la llamada a InitializeObjectAttributes. Si el autor de la llamada no se ejecuta en un contexto de subproceso del sistema, debe establecer el atributo OBJ_KERNEL_HANDLE cuando llama a InitializeObjectAttributes.

[in] OpenOptions

Especifica las opciones que se aplicarán al abrir la clave. Establezca este parámetro en cero o en el or bit a bit de uno o varios de los siguientes bits de marca REG_OPTION_XXX :

Marca OpenOptions Descripción
REG_OPTION_OPEN_LINK La clave es un vínculo simbólico. El dispositivo y los controladores intermedios no usan esta marca.
REG_OPTION_BACKUP_RESTORE La clave debe abrirse con privilegios especiales que permitan las operaciones de copia de seguridad y restauración. El dispositivo y los controladores intermedios no usan esta marca.

Valor devuelto

ZwOpenKeyEx devuelve STATUS_SUCCESS si la llamada se abre correctamente. Entre los posibles valores devueltos de error se incluyen los siguientes:

Código devuelto Descripción
STATUS_INVALID_PARAMETER_4
El parámetro OpenOptions especifica opciones no válidas.
STATUS_OBJECT_PATH_SYNTAX_BAD
La ruta de acceso del Registro en los atributos de objeto no es válida.
STATUS_OBJECT_NAME_NOT_FOUND
No se encontró el nombre de clave del Registro en los atributos del objeto.
STATUS_OBJECT_TYPE_MISMATCH
La clave del Registro con nombre es un vínculo simbólico, pero el bit de marca REG_OPTION_OPEN_LINK no se establece en OpenOptions.
STATUS_ACCESS_DENIED
El autor de la llamada no tenía los derechos de acceso necesarios para abrir un identificador para la clave del Registro con nombre.
STATUS_INSUFFICIENT_RESOURCES
Error en una operación de asignación de memoria.

Comentarios

Esta rutina proporciona un identificador con el que el autor de la llamada puede acceder a una clave del Registro. Si la clave especificada no existe, la rutina devuelve un valor de estado de error y no proporciona un identificador de clave.

La rutina ZwOpenKey es similar a ZwOpenKeyEx , pero no acepta un parámetro OpenOptions . El parámetro OpenOptions de ZwOpenKeyEx permite al autor de la llamada abrir una clave que es un vínculo simbólico o abrir una clave para las operaciones de copia de seguridad y restauración. Una llamada a ZwOpenKeyEx con OpenOptions = 0 equivale a una llamada a ZwOpenKey.

Una vez que el identificador al que apunta KeyHandle ya no está en uso, el controlador debe llamar a ZwClose para cerrarlo.

ZwOpenKeyEx omite la información de seguridad de la estructura a la que apunta el parámetro ObjectAttributes .

Si el llamador en modo kernel no se está ejecutando en un contexto de subproceso del sistema, debe asegurarse de que los identificadores que cree sean identificadores de kernel. De lo contrario, el proceso puede acceder al identificador en cuyo contexto se ejecuta el controlador. Para obtener más información, vea Identificadores de objeto.

Para obtener más información sobre cómo trabajar con claves del Registro en modo kernel, consulte Uso del Registro en un controlador.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Windows 7 y versiones posteriores de Windows.
Plataforma de destino Universal
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Reglas de cumplimiento de DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Consulte también

ACCESS_MASK

InitializeObjectAttributes

OBJECT_ATTRIBUTES

ZwClose

ZwOpenKey