2017-05-08 14 views
0

init、probe、startのいずれも呼び出されません。私は "PE_enter_debugger"をそれぞれの冒頭に配置しましたが、テストマシンはデバッガには入りません。カーネル拡張がロードされますが実行されません。

カーネル拡張機能をkextutilまたはkextloadでロードすることができます。これはkextstatに少し出ますが、消えます。カーネルの一部をアンロードしました。

$ kextstat | grep MY 
155 0 0xffffff7f82940000 0x2000  0x2000  com.mydomain.MY2000 (1) 420AB8E0-E204-3992-90D8-A55A488448E4 <133 4 3> 

私はそれをアンロードするためにkextunloadを使用できます。 2回目にkextunloadを使用すると、カーネル拡張が見つからないという不満があります。

kextのすべてのファイルとディレクトリは、group wheelを持つrootによって所有されています。

kextutil -tnは問題ありません。

システムインテグリティ保護が無効になっており、デバッグモードが有効になっているため、2つのマシンデバッガを使用できます。私はPE_enter_debugger()を呼び出す2つの他のカーネル拡張があり、それらは機能します。

MY2000は複合USBデバイスです。これは最終的にMY2000の4つのインタフェースのうちの3つのインタフェースのドライバになることを意図しています。 4番目のインターフェイスは、Windowsドライバインストーラを持つ小さなストレージボリュームです。

私のInfo.plistでは、私は3つの異なるIOProviderクラス、USBHostDevice、USBHostInterface、AppleUSBHostCompositeDeviceを試しました。

(Appleは以前、彼らはUSBDeviceとUSBインタフェースた、私が思うエルキャピタンにそのクラスのいくつかの名前を変更しました。)

<?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>en</string> 
    <key>CFBundleExecutable</key> 
    <string>$(EXECUTABLE_NAME)</string> 
    <key>CFBundleIdentifier</key> 
    <string>com.mydomain.MY2000</string> 
    <key>CFBundleInfoDictionaryVersion</key> 
    <string>6.0</string> 
    <key>CFBundleName</key> 
    <string>$(PRODUCT_NAME)</string> 
    <key>CFBundlePackageType</key> 
    <string>KEXT</string> 
    <key>CFBundleShortVersionString</key> 
    <string>1.0</string> 
    <key>CFBundleVersion</key> 
    <string>1</string> 
    <key>IOKitPersonalities</key> 
    <dict> 
     <key>MY2000</key> 
     <dict> 
      <key>IOKitDebug</key> 
      <integer>65535</integer> 
      <key>IOClass</key> 
      <string>com_mydomain_MY2000</string> 
      <key>CFBundleIdentifier</key> 
      <string>com.mydomain.MY2000</string> 
      <key>IOProviderClass</key> 
      <string>AppleUSBHostCompositeDevice</string> 
      <key>IOMatchCategory</key> 
      <string>com_mydomain_MY2000</string> 
      <key>idVendor</key> 
      <string>0x1234</string> 
      <key>idProduct</key> 
      <string>0x2000</string> 
      <key>bInterfaceClass</key> 
      <string>0x10</string> 
      <key>bInterfaceSubclass</key> 
      <string>0x0</string> 
      <key>bInterfaceProtocol</key> 
      <string>0x0</string> 
     </dict> 
    </dict> 
    <key>NSHumanReadableCopyright</key> 
    <string>Copyright © 2017 My Company. All rights reserved.</string> 
    <key>OSBundleLibraries</key> 
    <dict> 
     <key>com.doequalsglory.driver.IOProxyFramebuffer</key> 
     <string>1.0.0d1</string> 
     <key>com.apple.kpi.iokit</key> 
     <string>16.5</string> 
     <key>com.apple.kpi.libkern</key> 
     <string>16.5</string> 
    </dict> 
</dict> 
</plist> 

あなたは私を与えることができます任意の助けてくれてありがとう。

答えて

1

のInfo.plistがあります

 <key>idVendor</key> 
     <string>0x1234</string> 
     <key>idProduct</key> 
     <string>0x2000</string> 

"string" は数にデフォルトの文字列型を変更し、 "整数" プロパティリストエディタで

 <key>idVendor</key> 
     <integer>1234</integer> 
     <key>idProduct</key> 
     <integer>29193</integer> 

でなければなりません。

FACEPALM。

私は飲んでコードを書くべきではありません。

関連する問題