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 |
---|---|
|
El parámetro OpenOptions especifica opciones no válidas. |
|
La ruta de acceso del Registro en los atributos de objeto no es válida. |
|
No se encontró el nombre de clave del Registro en los atributos del objeto. |
|
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. |
|
El autor de la llamada no tenía los derechos de acceso necesarios para abrir un identificador para la clave del Registro con nombre. |
|
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) |