ホーム › System.Diagnostics.Debug.Extensions › IDebugRegisters2
IDebugRegisters2
COMメソッド 26
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
| Number | DWORD* | out | レジスタの総数を受け取るポインタである。 |
vtbl 4 HRESULT GetDescription(DWORD Register, LPSTR NameBuffer, DWORD NameBufferSize, DWORD* NameSize, DEBUG_REGISTER_DESCRIPTION* Desc)
| Register | DWORD | in | 対象レジスタのインデックスを指定する。 |
| NameBuffer | LPSTR | outoptional | レジスタ名を受け取るバッファへのポインタである。NULL を指定すると必要なサイズのみを問い合わせできる。 |
| NameBufferSize | DWORD | in | 名前バッファのサイズ(文字数)を指定する。 |
| NameSize | DWORD* | outoptional | レジスタ名のサイズ(終端の NULL を含むバイト数)を受け取るポインタである。 |
| Desc | DEBUG_REGISTER_DESCRIPTION* | outoptional | レジスタの詳細を受け取る DEBUG_REGISTER_DESCRIPTION 構造体へのポインタである。 |
| Name | LPSTR | in | 検索するレジスタの名前を指定する。 |
| Index | DWORD* | out | レジスタのインデックスを受け取るポインタである。 |
vtbl 6 HRESULT GetValue(DWORD Register, DEBUG_VALUE* Value)
| Register | DWORD | in | 対象レジスタのインデックスを指定する。 |
| Value | DEBUG_VALUE* | out | 取得したレジスタ値を受け取る DEBUG_VALUE 構造体へのポインタである。 |
vtbl 7 HRESULT SetValue(DWORD Register, DEBUG_VALUE* Value)
| Register | DWORD | in | 対象レジスタのインデックスを指定する。 |
| Value | DEBUG_VALUE* | in | 設定するレジスタ値を保持する DEBUG_VALUE 構造体へのポインタである。 |
vtbl 8 HRESULT GetValues(DWORD Count, DWORD* Indices, DWORD Start, DEBUG_VALUE* Values)
| Count | DWORD | in | 取得するレジスタの個数を指定する。 |
| Indices | DWORD* | inoptional | 取得するレジスタのインデックス配列を指定する。NULL の場合は Start から連続して取得する。 |
| Start | DWORD | in | Indices が NULL のとき取得を開始するレジスタのインデックスを指定する。 |
| Values | DEBUG_VALUE* | out | 取得したレジスタ値の配列を受け取る DEBUG_VALUE 構造体配列へのポインタである。 |
vtbl 9 HRESULT SetValues(DWORD Count, DWORD* Indices, DWORD Start, DEBUG_VALUE* Values)
| Count | DWORD | in | 設定するレジスタの個数を指定する。 |
| Indices | DWORD* | inoptional | 設定するレジスタのインデックス配列を指定する。NULL の場合は Start から連続して設定する。 |
| Start | DWORD | in | Indices が NULL のとき設定を開始するレジスタのインデックスを指定する。 |
| Values | DEBUG_VALUE* | in | 設定するレジスタ値の配列を保持する DEBUG_VALUE 構造体配列へのポインタである。 |
| OutputControl | DWORD | in | 出力先を指定する出力制御フラグである。 |
| Flags | DWORD | in | 出力するレジスタの種類を制御するフラグを指定する。 |
| Offset | ULONGLONG* | out | 現在の命令ポインタが示す仮想アドレスを受け取るポインタである。 |
| Offset | ULONGLONG* | out | 現在のスタックポインタが示す仮想アドレスを受け取るポインタである。 |
| Offset | ULONGLONG* | out | 現在のフレームポインタが示す仮想アドレスを受け取るポインタである。 |
vtbl 14 HRESULT GetDescriptionWide(DWORD Register, LPWSTR NameBuffer, DWORD NameBufferSize, DWORD* NameSize, DEBUG_REGISTER_DESCRIPTION* Desc)
| Register | DWORD | in | 対象レジスタのインデックスを指定する。 |
| NameBuffer | LPWSTR | outoptional | レジスタ名を受け取るバッファへのポインタである。NULL を指定すると必要なサイズのみを問い合わせできる。 |
| NameBufferSize | DWORD | in | 名前バッファのサイズ(文字数)を指定する。 |
| NameSize | DWORD* | outoptional | レジスタ名のサイズ(終端の NULL を含むバイト数)を受け取るポインタである。 |
| Desc | DEBUG_REGISTER_DESCRIPTION* | outoptional | レジスタの詳細を受け取る DEBUG_REGISTER_DESCRIPTION 構造体へのポインタである。 |
| Name | LPWSTR | in | 検索するレジスタの名前を指定する。 |
| Index | DWORD* | out | レジスタのインデックスを受け取るポインタである。 |
| Number | DWORD* | out | 疑似レジスタの総数を受け取るポインタである。 |
vtbl 17 HRESULT GetPseudoDescription(DWORD Register, LPSTR NameBuffer, DWORD NameBufferSize, DWORD* NameSize, ULONGLONG* TypeModule, DWORD* TypeId)
| Register | DWORD | in | 対象疑似レジスタのインデックスを指定する。 |
| NameBuffer | LPSTR | outoptional | 疑似レジスタ名を受け取るバッファへのポインタである。NULL を指定すると必要なサイズのみを問い合わせできる。 |
| NameBufferSize | DWORD | in | 名前バッファのサイズ(文字数)を指定する。 |
| NameSize | DWORD* | outoptional | 疑似レジスタ名のサイズ(バイト単位)を受け取るポインタである。 |
| TypeModule | ULONGLONG* | outoptional | 疑似レジスタの型を含むモジュールのベースアドレスを受け取るポインタである。 |
| TypeId | DWORD* | outoptional | 疑似レジスタの型 ID を受け取るポインタである。 |
vtbl 18 HRESULT GetPseudoDescriptionWide(DWORD Register, LPWSTR NameBuffer, DWORD NameBufferSize, DWORD* NameSize, ULONGLONG* TypeModule, DWORD* TypeId)
| Register | DWORD | in | 対象疑似レジスタのインデックスを指定する。 |
| NameBuffer | LPWSTR | outoptional | 疑似レジスタ名を受け取るバッファへのポインタである。NULL を指定すると必要なサイズのみを問い合わせできる。 |
| NameBufferSize | DWORD | in | 名前バッファのサイズ(文字数)を指定する。 |
| NameSize | DWORD* | outoptional | 疑似レジスタ名のサイズ(バイト単位)を受け取るポインタである。 |
| TypeModule | ULONGLONG* | outoptional | 疑似レジスタの型を含むモジュールのベースアドレスを受け取るポインタである。 |
| TypeId | DWORD* | outoptional | 疑似レジスタの型 ID を受け取るポインタである。 |
| Name | LPSTR | in | 検索する疑似レジスタの名前を指定する。 |
| Index | DWORD* | out | 疑似レジスタのインデックスを受け取るポインタである。 |
| Name | LPWSTR | in | 検索する疑似レジスタの名前を指定する。 |
| Index | DWORD* | out | 疑似レジスタのインデックスを受け取るポインタである。 |
vtbl 21 HRESULT GetPseudoValues(DWORD Source, DWORD Count, DWORD* Indices, DWORD Start, DEBUG_VALUE* Values)
| Source | DWORD | in | 疑似レジスタ値の取得元を指定する。 |
| Count | DWORD | in | 取得する疑似レジスタの個数を指定する。 |
| Indices | DWORD* | inoptional | 取得する疑似レジスタのインデックス配列を指定する。NULL の場合は Start から連続して取得する。 |
| Start | DWORD | in | Indices が NULL のとき取得を開始する疑似レジスタのインデックスを指定する。 |
| Values | DEBUG_VALUE* | out | 取得した疑似レジスタ値の配列を受け取る DEBUG_VALUE 構造体配列へのポインタである。 |
vtbl 22 HRESULT SetPseudoValues(DWORD Source, DWORD Count, DWORD* Indices, DWORD Start, DEBUG_VALUE* Values)
| Source | DWORD | in | 疑似レジスタ値の設定先を指定する。 |
| Count | DWORD | in | 設定する疑似レジスタの個数を指定する。 |
| Indices | DWORD* | inoptional | 設定する疑似レジスタのインデックス配列を指定する。NULL の場合は Start から連続して設定する。 |
| Start | DWORD | in | Indices が NULL のとき設定を開始する疑似レジスタのインデックスを指定する。 |
| Values | DEBUG_VALUE* | in | 設定する疑似レジスタ値の配列を保持する DEBUG_VALUE 構造体配列へのポインタである。 |
vtbl 23 HRESULT GetValues2(DWORD Source, DWORD Count, DWORD* Indices, DWORD Start, DEBUG_VALUE* Values)
| Source | DWORD | in | レジスタ値の取得元(レジスタソース)を指定する。 |
| Count | DWORD | in | 取得するレジスタの個数を指定する。 |
| Indices | DWORD* | inoptional | 取得するレジスタのインデックス配列を指定する。NULL の場合は Start から連続して取得する。 |
| Start | DWORD | in | Indices が NULL のとき取得を開始するレジスタのインデックスを指定する。 |
| Values | DEBUG_VALUE* | out | 取得したレジスタ値の配列を受け取る DEBUG_VALUE 構造体配列へのポインタである。 |
vtbl 24 HRESULT SetValues2(DWORD Source, DWORD Count, DWORD* Indices, DWORD Start, DEBUG_VALUE* Values)
| Source | DWORD | in | レジスタ値の設定先(レジスタソース)を指定する。 |
| Count | DWORD | in | 設定するレジスタの個数を指定する。 |
| Indices | DWORD* | inoptional | 設定するレジスタのインデックス配列を指定する。NULL の場合は Start から連続して設定する。 |
| Start | DWORD | in | Indices が NULL のとき設定を開始するレジスタのインデックスを指定する。 |
| Values | DEBUG_VALUE* | in | 設定するレジスタ値の配列を保持する DEBUG_VALUE 構造体配列へのポインタである。 |
| OutputControl | DWORD | in | 出力先を指定する出力制御フラグである。 |
| Source | DWORD | in | レジスタ値の取得元(レジスタソース)を指定する。 |
| Flags | DWORD | in | 出力するレジスタの種類を制御するフラグを指定する。 |
| Source | DWORD | in | レジスタ値の取得元(レジスタソース)を指定する。 |
| Offset | ULONGLONG* | out | 現在の命令ポインタが示す仮想アドレスを受け取るポインタである。 |
| Source | DWORD | in | レジスタ値の取得元(レジスタソース)を指定する。 |
| Offset | ULONGLONG* | out | 現在のスタックポインタが示す仮想アドレスを受け取るポインタである。 |
| Source | DWORD | in | レジスタ値の取得元(レジスタソース)を指定する。 |
| Offset | ULONGLONG* | out | 現在のフレームポインタが示す仮想アドレスを受け取るポインタである。 |
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
出力引数:
#define global IID_IDebugRegisters2 "{1656AFA9-19C6-4E3A-97E7-5DC9160CF9C4}" #usecom global IDebugRegisters2 IID_IDebugRegisters2 "{}" #comfunc global IDebugRegisters2_GetNumberRegisters 3 var #comfunc global IDebugRegisters2_GetDescription 4 int,var,int,var,var #comfunc global IDebugRegisters2_GetIndexByName 5 str,var #comfunc global IDebugRegisters2_GetValue 6 int,var #comfunc global IDebugRegisters2_SetValue 7 int,var #comfunc global IDebugRegisters2_GetValues 8 int,var,int,var #comfunc global IDebugRegisters2_SetValues 9 int,var,int,var #comfunc global IDebugRegisters2_OutputRegisters 10 int,int #comfunc global IDebugRegisters2_GetInstructionOffset 11 var #comfunc global IDebugRegisters2_GetStackOffset 12 var #comfunc global IDebugRegisters2_GetFrameOffset 13 var #comfunc global IDebugRegisters2_GetDescriptionWide 14 int,var,int,var,var #comfunc global IDebugRegisters2_GetIndexByNameWide 15 wstr,var #comfunc global IDebugRegisters2_GetNumberPseudoRegisters 16 var #comfunc global IDebugRegisters2_GetPseudoDescription 17 int,var,int,var,var,var #comfunc global IDebugRegisters2_GetPseudoDescriptionWide 18 int,var,int,var,var,var #comfunc global IDebugRegisters2_GetPseudoIndexByName 19 str,var #comfunc global IDebugRegisters2_GetPseudoIndexByNameWide 20 wstr,var #comfunc global IDebugRegisters2_GetPseudoValues 21 int,int,var,int,var #comfunc global IDebugRegisters2_SetPseudoValues 22 int,int,var,int,var #comfunc global IDebugRegisters2_GetValues2 23 int,int,var,int,var #comfunc global IDebugRegisters2_SetValues2 24 int,int,var,int,var #comfunc global IDebugRegisters2_OutputRegisters2 25 int,int,int #comfunc global IDebugRegisters2_GetInstructionOffset2 26 int,var #comfunc global IDebugRegisters2_GetStackOffset2 27 int,var #comfunc global IDebugRegisters2_GetFrameOffset2 28 int,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IDebugRegisters2 "{1656AFA9-19C6-4E3A-97E7-5DC9160CF9C4}" #usecom global IDebugRegisters2 IID_IDebugRegisters2 "{}" #comfunc global IDebugRegisters2_GetNumberRegisters 3 sptr #comfunc global IDebugRegisters2_GetDescription 4 int,sptr,int,sptr,sptr #comfunc global IDebugRegisters2_GetIndexByName 5 str,sptr #comfunc global IDebugRegisters2_GetValue 6 int,sptr #comfunc global IDebugRegisters2_SetValue 7 int,sptr #comfunc global IDebugRegisters2_GetValues 8 int,sptr,int,sptr #comfunc global IDebugRegisters2_SetValues 9 int,sptr,int,sptr #comfunc global IDebugRegisters2_OutputRegisters 10 int,int #comfunc global IDebugRegisters2_GetInstructionOffset 11 sptr #comfunc global IDebugRegisters2_GetStackOffset 12 sptr #comfunc global IDebugRegisters2_GetFrameOffset 13 sptr #comfunc global IDebugRegisters2_GetDescriptionWide 14 int,sptr,int,sptr,sptr #comfunc global IDebugRegisters2_GetIndexByNameWide 15 wstr,sptr #comfunc global IDebugRegisters2_GetNumberPseudoRegisters 16 sptr #comfunc global IDebugRegisters2_GetPseudoDescription 17 int,sptr,int,sptr,sptr,sptr #comfunc global IDebugRegisters2_GetPseudoDescriptionWide 18 int,sptr,int,sptr,sptr,sptr #comfunc global IDebugRegisters2_GetPseudoIndexByName 19 str,sptr #comfunc global IDebugRegisters2_GetPseudoIndexByNameWide 20 wstr,sptr #comfunc global IDebugRegisters2_GetPseudoValues 21 int,int,sptr,int,sptr #comfunc global IDebugRegisters2_SetPseudoValues 22 int,int,sptr,int,sptr #comfunc global IDebugRegisters2_GetValues2 23 int,int,sptr,int,sptr #comfunc global IDebugRegisters2_SetValues2 24 int,int,sptr,int,sptr #comfunc global IDebugRegisters2_OutputRegisters2 25 int,int,int #comfunc global IDebugRegisters2_GetInstructionOffset2 26 int,sptr #comfunc global IDebugRegisters2_GetStackOffset2 27 int,sptr #comfunc global IDebugRegisters2_GetFrameOffset2 28 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。