Compartir a través de


Función ZwOpenFile (wdm.h)

La rutina ZwOpenFile abre un archivo, directorio, dispositivo o volumen existente.

Sintaxis

NTSYSAPI NTSTATUS ZwOpenFile(
  [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 una variable HANDLE que recibe un identificador para el archivo.

[in] DesiredAccess

Especifica un valor de ACCESS_MASK que determina el acceso solicitado al objeto . Para obtener más información, vea el parámetro DesiredAccess de ZwCreateFile.

[in] ObjectAttributes

Puntero a una estructura de OBJECT_ATTRIBUTES que especifica el nombre de objeto y otros atributos. Use InitializeObjectAttributes para inicializar esta estructura. 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.

[out] IoStatusBlock

Puntero a una estructura de IO_STATUS_BLOCK que recibe el estado de finalización final e información sobre la operación solicitada.

[in] ShareAccess

Especifica el tipo de acceso al recurso compartido para el archivo. Para obtener más información, vea el parámetro ShareAccess de ZwCreateFile.

[in] OpenOptions

Especifica las opciones que se van a aplicar al abrir el archivo. Para obtener más información, vea el parámetro CreateOptions de ZwCreateFile.

Valor devuelto

ZwOpenFile devuelve STATUS_SUCCESS o el código de error NTSTATUS adecuado. En este último caso, el autor de la llamada puede encontrar más información sobre la causa del error comprobando el parámetro IoStatusBlock .

Comentarios

ZwOpenFile proporciona un identificador que el autor de la llamada puede usar para manipular los datos de un archivo o el estado y los atributos del objeto de archivo. ZwOpenFile proporciona un subconjunto de la funcionalidad proporcionada por ZwCreateFile. Para obtener más información, vea Usar archivos en un controlador.

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

Si el autor de la llamada no se ejecuta en un contexto de subproceso del sistema, debe asegurarse de que los identificadores que cree sean identificadores privados. 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.

Los autores de llamadas de ZwOpenFile deben ejecutarse en IRQL = PASSIVE_LEVEL y con las API de kernel especiales habilitadas.

Si la llamada a esta función se produce en modo de usuario, debe usar el nombre "NtOpenFile" en lugar de "ZwOpenFile".

En el caso de las llamadas desde controladores en modo kernel, las versiones NtXxx y ZwXxx de una rutina de Windows Native System Services pueden comportarse de forma diferente en la forma en que controlan e interpretan los parámetros de entrada. Para obtener más información sobre la relación entre las versiones NtXxx y ZwXxx de una rutina, vea Using Nt and Zw Versions of the Native System Services Routines.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (consulte la sección Comentarios)
Reglas de cumplimiento de DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Consulte también

ACCESS_MASK

InitializeObjectAttributes

Uso de las versiones Nt y Zw de las rutinas nativas de System Services

ZwCreateFile