Função NtOpenFile (ntifs.h)
A rotina de 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 o 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.
Valor de retorno
NtOpenFile retorna STATUS_SUCCESS ou o código de erro NTSTATUS apropriado. Neste último caso, o chamador pode encontrar mais informações sobre a causa da falha verificando o parâmetro IoStatusBlock.
Observações
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 pelo 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 Object Handles.
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 no modo kernel, as versões NtXxx e Zwxxx versões de uma rotina dos Serviços de Sistema Nativo do Windows 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 Usando versões Nt e Zw das rotinas de serviços do sistema nativo.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows 2000 |
da Plataforma de Destino | Universal |
cabeçalho | ntifs.h (incluem Wdm.h, Ntddk.h, Ntifs.h) |
biblioteca | NtosKrnl.lib |
de DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL (consulte a seção Comentários) |
regras de conformidade de DDI | HwStorPortProhibitedDIs, PowerIrpDDis |