0

私は新しいカーネル プログラミングです。このドライバー プログラムを 3 日間ロードしようとしています。

このkextファイルをロードするために非常に多くのコマンドを使用しましたが、毎回問題が発生します

ターミナル。どなたか助けてください。

ensiss-Mac-mini:~ ensis$ sudo su

sh-3.2# chown -R root:wheel /System/Library/Extensions/Driver.kext

sh-3.2# kextutil -n -t /System/Library/Extensions/Driver.kext カーネル ファイルが指定されていません。

リンクのために実行中のカーネルを使用します。

/System/Library/Extensions/Driver.kext が無効です。依存関係を解決できません。

/System/Library/Extensions/Driver.kext が無効です。依存関係を解決できません。

/System/Library/Extensions/Driver.kext が無効です。依存関係を解決できません。

/System/Library/Extensions/Driver.kext の診断:

検証の失敗:

Info dictionary missing required property/value: 

    IOKitPersonalities.Driver.IOClass

警告:

Personality has no CFBundleIdentifier; the kext's identifier will be inserted when 

IOCatalog への送信:

    Driver

上記のプログラムを解決する方法

更新: Info.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "apple.com/DTDs/PropertyList-1.0.dtd">;
<plist version="1.0">
  <dict>
    <key>Driver</key>
    <dict>
      <key>CFBundleIdentifier </key>
       <string>com.Driver.${PRODUCT_NAME:rfc1034identifier}</string>
      <key>IOClass </key>
       <string>com_osxkernel_driver_Driver</string>
      <key>IOMatchCategory </key>
       <string>com_osxkernel_driver_Driver</string>
      <key>IOProviderClass</key>
       <string>IOResources</string>
      <key>IOResourceMatch </key>
       <string>IOKit</string>
    </dict>
  </dict>
</plist>


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "apple.com/DTDs/PropertyList-1.0.dtd">;
<plist version="1.0">
  <dict>
    <key>com.apple.kpi.iokit </key>
     <string>11.3.0</string>
    <key>com.apple.kpi.libkern </key>
     <string>11.3.0</string>
  </dict>
</plist>
4

1 に答える 1

1

手がかりはここにあります:

「情報辞書に必要なプロパティ/値がありません: IOKitPersonalities.Driver.IOClass」

これは、ドライバーのパーソナリティの説明にクラスの仕様がないため、Info.plist が正しくないことを意味します。

Apple のXcodeチュートリアルを使用したデバイス ドライバーの作成を実行しましたか? 情報プロパティ リストの編集セクションでは、これについて最低限知っておく必要があることについて説明します。ドライバーとデバイスのマッチングに関するドキュメントで、より詳細に説明されています。

アップデート:

info.plist の形式が完全に間違っています。必要な階層については、上でリンクしたチュートリアルのこのスクリーンショットを見てください。I/O Kit Driver の XCode プロジェクト テンプレートは、info.plist の適切な開始点を生成します。提供されたものを削除せず、拡張するだけです。

Apple のドキュメントとサンプル コードの一部をよく読んで、最近リリースされた Halvorsen の本とそのサンプル コード (ソース コード/ダウンロード タブ)を入手することを強くお勧めします。(開示: 私はこの本のレビュアーの 1 人でした。私は使用料や、この本を推薦するためのその他のインセンティブを受け取っていません。これは、このテーマに関する唯一の最新の本です)

カーネル プログラミングは決して簡単ではないため、何が行われているのかを理解することが重要です。

于 2012-03-19T11:31:25.053 に答える