реклама на сайте
подробности

 
 
> Windows: отключить кэширование чтения для USB MSD, или (еще лучше) заставить периодически обновлять кэш (делать рефреш)
Ruslan1
сообщение Sep 3 2012, 20:11
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Здравствуйте!
Собрал устройство, которое со стороны винды видно как USB Mass Storage Device.

Некоторые изменяемые данные видны со стороны Винды тоже как файлы (ну, например, текущее время контроллера).
Проблема в том, что однажды прочитав такой диск, винда больше вообще к нему не обращается (то есть не пытается читать секторы). Как результат- хотя файл обновляется (и его содержимое, и информация в соответствующем ему RootDir секторе), винда продолжает показывть старый файл из кэша диска.

Как-то с этим можно бороться? Еужно либо полностью отключить кэширование (чтобы все шло напрямую к диску), либо сделать принудительное обновление содержимого кэша, скажем, 1 раз в секунду.

Насколько я понял после недолгого гугления, проблема эта существует:
http://www.experts-exchange.com/Storage/Misc/Q_27825263.html
http://www.embeddedrelated.com/groups/lpc2000/show/49476.php

на уровне написания своего софта проблема (вроде бы!) решаема:
http://msdn.microsoft.com/en-us/library/aa...8(v=vs.85).aspx

Но вот так ли это? И нет ли каких-то вариантов инициировать обновление кэше со стороны USB MSD устройства, например, выдавая кучу ошибок в ответ на запросы Винды?
Или кто-то уже писал софт, позволяющий достучаться до секторов на USB MSD, минуя кэш? то есть специальная программка, делающая все нужное для обновления кэша?

Крайний вариант- это обрубить USB, тогда устройство переподключится, но в винде это сопровождается кучей визуальных эффектов sad.gif

Пока что штатно нашел в винде включение-отключение кэширования записи, но про кэширования чтения видимо не подумали. sad.gif

Помогите, пожалуйста. Кто чем может.....
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Ruslan1
сообщение Sep 4 2012, 13:16
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Upd:
Скажу больше: запись файла тоже ни к чему физическому не приводит. ничего не перечитывается.
Пример: записываю файл на "диск". Фактически файл никуда не записывается, в USB стоит заглушка "при записи секторов отвечать TRUE". Результат- винда показывает мне "диск" с "записанным" файлом. То есть фактически этого файла нет ни в служебных секторах FAT, ни, разумеется, в области данных, но для драйвера винды достаточно полученного "TRUE" от USB, не тратит сил даже на перечитывание каталога с диска, все крутится в кэше. (кэширование записи на диск в свойствах диска я отключил, но тут именно в кэшированном чтении проблема).
Мда.
Go to the top of the page
 
+Quote Post
SBE
сообщение Sep 5 2012, 16:38
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 108
Регистрация: 8-09-05
Пользователь №: 8 384



Неоднократно обсуждалось здесь, поищите.
Кеширование не при чем.
USB Mass Storage Device оперирует на уровне секторов, и ничего не знает о файловой системе. Когда и в каком порядке ОС записывает и считывает сектора этой файловой системы, это ее дело. Попытки одновременно работать с носителем как со стороны РС через USB MSD и со стороны устройства, ни к чему кроме развала ФС не приведут.
Неоднократно наблюдал "фантомное" поведение ФС на разных устройствах при одновременном доступе через MSD.

Как верно заметили, обновить файловую систему можно только перемонтировав диск.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 23:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.03323 секунд с 7
ELECTRONIX ©2004-2016