Función NtOpenFile (winternl.h)

Abre un archivo, un dispositivo, un directorio o un volumen existentes y devuelve un identificador para el objeto de archivo.

Esta función es equivalente a la función ZwOpenFile documentada en el Kit de controladores de Windows (WDK).

Sintaxis

__kernel_entry NTSTATUS NtOpenFile(
  [out] PHANDLE            FileHandle,
  [in]  ACCESS_MASK        DesiredAccess,
  [in]  POBJECT_ATTRIBUTES ObjectAttributes,
  [out] PIO_STATUS_BLOCK   IoStatusBlock,
  [in]  ULONG              ShareAccess,
  [in]  ULONG              OpenOptions
);

Parámetros

[out] FileHandle

Puntero a un identificador para el archivo abierto. El controlador debe cerrar el controlador con ZwClose una vez que el controlador ya no esté en uso.

[in] DesiredAccess

Valor de ACCESS_MASK que expresa los tipos de acceso a archivos deseados por el autor de la llamada. Para obtener información sobre los tipos de acceso que se pueden especificar, vea ZwCreateFile en WDK.

[in] ObjectAttributes

Puntero a una estructura que inicializa un autor de la llamada con InitializeObjectAttributes. Si el autor de la llamada no se está ejecutando en el contexto del proceso del sistema, debe establecer el atributo OBJ_KERNEL_HANDLE para ObjectAttributes. Para obtener más información sobre cómo especificar atributos de objeto, vea el parámetro CreateOptions de ZwCreateFile en el WDK.

[out] IoStatusBlock

Puntero a una estructura que contiene información sobre la operación solicitada y el estado de finalización final.

[in] ShareAccess

Tipo de acceso compartido para el archivo. Para obtener más información, vea ZwCreateFile en WDK.

[in] OpenOptions

Las opciones que se aplicarán al abrir el archivo. Para obtener más información, vea ZwCreateFile en WDK.

Valor devuelto

NtOpenFile devuelve STATUS_SUCCESS o un estado de error adecuado. Si devuelve un estado de error, el autor de la llamada puede encontrar información adicional sobre la causa del error comprobando ioStatusBlock.

Comentarios

Las rutinas de controlador que se ejecutan en un contexto de proceso distinto del del proceso del sistema deben establecer el atributo OBJ_KERNEL_HANDLE para el parámetro ObjectAttributes de ZwOpenFile. Esto restringe el uso del identificador devuelto por ZwOpenFile a los procesos que se ejecutan solo en modo kernel. De lo contrario, el proceso puede acceder al identificador en cuyo contexto se ejecuta el controlador. Los controladores pueden llamar a InitializeObjectAttributes para establecer el atributo OBJ_KERNEL_HANDLE de la siguiente manera.

InitializeObjectAttributes(&ObjectAddributes, NULL, OBJ_KERNEL_HANDLE, NULL, NULL);

Los autores de llamadas de ZwCreateFile deben ejecutarse en IRQL = PASSIVE_LEVEL.

Tenga en cuenta que el archivo de encabezado WDK Ntdef.h es necesario para muchas definiciones de constantes, así como para la macro InitializeObjectAttributes . También puede usar las funciones LoadLibrary y GetProcAddress para vincular dinámicamente a Ntdll.dll.

Requisitos

Requisito Value
Plataforma de destino Windows
Encabezado winternl.h
Library ntdll.lib
Archivo DLL ntdll.dll