Función NtOpenFile (ntifs.h)
La rutina NtOpenFile abre un archivo, directorio, dispositivo o volumen existente.
Sintaxis
__kernel_entry NTSYSCALLAPI 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 una variable HANDLE que recibe un identificador del 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 NtCreateFile.
[in] ObjectAttributes
Puntero a una estructura OBJECT_ATTRIBUTES que especifica el nombre del 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 NtCreateFile.
[in] OpenOptions
Especifica las opciones que se aplicarán al abrir el archivo. Para obtener más información, vea el parámetro CreateOptions de NtCreateFile.
Valor devuelto
NtOpenFile 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.
Observaciones
NtOpenFile 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. NtOpenFile proporciona un subconjunto de la funcionalidad proporcionada por NtCreateFile. Para obtener más información, vea Using Files in a Driver.
Una vez que el identificador al que apunta FileHandle ya no está en uso, el controlador debe llamar a NtClose para cerrarlo.
Si el autor de la llamada no se está ejecutando 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 está ejecutando el controlador. Para obtener más información, vea identificadores de objeto.
Los autores de llamadas de NtOpenFile deben ejecutarse en IRQL = PASSIVE_LEVEL y con 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 NtXxx y Zwversiones de Xxx de una rutina de Servicios del sistema nativo de Windows 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 de NtXxx y ZwXxx de una rutina, vea Using Nt and Zw Versions of the Native System Services Routines.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows 2000 |
de la plataforma de destino de | Universal |
encabezado de | ntifs.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, PowerIrpDDis |