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 (Kit de Driver do Windows).

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 depois que 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 a conclusão final status.

[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.

Retornar valor

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

Comentários

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 por 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, bem como para a macro InitializeObjectAttributes . Você também pode usar as funções LoadLibrary e GetProcAddress para vincular dinamicamente a Ntdll.dll.

Requisitos

Requisito Valor
Plataforma de Destino Windows
Cabeçalho winternl.h
Biblioteca ntdll.lib
DLL ntdll.dll