Перейти к содержанию
    

USB MSC. Запрос на извлечение со стороны устройства.

Исходные данные:

Есть устройство, имеющее на борту флешку и USB. Естессно эта флешка отдается наружу как USB mass storage.

Все прекрасно работает, но только до тех пока пока устройству не захочется что-то записать на эту флешку в тот момент, когда оно(устройство) подключено к компьютеру по USB.

Пока что я реализовал костыль: принудительно вырубаю USB перед записью во флешку. В результате регулярно при следующем подключении винда мне сообщает, что устройство было извлечено некорректно.

Так вот, вопрос: есть ли какая-нибудь возможность со стороны USB устройства сообщить хосту, что устройство хочет отключиться? Чтобы винда сбросила кеш и корректно размонтировала диск?

Я понимаю, что в рамках MSC это невозможно. Но может быть есть какие-нибудь другие способы?

Если что - свободных эндпоинтов на устройстве хватает, реализовать еще один USB-класс - не проблема.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

29 minutes ago, Intel4004 said:

Чтобы винда сбросила кеш и корректно размонтировала диск?

По умолчанию она вроде и так не буферизирует запись на сменные носители. А "размонтировать" можно и со стороны устройства.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

48 minutes ago, aaarrr said:

А "размонтировать" можно и со стороны устройства.

В смысле после принудительного дисконнекта сбросить на диске флаг "не размонтировано" (или как он там называется)?

Так ведь это тоже костыль. Причем второго уровня, поверх первого.

Винда на этот флаг хотя-бы чекдиск запускает...

Изменено пользователем Intel4004

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пока добавлю задержку перед дисконнектом, пока не пройдет секунда с последней записи по MSC.

Тоже костыль, тоже второго уровня, но по крайней мере может спасти от воплей современной винды "устройство было извлечено некорректно, надо проверить".

Только вот еще регулярно встречаются древние виндовс (2000, xp) в которых, ЕМНИП, флешка кешируется...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 minutes ago, Intel4004 said:

Только вот еще регулярно встречаются древние виндовс (2000, xp) в которых, ЕМНИП, флешка кешируется...

Не кэшируется буферизируется, нужно было отдельно включать. Была там переключалка, что-то типа "производительность или быстрое извлечение".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 9/24/2020 at 2:06 PM, Intel4004 said:

Пока добавлю задержку перед дисконнектом, пока не пройдет секунда с последней записи по MSC.

Сделал. Стресстесты еще недельку погоняю, но вроде работает, винда больше не возмущается.

Но если у кого-нибудь через сколь угодно долгое время возникнет идея как решить эту проблему красиво, без костылей - приму эту идею с благодарностью.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...