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 メモリ
関数 ReadControlSpaceReadControlSpace64ReadTypedControlSpace32および ReadTypedControlSpace64 は、コントロールスペースからデータを読み取ります。 WriteControlSpace 関数は、コントロール空間にデータを書き込みます。

I/O メモリ
関数 ReadIoSpaceReadIoSpace64ReadIoSpace64ReadIoSpaceEx64 は、システム I/O メモリとバス I/O メモリからデータを読み取ります。 関数 WriteIoSpaceWriteIoSpace64WriteIoSpaceExおよび WriteIoSpaceEx64 は、システム I/O メモリとバス I/O メモリにデータを書き込みます。

モデル固有レジスタ (MSR)
ReadMsr 関数と WriteMsr 関数は、MSR の読み取りと書き込みを行います。

System Bus
Ioctl 操作であるIG_GET_BUS_DATAIG_SET_BUS_DATAは、それぞれシステム バス データの読み取りと書き込みを行います。

追加情報

より強力なメモリ アクセス API については、このドキュメントの「デバッガー エンジン API の使用」セクションの「メモリ アクセス」を参照してください。