Je développe une extension de noyau OS X (kext) qui sera utilisée comme pilote de kit d'E/S. Ce pilote, cependant, sera strictement "virtuel"; il n'interfèrera avec aucun matériel.Accès aux objets de classe de catalogue d'E/S
OS X conserve un catalogue (catalogue d'E/S) de tous les pilotes chargés dans le noyau. Il conserve également un registre (Registre d'E/S) contenant les pilotes de catalogue d'E/S qui ont été associés à un périphérique matériel et qui contrôlent actuellement le matériel.
Étant donné que mon pilote ne dépend pas du matériel et ne correspond pas, il est uniquement chargé dans le catalogue d'E/S et non enregistré dans le registre d'E/S. Cela provoque un problème, car l'API pour obtenir des objets de pilote d'E/S est limitée aux pilotes qui sont enregistrés dans le Registre d'E/S et n'accède pas aux objets dans le catalogue d'E/S. J'ai essayé matching to my driver using the recommended APIs, cependant, comme je l'ai déjà mentionné, ces API n'exposent pas les entrées du catalogue d'E/S.
Mon but ultime est d'obtenir une référence à mon driver afin de transfer in data with the "setProperties" method. Si tout le reste échoue, je can use a combination of syscall, copyin and copyout pour transférer les données dans et hors du pilote, mais je ne suis pas intéressé par cette solution pour le moment. En bref: existe-t-il un moyen d'obtenir une référence à un pilote figurant dans le catalogue d'E/S mais et non dans le registre d'E/S?
Mise à jour: Observer ce que je veux dire, regardez les deux captures d'écran suivantes de IORegistryExplorer:
Le pilote enregistré est facilement accessible through the API , mais le pilote non enregistré ne correspondra pas en utilisant IOServiceGetMatchingServices (...). Comment obtenir une référence à un pilote chargé qui n'est pas enregistré?
Pour plus d'informations, consultez:
J'ai mis à jour la question pour répondre à votre réponse. Le pilote se charge correctement, mais il ne sera pas enregistré dans le registre d'E/S. Le plist contient déjà une entrée pour "IOResourceMatch" pour correspondre avec "IOKit" exactement comme le pilote Dont_Steal_Mac_OS_X. – mpiche