Можно ли открыть один и тот же файл дважды (с CreateFileA), используя разные флаги (в этом случае один с FILE_FLAG_NO_BUFFERING и один без)?Открытие того же файла дважды с разными флагами?
В этом случае: Во время запуска я создаю временный файл (с FILE_FLAG_DELETE_ON_CLOSE). Я заполняю его последовательно, и я не хочу беспокоиться о том, чтобы делать небуферизованный ввод-вывод в этой части. Затем, пока процесс выполняется, я хочу получить доступ к этому файлу с использованием небуферизованного ввода-вывода, потому что у меня есть своя логика кэширования. Таким образом, я собираюсь снова открыть тот же файл, на этот раз с FILE_FLAG_NO_BUFFERING, а затем закрыть старый дескриптор. Я хочу сделать это в этом перекрытом образом по двум причинам:
- Параллельность. Если я закрою старый дескриптор, прежде чем открыть новый, кто-то еще может столкнуться с моим файлом.
- FILE_FLAG_DELETE_ON_CLOSE удалит мой файл, когда я закрою первый дескриптор без открытия другого. Это небольшое раздражение, которое я мог бы обойти.
Случайный вопрос: Почему вы хотите использовать 'CreateFileA' вместо' CreateFileW'? – Joey
Я сам не писал всю систему, только эту часть. Они дают мне имя файла как char *, поэтому я использую его как char * :-) Кроме того, я мог бы написать весь разговор о том, почему WCHAR глуп, кроме того, конечно, что его использование настолько обильно в Windows API что вы как-то должны его использовать. –
А, ок. Извините за мое настроение здесь, но меня часто укусывают приложения, которые отказываются открывать файлы только потому, что у меня есть несколько папок, в которых используется Unicode, который не вписывается в устаревшую кодовую страницу. – Joey