Здравствуйте, Alexander G, Вы писали:
AG>Здравствуйте, sergey77666, Вы писали:
S>>Как исправить?
AG>Кэширование. Можно флашить ZwFlushBuffersFile. AG>Можно открыть без буферизации (и писать тогда кусками по размеру сектора).
AG>Если .log — журнал транзакций, то просто флашить недостаточно, чтобы гарантировать консистентность при BSOD. Для таких случаев CLFS сделали.
Что значит транзакции?
Просто лог как лог
У CLFS сложноватое API... Осваивать его... А у меня уже есть функции-утилы для создания и записи строк в файл...
Здравствуйте, sergey77666, Вы писали:
S>Что значит транзакции? S>Просто лог как лог S>У CLFS сложноватое API... Осваивать его... А у меня уже есть функции-утилы для создания и записи строк в файл...
Проехали. CLFS не для записи строк в файл
ZwFlushBuffersFile. Ну или FltFlushBuffers если из фильтра.
Здравствуйте, Alexander G, Вы писали:
AG>Ну или Flt
Как это достало
Одна и та же функция же — какой префикс хочу, такой и использую! И желательно именно Zw или Nt, он везде оптимально смотрится.
S>FILE_NO_INTERMEDIATE_BUFFERING пробовал (а также GENERIC_WRITE заменял на что-то не GENERIC, но с SYNCHRONIZE), никак.
SYNCHRONIZE нужен. Просто нужен, без оглядки на сохранение при BSOD-е. Это если вы собираетесь использовать хэндл для синхронных операций. Иначе может случится песец.
Как много веселых ребят, и все делают велосипед...
Думаю самым правильным решением будет заранее сделать файл с зарезервированным размером и просто писать в него с FILE_WRITE_THROUGH. FILE_NO_INTERMEDIATE_BUFFERING даже лучше, но у него есть свои ограничения, до которых, вы скорее всего, не дочитали.
Как много веселых ребят, и все делают велосипед...
Здравствуйте, ononim, Вы писали:
S>>FILE_NO_INTERMEDIATE_BUFFERING пробовал (а также GENERIC_WRITE заменял на что-то не GENERIC, но с SYNCHRONIZE), никак. O>SYNCHRONIZE нужен. Просто нужен, без оглядки на сохранение при BSOD-е. Это если вы собираетесь использовать хэндл для синхронных операций. Иначе может случится песец.
Здравствуйте, sergey77666, Вы писали:
AG>>Ну или Flt S>Как это достало S>Одна и та же функция же — какой префикс хочу, такой и использую! И желательно именно Zw или Nt, он везде оптимально смотрится.
Ну как, Zw функции пойдут с самого верха, через все фильтры — этот и другие. Можно получить дедлоки/рекурсию/бесконечный цикл.
Другие фильтры ожидаются, например, от anti-malware, сортов которого как собак нерезаных. Отлаживай потом BSOD у заказчика по дампу.
Здравствуйте, Alexander G, Вы писали:
AG>Здравствуйте, sergey77666, Вы писали:
AG>>>Ну или Flt S>>Как это достало S>>Одна и та же функция же — какой префикс хочу, такой и использую! И желательно именно Zw или Nt, он везде оптимально смотрится.
AG>Ну как, Zw функции пойдут с самого верха, через все фильтры — этот и другие. Можно получить дедлоки/рекурсию/бесконечный цикл.
AG>Другие фильтры ожидаются, например, от anti-malware, сортов которого как собак нерезаных. Отлаживай потом BSOD у заказчика по дампу.
AG>Лучше сразу играть по правилам.
Хочется библиотеки писать. Которые можно и в минифильтре, и в обычном драйвере юзать, и даже в приложении юзермода (если это зачем-то нужно). А тут конкретное усложнение выходит.