Compartilhar via


Função ZwOpenFile (wdm.h)

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

Sintaxe

NTSYSAPI NTSTATUS ZwOpenFile(
  [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 ZwCreateFile.

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

[in] OpenOptions

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

Retornar valor

ZwOpenFile 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

O ZwOpenFile 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. ZwOpenFile fornece um subconjunto da funcionalidade fornecida por ZwCreateFile. 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 ZwClose 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 ZwOpenFile 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 de uma rotina dos Serviços do 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 dos Serviços de Sistema Nativo.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (consulte a seção Comentários)
Regras de conformidade de DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Confira também

ACCESS_MASK

InitializeObjectAttributes

Usando versões Nt e Zw das rotinas dos Serviços de Sistema Nativo

ZwCreateFile