0

ddk サンプル「passthru」に基づいてドライバーを開発していますが、このドライバーを win7 (x86 または x64) にロードするのに問題があります。winxp (x86 および x64) でドライバーをテストしましたが、かなりうまく動作しますが、このドライバーを win7 にロードしようとすると (F8->ドライバー署名の強制を無効にする)、失敗したように見えました。次に、ネイティブのパススルー コードを試しましたが、これも失敗しました。失敗したと思ったから

  1. Windbg から KdPrint を使用した出力が表示されません。
  2. システム イベントから有用な情報が表示されません。
  3. passthru!DriverEntry にブレークポイントを設定しましたが、DriverEntry が呼び出されていないようです。

私のWDKは7600.16385.1で、パススルーはwin7と互換性があるはずです。コマンド「build -cZ」を使用してパススルーをコンパイルします。この問題を理解するのを手伝ってくれますか、またはパススルーが win7 にロードされない理由についての手がかりを教えてください。

このドライバーは、win7 x86 チェック ビルド環境でビルドし、win7 x86 でテストしました。

解決済み: 実際にはドライバーはロードされていますが、KdPrint の出力はデフォルトで win7 に表示されません。KdPrintEx を使用してメッセージ レベルを指定するか、レジストリを変更してデバッグ メッセージを表示する必要があります。bp が失敗した理由もわかりません。

4

2 に答える 2

0

あなたの質問はかなり具体的ではありませんが、ここで特定の問題が1つあります。テスト署名を有効にしてカーネルモード署名ポリシーを無効にするには、バイナリに署名する必要があります...(WHQLテストの後、MSはドライバーのファイルにクロス署名します.cat)。これを参照してください。

見る:

64 ビット バージョンの Windows Vista およびそれ以降のバージョンの Windows の場合、カーネル モード コード署名ポリシーでは、すべてのカーネル モード コードにデジタル署名が必要です。

と:

任意の証明書によって署名されたオペレーティング システム ローダーおよびカーネル ロード ドライバー。証明書の検証は、信頼されたルート証明機関にチェーンアップする必要はありません。ただし、各ドライバー イメージ ファイルにはデジタル署名が必要です。

これらのコマンドは、任意の署名付きドライバーをロードできるようにする必要があります

bcdedit.exe -set loadoptions DDISABLE_INTEGRITY_CHECKS
bcdedit.exe -set TESTSIGNING ON

ビルド時に選択したターゲット OS については言及していません。アイスパックはそれについて言及しました。新しい NDIS 6.0 で動作させるには、実際に Windows 7にビルドする必要があります。XP (および古い NDIS バージョン) 用にビルドされたドライバーをロードするだけでは、まったく機能しない場合があります。

私の提案は、DDKBUILD.CMDを使用して、(フリー ビルド、W7) で 1 つのドライバーをビルドすることです。

ddkbuild.cmd -W7 fre . -cZ

および(フリービルド、WXP)を備えたもの

ddkbuild.cmd -W7XP fre . -cZ

上記のコマンド ラインでは、使用している WDK が既に考慮されています。インストールされている WDK を検出できない場合は、WDK がインストールされているフォルダー (通常はのようなもの) を指すようDDKBUILD.CMDに環境変数を設定する必要があります。W7BASEinstall.htmC:\WINDDK\7600.16385.1

于 2012-10-22T09:26:57.503 に答える
0

通常、Win7 マシンで WinXP ターゲット用にビルドされたドライバーを使用することはできません。Win7 ターゲット用に再ビルドします。

于 2012-10-22T09:13:07.660 に答える