Pergunta

Tento implementar KEXT para dispositivos USBHID.Se estou verificando no Terminal, ele consegue carregar o KEXT, ou seja,
Newtok: Desktop Rasheed $ kextutil -nt SampleKextDriver.kext Nenhum arquivo de kernel especificado;usando kernel em execução para vinculação. SampleKextDriver.kext parece ser carregável (incluindo ligação para bibliotecas em disco).
Mas, infelizmente, recebi a mensagem acima.Meu arquivo 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>CFBundleExecutable</key>
            <string>SampleKextDriver</string>
            <key>CFBundleIconFile</key>
            <string></string>
            <key>CFBundleIdentifier</key>
            <string>com.apple.dts.driver.SampleKextDriver</string>
            <key>CFBundleInfoDictionaryVersion</key>
            <string>6.0</string>
            <key>CFBundleName</key>
            <string>Mustahfa</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>Device Driver</key>
                <dict>            
                    <key>bConfigurationValue</key>
                    <integer>1</integer>
                    <key>bInterfaceNumber</key>
                    <integer>0</integer>
                    <key>CFBundleIdentifier</key>
                    <string>com.apple.dts.driver.SampleKextDriver</string>
                    <key>IOMatchingCategory</key>
                    <string>com_apple_dts_driver_SampleKextDriver</string>
                    <key>IOProviderClass</key>
                    <string>IOUSBDevice</string>
                    <key>idProduct</key>
                    <integer>4389</integer>
                    <key>idVendor</key>
                    <integer>8192</integer>
                    <key>IOClass</key>
                    <string>IOService</string>
                    <key>IOProviderClass</key>
                    <string>IOUSBInterface</string>
                </dict>
            </dict>
            <key>OSBundleLibraries</key>
            <dict>
                <key>com.apple.iokit.IOHIDFamily</key>
                <string>1.6.4</string>
                <key>com.apple.kpi.iokit</key>
                <string>10.7</string>
                <key>com.apple.kpi.libkern</key>
                <string>10.7</string>
            </dict>
        </dict>
        </plist>

Não sei onde errou, não tenho muita experiência no desenvolvimento do Mac OS X.Alguém pode sugerir os melhores documentos ou alguma ideia

Obrigado pela sua informação ...

Foi útil?

Solução

1.U não deve usar a opção -n ao carregar seu kext.
A opção -n para kextutil parece usada para gerar apenas o arquivo de símbolo.
A opção -t para kextutil imprime o motivo da falha quando ocorre o erro.
Para obter mais detalhes sobre kextutil , você deve digitar man kextutil no Terminal .

2.Eu sugiro que você abra o Terminal e digite os comandos a seguir para determinar a versão dos Kexts dos quais seu driver depende.(Claro, você deve especificar a versão mais baixa do sistema que seu driver precisa suportar.)

kextstat | grep com.apple.iokit.IOHIDFamily
kextstat | grep com.apple.kpi.iokit
kextstat | grep com.apple.kpi.libkern

em seguida, atualize o dicionário OSBundleLibraries do info.plist do driver.

3.Espero que seja útil para você.Tenha um bom dia!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top