|
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] |
| Madhava, I should clarify my previous answer. Let's start with the driver that you had prior to implementing the codeless kext modification. As such, you had a single personaility which IOKit would see and use to match to your device. To acheive your desired results, you want to create a second IOKit personality - which also has the same (or better) match criteria for your device, but which presents the entries as shown in the sample "NewInterfaceDetected" sample codeless kext. For example, you will want the plist to like below. When IOKit sees these personalities, the resulting probe score will be 90000 for both entries (both the VID/PID match). Since they both match, the probe methods for the 2 referenced kexts will be called - com_UsbEnetAdapter:: probe AppleUSBMergeNub::probe The AppleUSBMergeNub probe function is such that it will always fail, but the probe method is designed to detect properties present in the IOProviderMergeProperties dictionary and register them with the associated node (the USB device node in this case). This means that the property "New Interface Detected Action" will be associated with the device node. Later, when the SystemConfigurator detects the new network device, it will scan the IORegistry node of the device, detect this property and know not to present the "New Device Detected" dialog. Keep in mind that if you ever increase the probe score matching criteria for the real driver personality, you must also increase the probe score matching criteria for the AppleUSBMergeNub personality. If the probe score for the AppleUSBMergeNub personality is less than that for the driver personality, the mergenub::probe method will not be called. As to checking whether the mergenub was matched. 0. with the device not connected - 1. Install the IOUSBFamily log release which matches to your version of Mac OS X 2. Launch USB Prober /Developer/Applications/Utilities/USB Prober.app. 3. In USB Prober, click on the USB Logger tab, set the "Level" popup to 6. 4. In the "Filter Output" field, enter "match" press the return key 5. Press the "Start" button - USB Prober will now begin collecting log messages at level 6 or above. 6. Attach your device. 7. Look at the beginning of the log messages for a matching personality using "com.apple.driver.AppleUSBMergeNub" the score should be 90000. There will also be a matching entry using "com.UsbEnetAdapter". 8. Note the time stamp associated with the AppleUSBMergeNub match. 9. In the "Filter Output" field delete the string "match". You will now see all of the log entries captured by USB Prober 10. scroll down to the time stamp of the AppleUSBMergeNub match. 11. You should see a message much like AppleUSBMergeNub[0x12345678]::MergeDictionaryIntoProvider merging "New Interface Detected Action" Best wishes. rich kubota <key>IOKitPersonalities</key> <dict> <key>BCS200</key> <dict> <key>CFBundleIdentifier</key> <string>com.UsbEnetAdapter</string> <key>IOClass</key> <string>com_UsbEnetAdapter</string> <key>IOProviderClass</key> <string>IOUSBDevice</string> <key>idProduct</key> <integer>0x768</integer> <key>idVendor</key> <integer>0x6543</integer> </dict> <key>BCS200MergeProperty</key> <dict> <key>CFBundleIdentifier</key> <string>com.apple.driver.AppleUSBMergeNub</string> <key>IOClass</key> <string>AppleUSBMergeNub</string> <key>IOProviderClass</key> <string>IOUSBDevice</string> <key>IOProviderMergeProperties</key> <dict> <key>New Interface Detected Action</key> <string>None</string> </dict> <key>idProduct</key> <integer>0x768</integer> <key>idVendor</key> <integer>0x6543</integer> </dict> On Jan 22, 2010, at 1:42 AM, siddareddy madhava reddy wrote:
|