Цитата(gerber @ Sep 4 2012, 13:07)

Кэширование здесь ни при чём. Чтение файлов не кэшируется - в некоторых ОС кэшируется (откладывается) запись файлов, с целью ускорения записи путём объединения операций записи в одну.
Ни винда, ни любая другая ОС не может непрерывно сканировать все файлы на диске на предмет - а не изменился ли какой файл сам собою, произвольно. Все модификации файловой системы и самих файлов должны идти через ОС - это один из постулатов ОС. Либо юзер должен нажать кнопку "Обновить".
К сожалению, мне не удалось найти эту волшебную кнопочку "обновить" в операционной системе "Windows".
Ни одна из нижеперечисленных операций не ведет к обновлению кэша (то есть по USB шине не передается ни одной команды чтения сектора с физического устройства):
1. Запуск/перезапуск программы типа "проводник Виндоус", "Тотал командер", "ФАР"
2. открытие/закрытие файла в просмотрщике-редакторе.
3. Нажатие кнопочек "Обновить", "свойства диска"
4. Копирование файла на компьютер.
Вероятно, все дело в том, что я имею дело с маленьким USB диском, 4 МБ, и он целиком поместился в буфере кэша в момент подключения устройства.
Что срабатывает- это попытка записать на диск. Сейчас он у меня read-only, так после пробной записи и ошибки диск таки перечитывается.
Попробую на этом сыграть

Цитата(gerber @ Sep 4 2012, 13:07)

Однако, существуют механизмы, позволяющие уведомить ОС об изменениях в файловой системе, чтобы она перечитала файлы или каталоги. Это решается двумя способами:
1) диск должен быть виден как сетевой диск, изменения на сетевых дисках нотифицируются всем подключенным клиентам,
2) применительно к USB - нужно использовать не Mass Storage, а
MTP - Media Transfer Protocol. На таком протоколе работают многие современные фотокамеры и медиа-плееры (ведь в фотокамере новая фотка может появиться независимо от ОС). Там в протокол заложена возможность уведомления системы об изменениях в файлах.
С Mass Storage без доп. софта ничего путного в этом ракурсе выловить не получится.
Большое спасибо. Но, первое чтение по диагонали про MTP энтузиазма не добавило- наворочено и ресурсоемко со стороны устройства получается. И если поддержка MSD/USB со всеми потрохами без оптимизации в 8 кбайт кода + 1 кбайт ОЗУ на PIC18 лезет, то MTP думаю для более пузатых случаев.
А что есть "доп софт"? Имеете в виду для передергивания USB MSD? Сейчас уже вижу, что достаточно организовать в этом допсофте периодически запись в фиктивный файл на моем MSD, при этом каталог перечитывается. Или можно изящнее сделать?
Сейчас, собственно и так нормально- это логгер, который имеет право отложить "логгирование" на время USB сеанса. Такое положение вещей вполне в рамках стандартного использования. Но хотелось большего.... Сейчас понимаю, что мои хотелки выходят за рамки идеологии MSD, соответственно штатно не решаемы- нужны костыли