Jump to content

    
Sign in to follow this  
Intel4004

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

Recommended Posts

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

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

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

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

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

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

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

Share this post


Link to post
Share on other sites
29 minutes ago, Intel4004 said:

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

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

Share this post


Link to post
Share on other sites
48 minutes ago, aaarrr said:

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

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

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

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

Edited by Intel4004

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites
9 minutes ago, Intel4004 said:

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

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

Share this post


Link to post
Share on other sites
On 9/24/2020 at 2:06 PM, Intel4004 said:

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this