Установка FILE_ATTRIBUTE_DEVICE в Visual Studio - PullRequest
2 голосов
/ 06 августа 2010

Я хотел бы знать, возможно ли вызвать функцию CreateFile в Visual C ++ для создания файла с атрибутом FILE_ATTRIBUTE_DEVICE (0x00000040 шестнадцатеричное, 64 десятичное).Согласно MSDN API, FILE_ATTRIBUTE_DEVICE зарезервирован, и поэтому я не могу его использовать, но я знаю, что должен быть какой-то способ создать файл с такими атрибутами.Что я должен сделать, чтобы сделать это?Есть ли другие вызовы API или мне нужно создать новую структуру?

Спасибо

1 Ответ

2 голосов
/ 06 августа 2010

Флаг существует для идентификации дескрипторов, которые представляют устройства, а не файлы.Например, использование CreateFile для открытия \\.\C: возвращает дескриптор диска устройство , а не дескриптор файла или каталога.

Вы не можете создать новый «файл» с этим флагом,поскольку файл не является устройством.При изобретении / создании (а не открытии) дескриптора файла с этим флагом требуется написать драйвер устройства для его предоставления (в частности, вы создаете имя для вашего объекта устройства, которое клиент пользовательского режима может передать в CreateFile - ядро ​​создает дескриптор файлаи устанавливает флаг FILE_ATTRIBUTE_DEVICE).

Страница CreateFile и раздел «Примечания» на странице DeviceIOControl должны прояснить ситуацию немного подробнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...