Abrindo um identificador para um arquivo
Para abrir um identificador em um arquivo, execute as seguintes etapas:
Crie uma estrutura OBJECT_ATTRIBUTES e chame a macro InitializeObjectAttributes para inicializar a estrutura. Especifique o nome do objeto do arquivo como o parâmetro ObjectName para InitializeObjectAttributes.
Abra um identificador para o arquivo passando a estrutura OBJECT_ATTRIBUTES para IoCreateFile, ZwCreateFile ou ZwOpenFile.
Se o arquivo não existir, IoCreateFile e ZwCreateFile o criarão, enquanto ZwOpenFile retornará STATUS_OBJECT_NAME_NOT_FOUND.
Observe que os drivers quase sempre usam ZwCreateFile ou ZwOpenFile em vez de IoCreateFile.
Quando você chama IoCreateFile, ZwCreateFile ou ZwOpenFile, o executivo do Windows cria um novo objeto de arquivo para representar o arquivo e fornece um identificador aberto para o objeto. Esse objeto de arquivo persiste até que você feche todos os identificadores abertos para ele.
Seja qual for a rotina que você chamar, você deve passar os direitos de acesso necessários como o parâmetro DesiredAccess . Esses direitos devem abranger todas as operações que o driver executará. A tabela a seguir lista essas operações e o direito de acesso correspondente à solicitação.
Operação | Direito de acesso necessário |
---|---|
Leia do arquivo. |
FILE_READ_DATA ou GENERIC_READ |
Gravar no arquivo. |
FILE_WRITE_DATA ou GENERIC_WRITE |
Gravar somente no final do arquivo. |
FILE_APPEND_DATA |
Leia os metadados do arquivo, como a hora de criação do arquivo. |
FILE_READ_ATTRIBUTES ou GENERIC_READ |
Escreva os metadados do arquivo, como a hora de criação do arquivo. |
FILE_WRITE_ATTRIBUTES ou GENERIC_WRITE |
Para obter mais informações sobre os valores disponíveis para DesiredAccess, consulte ZwCreateFile.