Когда USB-устройство извлекается с использованием графического интерфейса в Finder, что именно происходит на низком уровне? Есть ли определенные сигналы, отправленные на устройство?
Причина, по которой я спрашиваю, заключается в том, что я пытаюсь эмулировать ручное извлечение устройства, добавляя и удаляя модуль хранения файлов через консоль устройства под управлением встроенного Linux. Простое удаление модуля прекрасно работает на ПК, но Mac выдает ошибку "не правильно извлечен", а ядро Linux "паникует" и получает ошибку нулевого указателя ядра.
Вот дополнительная информация:
Я использую USB-устройство Gumstix COM под управлением Linux. Устройство подключено к хосту (Windows или Mac), и я эмулирую его физическое удаление, удаляя модуль запоминающего устройства в ядре Linux устройства, таким образом, хост больше не видит его как устройство хранения. Я делаю это с помощью modprobe -r g_file_storage
.
Это работает без проблем в Windows. Это не работает на Mac, потому что я получаю сообщение об ошибке на хосте Mac, говорящее о том, что устройство было извлечено неправильно. Это вызывает ошибку нулевого указателя в ядре Linux устройства и вызывает панику.
Это наводит меня на мысль, что есть кое-что, что делает ТОЛЬКО Mac при правильном извлечении USB-устройства, которое мне нужно эмулировать в моем скрипте на устройстве.
По сути, я хочу знать, нужно ли мне выполнять некоторую обработку сигнала или что-то на устройстве, чтобы должным образом эмулировать выброс на хостах Mac.