ホーム › System.Diagnostics.Debug.ActiveScript › IJsDebugDataTarget
IJsDebugDataTarget
COMメソッド 9
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
vtbl 3 HRESULT ReadMemory(ULONGLONG address, JsDebugReadMemoryFlags flags, BYTE* pBuffer, DWORD size, DWORD* pBytesRead)
| address | ULONGLONG | in | 読み取りを開始する対象プロセスのアドレスを指定する。 |
| flags | JsDebugReadMemoryFlags | in | 読み取り動作を制御する JsDebugReadMemoryFlags 値である。 |
| pBuffer | BYTE* | out | 読み取ったデータを格納するバッファへのポインタである。 |
| size | DWORD | in | 読み取るバイト数を指定する。 |
| pBytesRead | DWORD* | out | 実際に読み取られたバイト数を受け取るポインタである。 |
| address | ULONGLONG | in | 書き込みを開始する対象プロセスのアドレスを指定する。 |
| pMemory | BYTE* | in | 書き込むデータを格納したバッファへのポインタである。 |
| size | DWORD | in | 書き込むバイト数を指定する。 |
vtbl 5 HRESULT AllocateVirtualMemory(ULONGLONG address, DWORD size, DWORD allocationType, DWORD pageProtection, ULONGLONG* pAllocatedAddress)
| address | ULONGLONG | in | 確保を希望する開始アドレスを指定する。0 を指定すると自動的に決定される。 |
| size | DWORD | in | 確保するバイト数を指定する。 |
| allocationType | DWORD | in | メモリ確保の種類を表すフラグを指定する。 |
| pageProtection | DWORD | in | 確保するメモリのページ保護属性を指定する。 |
| pAllocatedAddress | ULONGLONG* | out | 実際に確保されたメモリの開始アドレスを受け取るポインタである。 |
| address | ULONGLONG | in | 解放するメモリ領域の開始アドレスを指定する。 |
| size | DWORD | in | 解放するバイト数を指定する。 |
| freeType | DWORD | in | メモリ解放の種類を表すフラグを指定する。 |
| threadId | DWORD | in | 対象スレッドのスレッド ID を指定する。 |
| tlsIndex | DWORD | in | 取得する TLS スロットのインデックスを指定する。 |
| pValue | ULONGLONG* | out | 取得した TLS の値を受け取るポインタである。 |
| address | ULONGLONG | in | 読み取る BSTR の対象プロセス上のアドレスを指定する。 |
| pString | LPWSTR* | out | 読み取った文字列を受け取るポインタである。 |
vtbl 9 HRESULT ReadNullTerminatedString(ULONGLONG address, WORD characterSize, DWORD maxCharacters, LPWSTR* pString)
| address | ULONGLONG | in | 読み取る文字列の対象プロセス上の開始アドレスを指定する。 |
| characterSize | WORD | in | 1 文字あたりのバイト数を指定する。 |
| maxCharacters | DWORD | in | 読み取る最大文字数を指定する。 |
| pString | LPWSTR* | out | 読み取った文字列を受け取るポインタである。 |
vtbl 10 HRESULT CreateStackFrameEnumerator(DWORD threadId, IEnumJsStackFrames** ppEnumerator)
| threadId | DWORD | in | 列挙対象スレッドのスレッド ID を指定する。 |
| ppEnumerator | IEnumJsStackFrames** | out | 生成された IEnumJsStackFrames インターフェイスを受け取るポインタである。 |
vtbl 11 HRESULT GetThreadContext(DWORD threadId, DWORD contextFlags, DWORD contextSize, void* pContext)
| threadId | DWORD | in | コンテキストを取得する対象スレッドのスレッド ID を指定する。 |
| contextFlags | DWORD | in | 取得するコンテキストの内容を指定するフラグである。 |
| contextSize | DWORD | in | pContext バッファのサイズをバイト単位で指定する。 |
| pContext | void* | out | 取得したスレッドコンテキスト (CONTEXT 構造体) を格納するバッファへのポインタである。 |
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
出力引数:
#define global IID_IJsDebugDataTarget "{53B28977-53A1-48E5-9000-5D0DFA893931}" #usecom global IJsDebugDataTarget IID_IJsDebugDataTarget "{}" #comfunc global IJsDebugDataTarget_ReadMemory 3 int64,int,var,int,var #comfunc global IJsDebugDataTarget_WriteMemory 4 int64,var,int #comfunc global IJsDebugDataTarget_AllocateVirtualMemory 5 int64,int,int,int,var #comfunc global IJsDebugDataTarget_FreeVirtualMemory 6 int64,int,int #comfunc global IJsDebugDataTarget_GetTlsValue 7 int,int,var #comfunc global IJsDebugDataTarget_ReadBSTR 8 int64,var #comfunc global IJsDebugDataTarget_ReadNullTerminatedString 9 int64,int,int,var #comfunc global IJsDebugDataTarget_CreateStackFrameEnumerator 10 int,sptr #comfunc global IJsDebugDataTarget_GetThreadContext 11 int,int,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IJsDebugDataTarget "{53B28977-53A1-48E5-9000-5D0DFA893931}" #usecom global IJsDebugDataTarget IID_IJsDebugDataTarget "{}" #comfunc global IJsDebugDataTarget_ReadMemory 3 int64,int,sptr,int,sptr #comfunc global IJsDebugDataTarget_WriteMemory 4 int64,sptr,int #comfunc global IJsDebugDataTarget_AllocateVirtualMemory 5 int64,int,int,int,sptr #comfunc global IJsDebugDataTarget_FreeVirtualMemory 6 int64,int,int #comfunc global IJsDebugDataTarget_GetTlsValue 7 int,int,sptr #comfunc global IJsDebugDataTarget_ReadBSTR 8 int64,sptr #comfunc global IJsDebugDataTarget_ReadNullTerminatedString 9 int64,int,int,sptr #comfunc global IJsDebugDataTarget_CreateStackFrameEnumerator 10 int,sptr #comfunc global IJsDebugDataTarget_GetThreadContext 11 int,int,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。