Décharger kext qui a encore des instances
Je suis à jour le pilote de l'un de mes appareils et voudrais kextunload de l'ancien pilote et kextload la nouvelle, donc un redémarrage n'est pas nécessaire de plus.
Après l'installation, j'ai essayer:
sudo kextunload /System/Library/Extensions/Driver.kext
L'erreur qui se produit ressemble à ceci:
(noyau) ne Peut pas décharger kext com.le pilote.Pilote; les classes ont des instances:
(noyau) Kext com.le pilote.La classe du pilote com_driver_Driver_USBAudioDevice a 1 par exemple.
Pas réussi à décharger com.le pilote.Conducteur (libkern/kext) kext est en cours d'utilisation ou conservés (ne peut pas décharger).
Le périphérique n'est pas présent dans ioreg.
Comment puis-je savoir ce que cette instance est ce qui m'empêche de décharger le pilote?
OriginalL'auteur Hedge | 2013-06-27
Vous devez vous connecter pour publier un commentaire.
Si vous appelez la commande kextstat, il affichera une liste de tous les chargés extensions de noyau avec des infos comme celle-ci:-
Le premier nombre (115) est l'id de l'extension du noyau.
À la fin, l'ensemble des nombres <114 5 4 3 1> sont les autres l'extension du noyau id qui sont référencés par ce kext.
Si vous correspondre à l'id de votre kext pour tout ceux qui sont énumérés dans l'autre, alors que c'est une référence qui kextunload fait référence.
Également noter que lors de l'écriture du code dans le noyau, variables globales les variables sont globales sur l'ensemble du noyau, donc si vous avez déclaré n'importe qui ne peut pas avoir un nom unique, et est utilisé par un autre kext, j'ai trouvé ceci à cause d'un problème similaire. La solution ici est de faire précéder toute globals avec une inversion de la société URI (par exemple com_apple_globalVarName).
De mon expérience, je dirais que vous auriez besoin de le faire, comme je ne connais pas d'autre moyen pour résoudre ce problème. Si vous avez fait l'erreur de mondial de revendeurs à valeur ajoutée qui ne sont pas uniques, je vous suggère de simplement la réinitialisation de la machine que vous avez peu de chances de savoir quels autres kext est à l'origine du problème.
Ce n'est pas mon permis et je ne peux pas le changer.
Ah, je pensais que vous l'auriez appelé "MyDriver.kext"!
J'ai changé dans le post de claire, une certaine confusion. Désolé à ce sujet.
OriginalL'auteur TheDarkKnight