OSX Kext wird nicht ordnungsgemäß freigegeben

Ich habe einen Gerätetreiber-Text für ein Hot-Plug-SCSI-Gerät geschrieben, der etwas auf basiertWagerlabs-Code (unter Verwendung eines Treiber-Benutzer-Client-Anwendungsmodells) und alles funktioniert. Die einzige verbleibende Sorge ist, dass der Treiber anscheinend nicht konsistent freigegeben wird, insbesondere wenn die Anwendung abstürzt. Wenn ich beispielsweise versuche, den Kext zu entladen, obwohl das Gerät nicht angeschlossen und die Anwendung geschlossen ist, sind immer noch Instanzen des Treibers und des Benutzerclients ausstehend (wobei der Treiber im Allgemeinen die Nummer des Benutzerclients übertrifft).

Ich habe die Treiberfunktionen wie eingeloggtfree()und wenn ich den Computer herunterfahre, kann ich sehen, dass diese ausgeführt werden, so dass die Instanzen offensichtlich noch beendet werden können. Was ist der "richtige" Weg, um sicherzustellen, dass die Treiberinstanz beendet und freigegeben wird, selbst wenn die Host-Anwendung abstürzt, nicht ordnungsgemäß beendet wird oder die Dinge im Allgemeinen nicht nach Plan verlaufen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage