Programmatisch "ein USB-Gerät ausstecken und umstecken", um neue Treiber in OS X zu laden?

9

Ich arbeite an einem Installationsprogramm in OS X, das einen IOKit-Treiber für ein USB-Gerät installiert, und ich versuche, dafür zu sorgen, dass am Ende kein Neustart erforderlich ist. Das Installationsprogramm installiert den Treiber korrekt und baut den Kext-Cache neu auf. Wenn ich das USB-Gerät aus der Steckdose ziehe und es wieder einstecke, lädt es den neuen Treiber korrekt und alles funktioniert einwandfrei.

Ich möchte jedoch nicht verlangen, dass der Benutzer das Gerät physisch trennt, damit der neue Treiber geladen werden kann. Es muss eine Möglichkeit geben, OS X dazu zu bringen, den neuen Treiber programmatisch zu laden - im Prinzip simulieren Sie, dass das Gerät ausgesteckt und wieder angeschlossen wird, oder etwas Ähnliches. Wie würde ich das machen? Bisher haben Stunden des Googelns nichts ergeben, daher wird jede Hilfe sehr geschätzt werden!

    
GuyGizmo 08.10.2012, 17:52
quelle

2 Antworten

2

IOUSBDeviceInterface187 :: USBDeviceReEnumerate () wird tun, was Sie wollen. Die einzige Schwierigkeit besteht darin, alle interessierenden Geräte zu finden und diese manuell mit IOServiceGetMatchingServices() aufzurufen.

%Vor%

Suchen Sie in IOKit / usb / IOUSBLib.h

    
Ted Middleton 13.10.2015, 17:16
quelle
1

Sehen Sie sich diskutil und insbesondere die Optionen mount und unmount an. Diese werden Geräte softwaremäßig auswerfen und bereitstellen. Sie können diskutil list verwenden, um eine Liste aller derzeit geladenen Geräte zu erhalten. Wenn Sie weitere Informationen zu diskutil benötigen, schauen Sie sich einfach die man-Seite an.

    
rien333 08.10.2012 18:56
quelle

Tags und Links