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

IJsDebugDataTarget

COM
IID53b28977-53a1-48e5-9000-5d0dfa893931継承元IUnknown自前メソッド開始 vtbl3

メソッド 9

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

vtbl 3 HRESULT ReadMemory(ULONGLONG address, JsDebugReadMemoryFlags flags, BYTE* pBuffer, DWORD size, DWORD* pBytesRead)
addressULONGLONGin読み取りを開始する対象プロセスのアドレスを指定する。
flagsJsDebugReadMemoryFlagsin読み取り動作を制御する JsDebugReadMemoryFlags 値である。
pBufferBYTE*out読み取ったデータを格納するバッファへのポインタである。
sizeDWORDin読み取るバイト数を指定する。
pBytesReadDWORD*out実際に読み取られたバイト数を受け取るポインタである。
vtbl 4 HRESULT WriteMemory(ULONGLONG address, BYTE* pMemory, DWORD size)
addressULONGLONGin書き込みを開始する対象プロセスのアドレスを指定する。
pMemoryBYTE*in書き込むデータを格納したバッファへのポインタである。
sizeDWORDin書き込むバイト数を指定する。
vtbl 5 HRESULT AllocateVirtualMemory(ULONGLONG address, DWORD size, DWORD allocationType, DWORD pageProtection, ULONGLONG* pAllocatedAddress)
addressULONGLONGin確保を希望する開始アドレスを指定する。0 を指定すると自動的に決定される。
sizeDWORDin確保するバイト数を指定する。
allocationTypeDWORDinメモリ確保の種類を表すフラグを指定する。
pageProtectionDWORDin確保するメモリのページ保護属性を指定する。
pAllocatedAddressULONGLONG*out実際に確保されたメモリの開始アドレスを受け取るポインタである。
vtbl 6 HRESULT FreeVirtualMemory(ULONGLONG address, DWORD size, DWORD freeType)
addressULONGLONGin解放するメモリ領域の開始アドレスを指定する。
sizeDWORDin解放するバイト数を指定する。
freeTypeDWORDinメモリ解放の種類を表すフラグを指定する。
vtbl 7 HRESULT GetTlsValue(DWORD threadId, DWORD tlsIndex, ULONGLONG* pValue)
threadIdDWORDin対象スレッドのスレッド ID を指定する。
tlsIndexDWORDin取得する TLS スロットのインデックスを指定する。
pValueULONGLONG*out取得した TLS の値を受け取るポインタである。
vtbl 8 HRESULT ReadBSTR(ULONGLONG address, LPWSTR* pString)
addressULONGLONGin読み取る BSTR の対象プロセス上のアドレスを指定する。
pStringLPWSTR*out読み取った文字列を受け取るポインタである。
vtbl 9 HRESULT ReadNullTerminatedString(ULONGLONG address, WORD characterSize, DWORD maxCharacters, LPWSTR* pString)
addressULONGLONGin読み取る文字列の対象プロセス上の開始アドレスを指定する。
characterSizeWORDin1 文字あたりのバイト数を指定する。
maxCharactersDWORDin読み取る最大文字数を指定する。
pStringLPWSTR*out読み取った文字列を受け取るポインタである。
vtbl 10 HRESULT CreateStackFrameEnumerator(DWORD threadId, IEnumJsStackFrames** ppEnumerator)
threadIdDWORDin列挙対象スレッドのスレッド ID を指定する。
ppEnumeratorIEnumJsStackFrames**out生成された IEnumJsStackFrames インターフェイスを受け取るポインタである。
vtbl 11 HRESULT GetThreadContext(DWORD threadId, DWORD contextFlags, DWORD contextSize, void* pContext)
threadIdDWORDinコンテキストを取得する対象スレッドのスレッド ID を指定する。
contextFlagsDWORDin取得するコンテキストの内容を指定するフラグである。
contextSizeDWORDinpContext バッファのサイズをバイト単位で指定する。
pContextvoid*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 指定が可能。