このトピックでは、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 メモリ
関数 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 の読み取りと書き込みを行います。
System Bus
Ioctl 操作であるIG_GET_BUS_DATAとIG_SET_BUS_DATAは、それぞれシステム バス データの読み取りと書き込みを行います。
追加情報
より強力なメモリ アクセス API については、このドキュメントの「デバッガー エンジン API の使用」セクションの「メモリ アクセス」を参照してください。