ホーム › System.Diagnostics.Debug.Extensions › IDebugAdvanced2
IDebugAdvanced2
COMメソッド 7
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
| Context | void* | out | 取得したスレッドコンテキスト (CONTEXT 構造体) を格納するバッファへのポインタである。 |
| ContextSize | DWORD | in | Context バッファのサイズをバイト単位で指定する。 |
| Context | void* | in | 設定するスレッドコンテキスト (CONTEXT 構造体) を格納したバッファへのポインタである。 |
| ContextSize | DWORD | in | Context バッファのサイズをバイト単位で指定する。 |
vtbl 5 HRESULT Request(DWORD Request, void* InBuffer, DWORD InBufferSize, void* OutBuffer, DWORD OutBufferSize, DWORD* OutSize)
| Request | DWORD | in | 実行する要求の種類を表す DEBUG_REQUEST_* コードを指定する。 |
| InBuffer | void* | inoptional | 要求に渡す入力データを格納したバッファへのポインタである。不要なら NULL を指定する。 |
| InBufferSize | DWORD | in | InBuffer のサイズをバイト単位で指定する。 |
| OutBuffer | void* | outoptional | 要求の結果を受け取る出力バッファへのポインタである。不要なら NULL を指定する。 |
| OutBufferSize | DWORD | in | OutBuffer のサイズをバイト単位で指定する。 |
| OutSize | DWORD* | outoptional | 出力に必要なバイト数を受け取るポインタである。不要なら NULL を指定する。 |
vtbl 6 HRESULT GetSourceFileInformation(DWORD Which, LPSTR SourceFile, ULONGLONG Arg64, DWORD Arg32, void* Buffer, DWORD BufferSize, DWORD* InfoSize)
| Which | DWORD | in | 取得するソースファイル情報の種類を指定する。 |
| SourceFile | LPSTR | in | 対象とするソースファイルのパスを指定する。 |
| Arg64 | ULONGLONG | in | 情報の種類に応じた 64 ビット引数を指定する。 |
| Arg32 | DWORD | in | 情報の種類に応じた 32 ビット引数を指定する。 |
| Buffer | void* | outoptional | 取得した情報を格納するバッファへのポインタである。 |
| BufferSize | DWORD | in | Buffer のサイズをバイト単位で指定する。 |
| InfoSize | DWORD* | outoptional | 情報の格納に必要なバイト数を受け取るポインタである。 |
vtbl 7 HRESULT FindSourceFileAndToken(DWORD StartElement, ULONGLONG ModAddr, LPSTR File, DWORD Flags, void* FileToken, DWORD FileTokenSize, DWORD* FoundElement, LPSTR Buffer, DWORD BufferSize, DWORD* FoundSize)
| StartElement | DWORD | in | 検索を開始するソースパス要素のインデックスを指定する。 |
| ModAddr | ULONGLONG | in | 対象モジュールのベースアドレスを指定する。 |
| File | LPSTR | in | 検索するソースファイル名を指定する。 |
| Flags | DWORD | in | 検索方法を制御する DEBUG_FIND_SOURCE_* フラグを指定する。 |
| FileToken | void* | inoptional | ファイルを識別するためのトークンデータへのポインタである。 |
| FileTokenSize | DWORD | in | FileToken のサイズをバイト単位で指定する。 |
| FoundElement | DWORD* | outoptional | 見つかったソースパス要素のインデックスを受け取るポインタである。 |
| Buffer | LPSTR | outoptional | 見つかったファイルのパスを格納するバッファへのポインタである。 |
| BufferSize | DWORD | in | Buffer のサイズを文字数単位で指定する。 |
| FoundSize | DWORD* | outoptional | 見つかったパスの格納に必要な文字数を受け取るポインタである。 |
vtbl 8 HRESULT GetSymbolInformation(DWORD Which, ULONGLONG Arg64, DWORD Arg32, void* Buffer, DWORD BufferSize, DWORD* InfoSize, LPSTR StringBuffer, DWORD StringBufferSize, DWORD* StringSize)
| Which | DWORD | in | 取得するシンボル情報の種類を指定する。 |
| Arg64 | ULONGLONG | in | 情報の種類に応じた 64 ビット引数を指定する。 |
| Arg32 | DWORD | in | 情報の種類に応じた 32 ビット引数を指定する。 |
| Buffer | void* | outoptional | 取得したバイナリ形式の情報を格納するバッファへのポインタである。 |
| BufferSize | DWORD | in | Buffer のサイズをバイト単位で指定する。 |
| InfoSize | DWORD* | outoptional | 情報の格納に必要なバイト数を受け取るポインタである。 |
| StringBuffer | LPSTR | outoptional | 取得した文字列情報を格納するバッファへのポインタである。 |
| StringBufferSize | DWORD | in | StringBuffer のサイズを文字数単位で指定する。 |
| StringSize | DWORD* | outoptional | 文字列の格納に必要な文字数を受け取るポインタである。 |
vtbl 9 HRESULT GetSystemObjectInformation(DWORD Which, ULONGLONG Arg64, DWORD Arg32, void* Buffer, DWORD BufferSize, DWORD* InfoSize)
| Which | DWORD | in | 取得するシステムオブジェクト情報の種類を指定する。 |
| Arg64 | ULONGLONG | in | 情報の種類に応じた 64 ビット引数を指定する。 |
| Arg32 | DWORD | in | 情報の種類に応じた 32 ビット引数を指定する。 |
| Buffer | void* | outoptional | 取得した情報を格納するバッファへのポインタである。 |
| BufferSize | DWORD | in | Buffer のサイズをバイト単位で指定する。 |
| InfoSize | DWORD* | outoptional | 情報の格納に必要なバイト数を受け取るポインタである。 |
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
出力引数:
#define global IID_IDebugAdvanced2 "{716D14C9-119B-4BA5-AF1F-0890E672416A}" #usecom global IDebugAdvanced2 IID_IDebugAdvanced2 "{}" #comfunc global IDebugAdvanced2_GetThreadContext 3 sptr,int #comfunc global IDebugAdvanced2_SetThreadContext 4 sptr,int #comfunc global IDebugAdvanced2_Request 5 int,sptr,int,sptr,int,var #comfunc global IDebugAdvanced2_GetSourceFileInformation 6 int,str,int64,int,sptr,int,var #comfunc global IDebugAdvanced2_FindSourceFileAndToken 7 int,int64,str,int,sptr,int,var,var,int,var #comfunc global IDebugAdvanced2_GetSymbolInformation 8 int,int64,int,sptr,int,var,var,int,var #comfunc global IDebugAdvanced2_GetSystemObjectInformation 9 int,int64,int,sptr,int,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IDebugAdvanced2 "{716D14C9-119B-4BA5-AF1F-0890E672416A}" #usecom global IDebugAdvanced2 IID_IDebugAdvanced2 "{}" #comfunc global IDebugAdvanced2_GetThreadContext 3 sptr,int #comfunc global IDebugAdvanced2_SetThreadContext 4 sptr,int #comfunc global IDebugAdvanced2_Request 5 int,sptr,int,sptr,int,sptr #comfunc global IDebugAdvanced2_GetSourceFileInformation 6 int,str,int64,int,sptr,int,sptr #comfunc global IDebugAdvanced2_FindSourceFileAndToken 7 int,int64,str,int,sptr,int,sptr,sptr,int,sptr #comfunc global IDebugAdvanced2_GetSymbolInformation 8 int,int64,int,sptr,int,sptr,sptr,int,sptr #comfunc global IDebugAdvanced2_GetSystemObjectInformation 9 int,int64,int,sptr,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。