Compartilhar via


Função NtOpenFile (winternl.h)

Abre um arquivo, dispositivo, diretório ou volume existente e retorna um identificador para o objeto de arquivo.

Essa função é equivalente à função ZwOpenFile documentada no WDK (Windows Driver Kit).

Sintaxe

__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

Um ponteiro para um identificador para o arquivo aberto. O driver deve fechar o identificador com ZwClose quando o identificador não estiver mais em uso.

[in] DesiredAccess

O valor ACCESS_MASK que expressa os tipos de acesso a arquivos desejados pelo chamador. Para obter informações sobre os tipos de acesso que podem ser especificados, consulte ZwCreateFile no WDK.

[in] ObjectAttributes

Um ponteiro para uma estrutura que um chamador inicializa com InitializeObjectAttributes. Se o chamador não estiver em execução no contexto do processo do sistema, ele deverá definir o atributo OBJ_KERNEL_HANDLE para ObjectAttributes. Para obter mais informações sobre como especificar atributos de objeto, consulte o parâmetro CreateOptions de ZwCreateFile no WDK.

[out] IoStatusBlock

Um ponteiro para uma estrutura que contém informações sobre a operação solicitada e o status de conclusão final.

[in] ShareAccess

O tipo de acesso de compartilhamento para o arquivo. Para obter mais informações, consulte ZwCreateFile no WDK.

[in] OpenOptions

As opções a serem aplicadas ao abrir o arquivo. Para obter mais informações, consulte ZwCreateFile no WDK.

Valor de retorno

NtOpenFile retorna STATUS_SUCCESS ou um status de erro apropriado. Se ele retornar um status de erro, o chamador poderá encontrar informações adicionais sobre a causa da falha verificando o IoStatusBlock.

Observações

As rotinas de driver executadas em um contexto de processo diferente do processo do sistema devem definir o atributo OBJ_KERNEL_HANDLE para o parâmetro ObjectAttributes de ZwOpenFile. Isso restringe o uso do identificador retornado pelo ZwOpenFile a processos em execução somente no modo kernel. Caso contrário, o identificador pode ser acessado pelo processo em cujo contexto o driver está em execução. Os drivers podem chamar InitializeObjectAttributes para definir o atributo OBJ_KERNEL_HANDLE da seguinte maneira.

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

Os chamadores de ZwCreateFile devem estar em execução em IRQL = PASSIVE_LEVEL.

Observe que o arquivo de cabeçalho do WDK Ntdef.h é necessário para muitas definições constantes. Você também pode usar as funções LoadLibrary e GetProcAddress para vincular dinamicamente a Ntdll.dll.

Requirements

Requirement Value
da Plataforma de Destino Windows
Header winternl.h
Library ntdll.lib
de DLL ntdll.dll