Открытие дескриптора для файла
Чтобы открыть дескриптор файла, выполните следующие действия.
Создайте структуру OBJECT_ATTRIBUTES и вызовите макрос InitializeObjectAttributes для инициализации структуры. Имя объекта файла указывается в качестве параметра ObjectName для InitializeObjectAttributes.
Откройте дескриптор файла, передав структуру 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.