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 |