WdbgExts のメモリ アクセス
このトピックでは、WdbgExts API を使用してメモリ アクセスを実行する方法の概要について説明します。 デバッガー エンジンのメモリ アクセスの概要については、このドキュメントの「デバッガー エンジンの概要」セクションの「メモリ」を参照してください。
仮想メモリ
ターゲットの仮想メモリは、ReadMemory 関数を使用して読み取り、WriteMemory 関数を使用して書き込むことができます。 ターゲットのメモリ内のポインターは、ReadPointer、ReadPtr、および WritePointer 関数を使用して読み書きできます。
仮想メモリでバイト パターンを検索するには、SearchMemory 関数を使用します。
TranslateVirtualToPhysical 関数を使用して、仮想メモリ アドレスを物理メモリ アドレスに変換できます。
Disasm 関数を使用すると、ターゲット上の 1 つのアセンブリ命令を逆アセンブルできます。
物理アドレス拡張 (PAE) を使用する場合に、4 GB 未満のメモリを破損にチェックするには、Ioctl 操作 IG_LOWMEM_CHECK を使用します。
物理メモリ
物理メモリには、カーネル モード デバッグでのみ直接アクセスできます。
ターゲット上の物理メモリは、ReadPhysical 関数と ReadPhysicalWithFlags 関数を使用して読み取ることができ、WritePhysical 関数と WritePhysicalWithFlags 関数を使用して書き込むことができます。
指定した範囲内の場所へのポインターを物理メモリで検索するには、Ioctl 操作 IG_POINTER_SEARCH_PHYSICAL を使用します。
その他のデータ領域
カーネル モード デバッグでは、メイン メモリに加えて、さまざまなデータ空間に対するデータの読み取りと書き込みが可能です。 次のデータ空間にアクセスできます。
Control-Space Memory
関数 ReadControlSpace、ReadControlSpace64, ReadTypedControlSpace32、および ReadTypedControlSpace64 は、コントロールスペースからデータを読み取ります。 WriteControlSpace 関数は、コントロール空間にデータを書き込みます。
I/O メモリ
関数 ReadIoSpace、ReadIoSpace64、ReadIoSpace64、および ReadIoSpaceEx64 は、システム I/O メモリとバス I/O メモリからデータを読み取ります。 関数 WriteIoSpace、WriteIoSpace64、WriteIoSpaceEx、および WriteIoSpaceEx64 は、システム I/O メモリとバス I/O メモリにデータを書き込みます。
モデル固有レジスタ (MSR)
ReadMsr 関数と WriteMsr 関数は、MSR の読み取りと書き込みを行います。
システム バス
Ioctl 操作IG_GET_BUS_DATA および IG_SET_BUS_DATA は、システム バス データの読み取りと書き込みをします。
追加情報
より強力なメモリ アクセス API については、このドキュメントの「デバッガー エンジン API の使用」セクションの「メモリ アクセス」を参照してください。