我为USB CDC设备创建了一个无代码kext,以防止它在网络设置中列出 .

根据kextutil,kext是有效的(除了警告它是自签名的) .

当我用kextutil加载它时,日志文件显示有关kext无效签名的警告 .

现在我想验证,无论何时插入我的设备,它都已正确加载和使用 . 为此,我将IOKitDebug设置为最大值(65535) . 我在控制台中看到的唯一输出是:

02/09/14 14:57:59,000 kernel[0]: AppleUSBCDCACMData: Version number - 4.2.1b5, Input buffers 8, Output buffers 16
02/09/14 14:57:59,000 kernel[0]: AppleUSBCDC: Version number - 4.2.1b5

没有引用我的kext(com.foo.my-device.kext) .

下面的Info.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleDevelopmentRegion</key>
    <string>English</string>
    <key>CFBundleIdentifier</key>
    <string>com.foo.my-device.kext</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>SerialHelper</string>
    <key>CFBundlePackageType</key>
    <string>KEXT</string>
    <key>CFBundleShortVersionString</key>
    <string>1.0</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleVersion</key>
    <string>1</string>
    <key>IOKitPersonalities</key>
    <dict>
        <key>MSP Tools Driver</key>
        <dict>
            <key>IOKitDebug</key>
            <integer>65535</integer>
            <key>CFBundleIdentifier</key>
            <string>com.apple.driver.AppleUSBCDC</string>
            <key>IOClass</key>
            <string>AppleUSBCDC</string>
            <key>IOProviderClass</key>
            <string>IOUSBDevice</string>
            <key>IOProviderMergeProperties</key>
            <dict>
                <key>HiddenPort</key>
                <string>1</string>
            </dict>
            <key>idProduct</key>
            <integer>YYYYY</integer>
            <key>idVendor</key>
            <integer>XXXXX</integer>
        </dict>
    </dict>
    <key>OSBundleRequired</key>
    <string>Root</string>
</dict>
</plist>