Intel4004 2 23 сентября, 2020 Опубликовано 23 сентября, 2020 · Жалоба Исходные данные: Есть устройство, имеющее на борту флешку и USB. Естессно эта флешка отдается наружу как USB mass storage. Все прекрасно работает, но только до тех пока пока устройству не захочется что-то записать на эту флешку в тот момент, когда оно(устройство) подключено к компьютеру по USB. Пока что я реализовал костыль: принудительно вырубаю USB перед записью во флешку. В результате регулярно при следующем подключении винда мне сообщает, что устройство было извлечено некорректно. Так вот, вопрос: есть ли какая-нибудь возможность со стороны USB устройства сообщить хосту, что устройство хочет отключиться? Чтобы винда сбросила кеш и корректно размонтировала диск? Я понимаю, что в рамках MSC это невозможно. Но может быть есть какие-нибудь другие способы? Если что - свободных эндпоинтов на устройстве хватает, реализовать еще один USB-класс - не проблема. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 56 23 сентября, 2020 Опубликовано 23 сентября, 2020 · Жалоба 29 minutes ago, Intel4004 said: Чтобы винда сбросила кеш и корректно размонтировала диск? По умолчанию она вроде и так не буферизирует запись на сменные носители. А "размонтировать" можно и со стороны устройства. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Intel4004 2 23 сентября, 2020 Опубликовано 23 сентября, 2020 (изменено) · Жалоба 48 minutes ago, aaarrr said: А "размонтировать" можно и со стороны устройства. В смысле после принудительного дисконнекта сбросить на диске флаг "не размонтировано" (или как он там называется)? Так ведь это тоже костыль. Причем второго уровня, поверх первого. Винда на этот флаг хотя-бы чекдиск запускает... Изменено 23 сентября, 2020 пользователем Intel4004 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Intel4004 2 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба Пока добавлю задержку перед дисконнектом, пока не пройдет секунда с последней записи по MSC. Тоже костыль, тоже второго уровня, но по крайней мере может спасти от воплей современной винды "устройство было извлечено некорректно, надо проверить". Только вот еще регулярно встречаются древние виндовс (2000, xp) в которых, ЕМНИП, флешка кешируется... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 56 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба 9 minutes ago, Intel4004 said: Только вот еще регулярно встречаются древние виндовс (2000, xp) в которых, ЕМНИП, флешка кешируется... Не кэшируется буферизируется, нужно было отдельно включать. Была там переключалка, что-то типа "производительность или быстрое извлечение". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Intel4004 2 25 сентября, 2020 Опубликовано 25 сентября, 2020 · Жалоба On 9/24/2020 at 2:06 PM, Intel4004 said: Пока добавлю задержку перед дисконнектом, пока не пройдет секунда с последней записи по MSC. Сделал. Стресстесты еще недельку погоняю, но вроде работает, винда больше не возмущается. Но если у кого-нибудь через сколь угодно долгое время возникнет идея как решить эту проблему красиво, без костылей - приму эту идею с благодарностью. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться