Открытие дескриптора для файла

Чтобы открыть дескриптор файла, выполните следующие действия.

  1. Создайте структуру OBJECT_ATTRIBUTES и вызовите макрос InitializeObjectAttributes для инициализации структуры. Имя объекта файла указывается в качестве параметра ObjectName для InitializeObjectAttributes.

  2. Откройте дескриптор файла, передав структуру OBJECT_ATTRIBUTES в IoCreateFile, ZwCreateFile или ZwOpenFile.

    Если файл не существует, IoCreateFile и ZwCreateFile создадут его, тогда как ZwOpenFile вернет STATUS_OBJECT_NAME_NOT_FOUND.

Обратите внимание, что драйверы почти всегда используют ZwCreateFile или ZwOpenFile , а не IoCreateFile.

При вызове IoCreateFile, ZwCreateFile или ZwOpenFile руководитель Windows создает новый объект file для представления файла и предоставляет открытый дескриптор для объекта . Этот объект файла сохраняется до тех пор, пока вы не закроете все открытые дескрипторы.

Какую бы подпрограмму вы ни вызвали, необходимо передать необходимые права доступа в качестве параметра DesiredAccess . Эти права должны охватывать все операции, которые будет выполнять драйвер. В следующей таблице перечислены эти операции и соответствующее право доступа для запроса.

Операция Необходимое право доступа

Чтение из файла.

FILE_READ_DATA или GENERIC_READ

Запись в файл.

FILE_WRITE_DATA или GENERIC_WRITE

Запись только в конец файла.

FILE_APPEND_DATA

Чтение метаданных файла, например время создания файла.

FILE_READ_ATTRIBUTES или GENERIC_READ

Запишите метаданные файла, например время создания файла.

FILE_WRITE_ATTRIBUTES или GENERIC_WRITE

Дополнительные сведения о значениях, доступных для DesiredAccess, см. в разделе ZwCreateFile.