เมื่ออุปกรณ์ USB ถูกดีดออกโดยใช้ GUI ใน Finder จะเกิดอะไรขึ้นในระดับต่ำอย่างแน่นอน มีสัญญาณบางอย่างที่ส่งไปยังอุปกรณ์หรือไม่?
เหตุผลที่ฉันถามคือเพราะฉันพยายามเลียนแบบการดีดออกด้วยตนเองของอุปกรณ์โดยการเพิ่มและลบโมดูลการจัดเก็บไฟล์ผ่านคอนโซลของอุปกรณ์ที่ใช้ลีนุกซ์แบบฝัง เพิ่งลบโมดูลทำงานได้ดีบนพีซี แต่ Mac ให้ฉันข้อผิดพลาด "ไม่ถูกขับออกมาอย่างถูกต้อง" และ Linux kernel "panics" และได้รับข้อผิดพลาดเคอร์เนล null ตัวชี้
นี่คือข้อมูลเพิ่มเติมบางส่วน:
ฉันใช้อุปกรณ์ USB Gumstix COM ที่ใช้งาน Linux ในตัว อุปกรณ์ถูกเสียบเข้ากับโฮสต์ (Windows หรือ Mac) และฉันเลียนแบบการเอาออกทางกายภาพโดยการถอดโมดูลหน่วยเก็บข้อมูลขนาดใหญ่ในเคอร์เนล Linux ของอุปกรณ์จึงทำให้โฮสต์ไม่เห็นว่าเป็นอุปกรณ์เก็บข้อมูลอีกต่อไป modprobe -r g_file_storage
ที่ผมทำสำเร็จนี้กับ
สิ่งนี้ทำงานได้โดยไม่มีปัญหาบน Windows มันไม่ทำงานบน Mac เพราะฉันได้รับข้อผิดพลาดบนโฮสต์ Mac บอกว่าอุปกรณ์ไม่ได้ถูกผลักออกมาอย่างถูกต้อง สิ่งนี้ทำให้เกิดข้อผิดพลาดตัวชี้โมฆะในเคอร์เนล Linux ของอุปกรณ์และทำให้เกิดข้อผิดพลาด
สิ่งนี้ทำให้ฉันเชื่อว่ามีบางสิ่งที่ Mac ทำเฉพาะเมื่อนำอุปกรณ์ USB ออกอย่างถูกต้องซึ่งฉันต้องทำการลอกเลียนแบบในสคริปต์ของฉันบนอุปกรณ์
โดยทั่วไปฉันต้องการทราบว่าฉันต้องทำการจัดการสัญญาณบางอย่างหรือบางอย่างบนอุปกรณ์เพื่อเลียนแบบการดีดออกบนโฮสต์ Mac
if ((device.LogicalDrive == null) || (device.LogicalDrive.Length == 0)) continue; device.Eject(true);
ดังนั้นฉันคิดว่าคุณแค่ต้องหา PnP manager สำหรับโฮสต์ของคุณ