次の方法で共有


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 の使用」セクションの「メモリ アクセス」を参照してください。