2

IOSCSIPeripheralDeviceType05論理ユニットドライバーからサブクラス化された、Mac用にカスタマイズされたマスストレージカーネル拡張機能を作成しています。合格した.kextファイルをコンパイルするところまで来ましたがkextutil -n -t ...、テスト用にロードできません。

.plistにゼロ以外のIOKitDebugフィールドがあり、GetDeviceConfiguration次のようになります。

IOReturn
com_MyCompany_driver_MyDriver::GetDeviceConfiguration( void )
{
    IOLog( "MyDriver overriding GetConfiguration\n" );

    return super::GetDeviceConfiguration();
}

ただし、にコピーして/System/Library/Extensions/実行するとkextutil /System/Library/Extension/MyDriver.kext、何も起こらず、に何も表示されません/var/log/system.log

この.kextをロードしてデバッグできるようにするにはどうすればよいですか?

4

1 に答える 1

2

まず、拡張機能を開発している間は/SLEに入れないでください。拡張機能が自動的に読み込まれる可能性があるため、問題が発生します。これにより、システムが起動できなくなる可能性があります。たとえば、にコピーして、そこからロードするために/tmp/使用します。kextutil

com_MyCompany_driver_MyDriver::init()次に、最初に呼び出されるので、デバッグ出力を入力します。

第三に、問題はデバイスのマッチングである可能性があります。kextのロード時にデバイスが既存のドライバーとすでに一致している場合、デバイスは考慮されません。デバイスをホットプラグできず、ロードする前に既存のドライバーをアンロードできない場合は、ブート時にロードするためにSLEにkextをインストールする必要があります。それでもマッチングの問題が発生する場合は、マッチングしようとしているデバイスの詳細(ioreg / IORegistryExplorer出力)と、info.plistからのマッチング辞書を投稿してください。

于 2012-09-01T10:09:08.327 に答える