Compartilhar via


Função NtOpenFile (ntifs.h)

A rotina NtOpenFile abre um arquivo, diretório, dispositivo ou volume existente.

Sintaxe

__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

Ponteiro para uma variável HANDLE que recebe um identificador para o arquivo.

[in] DesiredAccess

Especifica um valor ACCESS_MASK que determina o acesso solicitado ao objeto . Para obter mais informações, consulte o parâmetro DesiredAccess de NtCreateFile.

[in] ObjectAttributes

Ponteiro para uma estrutura OBJECT_ATTRIBUTES que especifica o nome do objeto e outros atributos. Use InitializeObjectAttributes para inicializar essa estrutura. Se o chamador não estiver em execução em um contexto de thread do sistema, ele deverá definir o atributo OBJ_KERNEL_HANDLE quando chamar InitializeObjectAttributes.

[out] IoStatusBlock

Ponteiro para uma estrutura IO_STATUS_BLOCK que recebe a status de conclusão final e informações sobre a operação solicitada.

[in] ShareAccess

Especifica o tipo de acesso de compartilhamento para o arquivo. Para obter mais informações, consulte o parâmetro ShareAccess de NtCreateFile.

[in] OpenOptions

Especifica as opções a serem aplicadas ao abrir o arquivo. Para obter mais informações, consulte o parâmetro CreateOptions de NtCreateFile.

Retornar valor

NtOpenFile retorna STATUS_SUCCESS ou o código de erro NTSTATUS apropriado. No último caso, o chamador pode encontrar mais informações sobre a causa da falha verificando o parâmetro IoStatusBlock .

Comentários

NtOpenFile fornece um identificador que o chamador pode usar para manipular os dados de um arquivo ou o estado e os atributos do objeto de arquivo. NtOpenFile fornece um subconjunto da funcionalidade fornecida por NtCreateFile. Para obter mais informações, consulte Usando arquivos em um driver.

Depois que o identificador apontado por FileHandle não estiver mais em uso, o driver deverá chamar NtClose para fechá-lo.

Se o chamador não estiver em execução em um contexto de thread do sistema, ele deverá garantir que todos os identificadores que ele cria sejam identificadores privados. Caso contrário, o identificador pode ser acessado pelo processo em cujo contexto o driver está em execução. Para obter mais informações, consulte Identificadores de objeto.

Os chamadores de NtOpenFile devem estar em execução em IRQL = PASSIVE_LEVEL e com APCs de kernel especiais habilitadas.

Se a chamada para essa função ocorrer no modo de usuário, você deverá usar o nome "NtOpenFile" em vez de "ZwOpenFile".

Para chamadas de drivers de modo kernel, as versões NtXxx e ZwXxx de uma rotina do Windows Native System Services podem se comportar de forma diferente na maneira como lidam e interpretam parâmetros de entrada. Para obter mais informações sobre a relação entre as versões NtXxx e ZwXxx de uma rotina, consulte Using Nt and Zw Versions of the Native System Services Routines.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000
Plataforma de Destino Universal
Cabeçalho ntifs.h (inclui Wdm.h, Ntddk.h, Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (consulte a seção Comentários)
Regras de conformidade da DDI HwStorPortProhibitedDDIs, PowerIrpDDis

Confira também

ACCESS_MASK

InitializeObjectAttributes

NtClose

NtCreateFile