Запоминающее устройство USB: изменения данных на стороне устройства не видны в файловой системе ПК - PullRequest
1 голос
/ 21 июля 2011

информация об использовании: USB используется в качестве устройства хранения данных.Само устройство является интеллектуальным компонентом и может создавать файлы во время выполнения.

зачем тогда использовать хранилище?Так как я не хотел разрабатывать USB DD для разных платформ для передачи данных.Существующий универсальный драйвер запоминающего устройства можно использовать для связи между ПК и устройством

Проблема: Когда мое устройство подключено к ПК, оно обнаруживается как отдельный диск и отображается в файловой системе.Теперь, если я создаю файл на стороне устройства, память видима для ПК, она не отражается на файловой системе ПК.Обновленные данные видны только после того, как я выполню программный сброс своего USB-устройства или подключу и подключу свое устройство, так как перечисление устройства будет происходить снова с самого начала.

Вопрос: Почему измененные данные в памяти устройства не видны на ПК?Есть ли какой-нибудь метод в нижнем слое USB, с помощью которого я могу отправить команду на ПК для повторного перечисления устройств?

Ответы [ 3 ]

0 голосов
/ 23 июля 2011

Я решил эту проблему, указав носитель как «съемный» на нижнем уровне протокола SCSI.Когда устройство изменяет файловую систему, оно в течение нескольких секунд сообщает о состоянии носителя как «удаленном».Windows (и Linux тоже IMO) проверяет состояние носителя примерно раз в секунду и показывает, что носитель удален.

Как только вы снова сделаете носитель доступным, ОС перечитает файловую систему с вашимизменения.Вы не хотите делать это слишком часто, потому что это также вызовет раздражающие диалоги автозапуска.

0 голосов
/ 13 августа 2018

Лучший способ сделать это - с помощью ответа команды test unit ready (TUR) и ответа команды request sense. Windows будет отправлять команды готовности тестового устройства примерно раз в секунду, когда носитель находится в режиме ожидания. Когда вы закончите редактирование файла, пометьте следующий ответ TUR как неудачный (0x01), после чего хост выдаст команду «Запросить смысл», на которую вы должны ответить «внимание устройства» (0x06). Затем выполните следующий ответ на команду тестового устройства (0x00). Это приведет к тому, что Windows сделает недействительным файловый кеш, и будет заново загружать память.

0 голосов
/ 21 июля 2011

Это довольно предсказуемо, хост, скорее всего, кэширует структуру файловой системы, так как не ожидает, что она будет изменена извне. Возможно, вы захотите попробовать сделать носитель «съемным», а затем проинформировать хозяина об удалении / вставке, но я подозреваю, что это может раздражать ОС (если носитель не только для чтения), а также ваших пользователей. Это, вероятно, будет немного менее травмирующим, чем само устройство, перезагружающее.

...