まえがき
Windows XP SP2用のドライバーを作成する必要がありました。 すぐにデバッグの問題がありました。 洗練されたSoftIceを使用したり、すべてのミスをなくしたり、ロールバックしたりしたくありませんでした。 したがって、私がよく使用し、その特性が非常に満足されているVirtualBox仮想マシンと、Microsoft Windowsデバッガーを使用することが決定されました。 数時間後、Cの行がWinDbgウィンドウに喜んで現れ、「リマインダー」を作成することが決定されました。これは良い「ハウツー」であることが判明しました。 それでは始めましょう...
ハウツー
1
[ホスト-マシン] 
      最初に、仮想マシンのCOMポートを構成する必要があります。
これを行うには、[ホストモード] [ホストパイプ]を選択し、パイプの名前を記述します(\\。\ Pipe \ com_1が望ましい)。
次に、「犠牲者」を起動します。
2
[ターゲット-車] 
      では、boot.iniを少し変更しましょう。 最初は、ハイライトされていないのは(写真で)だけでした。
最初の行をコピーし、図のように複数の行を追加して、新しい行を追加します。
表示されない場合は、マルチ(0)ディスク(0)rdisk(0)パーティション(1)のように行を変更します\ WINDOWS =“ Microsoft Windows XP Professional RU” / noexecute = optin / fastdetect
マルチ(0)ディスク(0)rdisk(0)パーティション(1)\ WINDOWS = "Microsoft Windows XP Professional RU" / fastdetect / debug / debugport = com1 / baudrate = 115200
再起動し、最後に角かっこ内に「デバッガー付き」または「デバッガー付き」のようなものがあるオプションを2ポイントから選択します。
3
[ターゲット-車] 
      ドライバーの「スケルトン」を作成しましょう-make.bat、SOURCES、MAKEFILEファイル:
%SystemRoot%\system32\cmd.exe /c "cd %DDK_PATH%\bin\&&setenv.bat %DDK_PATH%\&&cd E:\vbg\debug\&&build -ceZ" 
      
        
        
        
      
     copy bin\i386\*.pdb %DBG_SYM_PATH% 
      
        
        
        
      
     copy *.c %DBG_SRC_PATH% 
      
        
        
        
      
     copy *.cpp %DBG_SRC_PATH% 
      
        
        
        
      
     copy *.h %DBG_SRC_PATH% 
      
        
        
        
      
     copy *.hpp %DBG_SRC_PATH% 
      
        
        
        
      
     pause
      
      (Eの代わりに:\ vbg \ debug \ドライバーが置かれているフォルダーの名前を入力します)
TARGETNAME=driver 
      
        
        
        
      
     TARGETPATH=bin 
      
        
        
        
      
     TARGETTYPE=DRIVER 
      
        
        
        
      
     C_DEFINES=$(C_DEFINES) 
      
        
        
        
      
     INCLUDES=C:\WINDDK\2600\inc 
      
        
        
        
      
     SOURCES=driver.cpp 
      
        
        
        
      
     RELEASETYPE=DDK 
      
        
        
        
      
     
      
        
        
        
      
     !INCLUDE $(NTMAKEENV)\makefile.def
      
      4
[ターゲット-車] 
      次に、driver.cppドライバー自体、メインコードの上に:
extern "C"{ 
      
        
        
        
      
     #include "ntddk.h" 
      
        
        
        
      
     } 
      
        
        
        
      
     #include "struct.h" 
      
        
        
        
      
     VOID OnUnload(IN PDRIVER_OBJECT DriverObject){ 
      
        
        
        
      
     DbgPrint("OnUnload called\n"); 
      
        
        
        
      
     }; 
      
        
        
        
      
     extern "C" NTSTATUS DriverEntry(IN PDRIVER_OBJECT theDriverObject,IN PUNICODE_STRING theRegistryPath){ 
      
        
        
        
      
     AB v = {2,3}; 
      
        
        
        
      
     PAB pv = &v; 
      
        
        
        
      
     _asm int 3 ; 
      
        
        
        
      
     v.a++; 
      
        
        
        
      
     pv->b++; 
      
        
        
        
      
     DbgPrint("a = %d, b = %d\n",va,vb); 
      
        
        
        
      
     theDriverObject->DriverUnload=&OnUnload; 
      
        
        
        
      
     return STATUS_SUCCESS; 
      
        
        
        
      
     }
      
      このドライバーは、int 3割り込みでデバッガーを呼び出します。
5
[ターゲット-車] 
      補助包含-ファイルstruct.h:
typedef struct _ab{ 
      
        
        
        
      
     int a,b; 
      
        
        
        
      
     }AB, *PAB;
      
      6
[ターゲット-車] 
      次に、[マイコンピュータ]-> [プロパティ]-> [詳細設定]-> [環境変数]に移動し、3つの変数を追加します。
DBG_SYM_PATH-シンボルファイルが配置されるフォルダーへのパス*
DBG_SRC_PATH-コードとともに配置されるフォルダーへのパス**
DDK_PATH-DDKへのパス
** + * =次に、これらのフォルダは、ボール用に以前に作成されたディスクに配置する必要があります。
7
[ターゲット-車] 
      これでビルドを開始できます-make.batをダブルクリックします。すべてが前もってうまくいけば、一番上に似た内容のウィンドウと、ドライバーディレクトリ内のいくつかの追加ファイルが表示されます。
8
[ホスト-マシン] 
      デバッガーで、シンボルとコードファイルを使用してフォルダーへのパスを書き込みます(これらはボールのあるフォルダーに配置する必要があります)
9
[ホスト-マシン] 
      実際には、デバッグにポート\\。\ Pipe \ com_1を入力します(デバッガーは耕さないと書きますが、これは割り込みまたは他のイベントをターゲットマシンで単に待機することを意味します。
10
[ターゲット-車] 
      KmdKitリンクから道具だけでなく、カーネルを操作するためのプログラムセット[KmdKit]をダウンロードし、KmdManager(ツールフォルダーにあります)を実行します-ドライバーのインストール/開始/停止/アンインストール用のプログラム。
起動後、ドライバーへのパスを書き留めて(マウスで簡単にドラッグできます)、register + runを押します-システムがすぐにフリーズします-デバッガーが割り込みをインターセプトし、システム全体を停止したため、システムがフリーズします。 ホストマシンに移動して、次の項目を確認します。
11
[ホスト-マシン] 
      デバッガがポップアップし、一番上に表示されたものが表示されます(表示されない場合は、少し待つ必要があります)。
手順を実行します。プログラムの最後に到達するまでF10を押し、Command-Kenelウィンドウで最後に「g」と入力してEnterキーを押します。 gを押すと、システムは自由に泳ぎ、ターゲットになります-システムのロックが解除されます。
タゲットシステムと次の段落に移動します。
12
[ターゲット-車] 
      [停止-登録解除]をクリックします。
私が書いたようにすべてがうまくいったなら、あなたはそれをやった。 そうでない場合は、質問してください。 この情報がお役に立てば幸いです。
ご清聴ありがとうございました。