I am working with a closed source SDK ( i dont have access to the source ) that talks to a USB device using the regular facilities in client land. What i'm writting is a launch daemon that holds onto a connection with that SDK for the whole time the OS is running. By doing this, it disables any other apps to connect to the device using that same SDK. I would like those other apps to still be able to connect to the device anyway as they did before my launch deamon starting being in the way. So the idea i have is to write a KEXT that can make that possible. The KEXT would be used when the hardware iterates and hopefully it could open an actual connection to the USB device but manage to make the user land SDK act normal as if it had a unique connection to the device. To do this i'm thinking of just opening the device on the kernel side and keeping tabs on what all the user land SDK's are trying to do and manage it there ( maybe with open/close ref counts and cmd queueing ).
Does any of this make sense and if so, can anyone point me in the right direction to getting this done?