WdbgExts のメモリ アクセス

このトピックでは、WdbgExts API を使用してメモリ アクセスを実行する方法の概要について説明します。 デバッガー エンジンのメモリ アクセスの概要については、このドキュメントの「デバッガー エンジンの概要」セクションの「メモリ」を参照してください。

仮想メモリ

ターゲットの仮想メモリは、ReadMemory 関数を使用して読み取り、WriteMemory 関数を使用して書き込むことができます。 ターゲットのメモリ内のポインターは、ReadPointerReadPtr、および WritePointer 関数を使用して読み書きできます。

仮想メモリでバイト パターンを検索するには、SearchMemory 関数を使用します。

TranslateVirtualToPhysical 関数を使用して、仮想メモリ アドレスを物理メモリ アドレスに変換できます。

Disasm 関数を使用すると、ターゲット上の 1 つのアセンブリ命令を逆アセンブルできます。

物理アドレス拡張 (PAE) を使用する場合に、4 GB 未満のメモリを破損にチェックするには、Ioctl 操作 IG_LOWMEM_CHECK を使用します。

物理メモリ

物理メモリには、カーネル モード デバッグでのみ直接アクセスできます。

ターゲット上の物理メモリは、ReadPhysical 関数と ReadPhysicalWithFlags 関数を使用して読み取ることができ、WritePhysical 関数と WritePhysicalWithFlags 関数を使用して書き込むことができます。

指定した範囲内の場所へのポインターを物理メモリで検索するには、Ioctl 操作 IG_POINTER_SEARCH_PHYSICAL を使用します。

その他のデータ領域

カーネル モード デバッグでは、メイン メモリに加えて、さまざまなデータ空間に対するデータの読み取りと書き込みが可能です。 次のデータ空間にアクセスできます。

Control-Space Memory
関数 ReadControlSpaceReadControlSpace64, ReadTypedControlSpace32、および ReadTypedControlSpace64 は、コントロールスペースからデータを読み取ります。 WriteControlSpace 関数は、コントロール空間にデータを書き込みます。

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

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

システム バス
Ioctl 操作IG_GET_BUS_DATA および IG_SET_BUS_DATA は、システム バス データの読み取りと書き込みをします。

追加情報

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