Win32 API 日本語リファレンス
ホームSystem.Diagnostics.Debug.Extensions › IDebugRegisters

IDebugRegisters

COM
IIDce289126-9e84-45a7-937e-67bb18691493継承元IUnknown自前メソッド開始 vtbl3

メソッド 11

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT GetNumberRegisters(DWORD* Number)
NumberDWORD*outレジスタの総数を受け取るポインタである。
vtbl 4 HRESULT GetDescription(DWORD Register, LPSTR NameBuffer, DWORD NameBufferSize, DWORD* NameSize, DEBUG_REGISTER_DESCRIPTION* Desc)
RegisterDWORDin対象レジスタのインデックスを指定する。
NameBufferLPSTRoutoptionalレジスタ名を受け取るバッファへのポインタである。NULL を指定すると必要なサイズのみを問い合わせできる。
NameBufferSizeDWORDin名前バッファのサイズ(文字数)を指定する。
NameSizeDWORD*outoptionalレジスタ名のサイズ(終端の NULL を含むバイト数)を受け取るポインタである。
DescDEBUG_REGISTER_DESCRIPTION*outoptionalレジスタの詳細を受け取る DEBUG_REGISTER_DESCRIPTION 構造体へのポインタである。
vtbl 5 HRESULT GetIndexByName(LPSTR Name, DWORD* Index)
NameLPSTRin検索するレジスタの名前を指定する。
IndexDWORD*outレジスタのインデックスを受け取るポインタである。
vtbl 6 HRESULT GetValue(DWORD Register, DEBUG_VALUE* Value)
RegisterDWORDin対象レジスタのインデックスを指定する。
ValueDEBUG_VALUE*out取得したレジスタ値を受け取る DEBUG_VALUE 構造体へのポインタである。
vtbl 7 HRESULT SetValue(DWORD Register, DEBUG_VALUE* Value)
RegisterDWORDin対象レジスタのインデックスを指定する。
ValueDEBUG_VALUE*in設定するレジスタ値を保持する DEBUG_VALUE 構造体へのポインタである。
vtbl 8 HRESULT GetValues(DWORD Count, DWORD* Indices, DWORD Start, DEBUG_VALUE* Values)
CountDWORDin取得するレジスタの個数を指定する。
IndicesDWORD*inoptional取得するレジスタのインデックス配列を指定する。NULL の場合は Start から連続して取得する。
StartDWORDinIndices が NULL のとき取得を開始するレジスタのインデックスを指定する。
ValuesDEBUG_VALUE*out取得したレジスタ値の配列を受け取る DEBUG_VALUE 構造体配列へのポインタである。
vtbl 9 HRESULT SetValues(DWORD Count, DWORD* Indices, DWORD Start, DEBUG_VALUE* Values)
CountDWORDin設定するレジスタの個数を指定する。
IndicesDWORD*inoptional設定するレジスタのインデックス配列を指定する。NULL の場合は Start から連続して設定する。
StartDWORDinIndices が NULL のとき設定を開始するレジスタのインデックスを指定する。
ValuesDEBUG_VALUE*in設定するレジスタ値の配列を保持する DEBUG_VALUE 構造体配列へのポインタである。
vtbl 10 HRESULT OutputRegisters(DWORD OutputControl, DWORD Flags)
OutputControlDWORDin出力先を指定する出力制御フラグである。
FlagsDWORDin出力するレジスタの種類を制御するフラグを指定する。
vtbl 11 HRESULT GetInstructionOffset(ULONGLONG* Offset)
OffsetULONGLONG*out現在の命令ポインタが示す仮想アドレスを受け取るポインタである。
vtbl 12 HRESULT GetStackOffset(ULONGLONG* Offset)
OffsetULONGLONG*out現在のスタックポインタが示す仮想アドレスを受け取るポインタである。
vtbl 13 HRESULT GetFrameOffset(ULONGLONG* Offset)
OffsetULONGLONG*out現在のフレームポインタが示す仮想アドレスを受け取るポインタである。

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IDebugRegisters "{CE289126-9E84-45A7-937E-67BB18691493}"
#usecom global IDebugRegisters IID_IDebugRegisters "{}"
#comfunc global IDebugRegisters_GetNumberRegisters    3 var
#comfunc global IDebugRegisters_GetDescription        4 int,var,int,var,var
#comfunc global IDebugRegisters_GetIndexByName        5 str,var
#comfunc global IDebugRegisters_GetValue              6 int,var
#comfunc global IDebugRegisters_SetValue              7 int,var
#comfunc global IDebugRegisters_GetValues             8 int,var,int,var
#comfunc global IDebugRegisters_SetValues             9 int,var,int,var
#comfunc global IDebugRegisters_OutputRegisters       10 int,int
#comfunc global IDebugRegisters_GetInstructionOffset  11 var
#comfunc global IDebugRegisters_GetStackOffset        12 var
#comfunc global IDebugRegisters_GetFrameOffset        13 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。