Пишу данные в файл через сектора, но данные видны только если читать файл тоже через сектора или после ребута системы. Что и как надо обновить в ФС, чтобы изменения содержимого файла стали актуальными?
кэш чего? кэш ДМА вроде сбрасывается, в любом случае - изменения находятся на диске физически. просто через файловую систему их не видно. Например открываю файл блокнотом и не вижу тестового сообщения, а читая сектора диска - вижу... После перезагрузки все данные на месте. Так что подозреваю что надо что-то делать с файловой системой. Только вот что именно, не понятно.
если кому надо, вот лекарство (проверено): ZwFsControlFile( hVolume, NULL, NULL, NULL, &IoStatusBlock, FSCTL_DISMOUNT_VOLUME, NULL, 0, NULL, 0 );
x64 есть варианты лучше? предложи... на данный момент FSCTL_DISMOUNT_VOLUME единственное нормальное решение. и не на кажду операцию записи, а на каждый Open/Close А если ты такой грамотный, объяснить что проиходит внутри ФС при выполнении FSCTL_DISMOUNT_VOLUME. Буду тебе очень признателен.
Да я не грамотный, я так только... нимношко... только учусь, в общем. См. исходный код fastfat'а, - есть в WDK.
x64 наверное ты уже смотрел "в сторону API менеджера кэша (CcXxx)." и "исходный код fastfat'а" иначе бы не советовал мне этого. поэтому я еще раз прошу тебя рассказать альтернативу FSCTL_DISMOUNT_VOLUME, если оноя у тебя имеется за общими рассуждениями.