ホーム › System.Diagnostics.Debug.Extensions › IDebugDataSpaces2
IDebugDataSpaces2
COMメソッド 26
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
| Offset | ULONGLONG | in | 読み取りを開始する仮想アドレスを指定する。 |
| Buffer | void* | out | 読み取ったデータを格納するバッファへのポインタである。 |
| BufferSize | DWORD | in | 読み取るバイト数を指定する。 |
| BytesRead | DWORD* | outoptional | 実際に読み取られたバイト数を受け取るポインタである。不要なら NULL を指定する。 |
| Offset | ULONGLONG | in | 書き込みを開始する仮想アドレスを指定する。 |
| Buffer | void* | in | 書き込むデータを格納したバッファへのポインタである。 |
| BufferSize | DWORD | in | 書き込むバイト数を指定する。 |
| BytesWritten | DWORD* | outoptional | 実際に書き込まれたバイト数を受け取るポインタである。不要なら NULL を指定する。 |
vtbl 5 HRESULT SearchVirtual(ULONGLONG Offset, ULONGLONG Length, void* Pattern, DWORD PatternSize, DWORD PatternGranularity, ULONGLONG* MatchOffset)
| Offset | ULONGLONG | in | 検索を開始する仮想アドレスを指定する。 |
| Length | ULONGLONG | in | 検索する範囲のバイト数を指定する。 |
| Pattern | void* | in | 検索するバイトパターンを格納したバッファへのポインタである。 |
| PatternSize | DWORD | in | パターンのサイズをバイト単位で指定する。 |
| PatternGranularity | DWORD | in | パターンを照合する境界の粒度をバイト単位で指定する。 |
| MatchOffset | ULONGLONG* | out | 見つかった位置の仮想アドレスを受け取るポインタである。 |
vtbl 6 HRESULT ReadVirtualUncached(ULONGLONG Offset, void* Buffer, DWORD BufferSize, DWORD* BytesRead)
| Offset | ULONGLONG | in | 読み取りを開始する仮想アドレスを指定する。 |
| Buffer | void* | out | 読み取ったデータを格納するバッファへのポインタである。 |
| BufferSize | DWORD | in | 読み取るバイト数を指定する。 |
| BytesRead | DWORD* | outoptional | 実際に読み取られたバイト数を受け取るポインタである。不要なら NULL を指定する。 |
vtbl 7 HRESULT WriteVirtualUncached(ULONGLONG Offset, void* Buffer, DWORD BufferSize, DWORD* BytesWritten)
| Offset | ULONGLONG | in | 書き込みを開始する仮想アドレスを指定する。 |
| Buffer | void* | in | 書き込むデータを格納したバッファへのポインタである。 |
| BufferSize | DWORD | in | 書き込むバイト数を指定する。 |
| BytesWritten | DWORD* | outoptional | 実際に書き込まれたバイト数を受け取るポインタである。不要なら NULL を指定する。 |
| Count | DWORD | in | 読み取るポインタの数を指定する。 |
| Offset | ULONGLONG | in | 読み取りを開始する仮想アドレスを指定する。 |
| Ptrs | ULONGLONG* | out | 読み取ったポインタ値を格納する配列へのポインタである。対象のポインタ幅に応じて符号拡張される。 |
| Count | DWORD | in | 書き込むポインタの数を指定する。 |
| Offset | ULONGLONG | in | 書き込みを開始する仮想アドレスを指定する。 |
| Ptrs | ULONGLONG* | in | 書き込むポインタ値を格納した配列へのポインタである。対象のポインタ幅に切り詰められる。 |
| Offset | ULONGLONG | in | 読み取りを開始する物理アドレスを指定する。 |
| Buffer | void* | out | 読み取ったデータを格納するバッファへのポインタである。 |
| BufferSize | DWORD | in | 読み取るバイト数を指定する。 |
| BytesRead | DWORD* | outoptional | 実際に読み取られたバイト数を受け取るポインタである。不要なら NULL を指定する。 |
vtbl 11 HRESULT WritePhysical(ULONGLONG Offset, void* Buffer, DWORD BufferSize, DWORD* BytesWritten)
| Offset | ULONGLONG | in | 書き込みを開始する物理アドレスを指定する。 |
| Buffer | void* | in | 書き込むデータを格納したバッファへのポインタである。 |
| BufferSize | DWORD | in | 書き込むバイト数を指定する。 |
| BytesWritten | DWORD* | outoptional | 実際に書き込まれたバイト数を受け取るポインタである。不要なら NULL を指定する。 |
vtbl 12 HRESULT ReadControl(DWORD Processor, ULONGLONG Offset, void* Buffer, DWORD BufferSize, DWORD* BytesRead)
| Processor | DWORD | in | 対象とするプロセッサの番号を指定する。 |
| Offset | ULONGLONG | in | 読み取りを開始する制御空間内のオフセットを指定する。 |
| Buffer | void* | out | 読み取ったデータを格納するバッファへのポインタである。 |
| BufferSize | DWORD | in | 読み取るバイト数を指定する。 |
| BytesRead | DWORD* | outoptional | 実際に読み取られたバイト数を受け取るポインタである。不要なら NULL を指定する。 |
vtbl 13 HRESULT WriteControl(DWORD Processor, ULONGLONG Offset, void* Buffer, DWORD BufferSize, DWORD* BytesWritten)
| Processor | DWORD | in | 対象とするプロセッサの番号を指定する。 |
| Offset | ULONGLONG | in | 書き込みを開始する制御空間内のオフセットを指定する。 |
| Buffer | void* | in | 書き込むデータを格納したバッファへのポインタである。 |
| BufferSize | DWORD | in | 書き込むバイト数を指定する。 |
| BytesWritten | DWORD* | outoptional | 実際に書き込まれたバイト数を受け取るポインタである。不要なら NULL を指定する。 |
vtbl 14 HRESULT ReadIo(DWORD InterfaceType, DWORD BusNumber, DWORD AddressSpace, ULONGLONG Offset, void* Buffer, DWORD BufferSize, DWORD* BytesRead)
| InterfaceType | DWORD | in | 対象 I/O バスのインターフェイス種別を指定する。 |
| BusNumber | DWORD | in | 対象 I/O バスの番号を指定する。 |
| AddressSpace | DWORD | in | 対象とするアドレス空間を指定する。 |
| Offset | ULONGLONG | in | 読み取りを開始する I/O アドレスを指定する。 |
| Buffer | void* | out | 読み取ったデータを格納するバッファへのポインタである。 |
| BufferSize | DWORD | in | 読み取るバイト数を指定する。 |
| BytesRead | DWORD* | outoptional | 実際に読み取られたバイト数を受け取るポインタである。不要なら NULL を指定する。 |
vtbl 15 HRESULT WriteIo(DWORD InterfaceType, DWORD BusNumber, DWORD AddressSpace, ULONGLONG Offset, void* Buffer, DWORD BufferSize, DWORD* BytesWritten)
| InterfaceType | DWORD | in | 対象 I/O バスのインターフェイス種別を指定する。 |
| BusNumber | DWORD | in | 対象 I/O バスの番号を指定する。 |
| AddressSpace | DWORD | in | 対象とするアドレス空間を指定する。 |
| Offset | ULONGLONG | in | 書き込みを開始する I/O アドレスを指定する。 |
| Buffer | void* | in | 書き込むデータを格納したバッファへのポインタである。 |
| BufferSize | DWORD | in | 書き込むバイト数を指定する。 |
| BytesWritten | DWORD* | outoptional | 実際に書き込まれたバイト数を受け取るポインタである。不要なら NULL を指定する。 |
| Msr | DWORD | in | 読み取るモデル固有レジスタ (MSR) の番号を指定する。 |
| Value | ULONGLONG* | out | 読み取った MSR の値を受け取るポインタである。 |
| Msr | DWORD | in | 書き込むモデル固有レジスタ (MSR) の番号を指定する。 |
| Value | ULONGLONG | in | MSR に書き込む値を指定する。 |
vtbl 18 HRESULT ReadBusData(DWORD BusDataType, DWORD BusNumber, DWORD SlotNumber, DWORD Offset, void* Buffer, DWORD BufferSize, DWORD* BytesRead)
| BusDataType | DWORD | in | 対象バスのデータ種別を指定する。 |
| BusNumber | DWORD | in | 対象バスの番号を指定する。 |
| SlotNumber | DWORD | in | 対象スロットの番号を指定する。 |
| Offset | DWORD | in | 読み取りを開始するバスデータ内のオフセットを指定する。 |
| Buffer | void* | out | 読み取ったデータを格納するバッファへのポインタである。 |
| BufferSize | DWORD | in | 読み取るバイト数を指定する。 |
| BytesRead | DWORD* | outoptional | 実際に読み取られたバイト数を受け取るポインタである。不要なら NULL を指定する。 |
vtbl 19 HRESULT WriteBusData(DWORD BusDataType, DWORD BusNumber, DWORD SlotNumber, DWORD Offset, void* Buffer, DWORD BufferSize, DWORD* BytesWritten)
| BusDataType | DWORD | in | 対象バスのデータ種別を指定する。 |
| BusNumber | DWORD | in | 対象バスの番号を指定する。 |
| SlotNumber | DWORD | in | 対象スロットの番号を指定する。 |
| Offset | DWORD | in | 書き込みを開始するバスデータ内のオフセットを指定する。 |
| Buffer | void* | in | 書き込むデータを格納したバッファへのポインタである。 |
| BufferSize | DWORD | in | 書き込むバイト数を指定する。 |
| BytesWritten | DWORD* | outoptional | 実際に書き込まれたバイト数を受け取るポインタである。不要なら NULL を指定する。 |
vtbl 20 HRESULT CheckLowMemory()
| Index | DWORD | in | 取得するデバッガデータブロックの項目インデックスを指定する。 |
| Buffer | void* | out | 取得したデータを格納するバッファへのポインタである。 |
| BufferSize | DWORD | in | Buffer のサイズをバイト単位で指定する。 |
| DataSize | DWORD* | outoptional | データの格納に必要なバイト数を受け取るポインタである。 |
vtbl 22 HRESULT ReadProcessorSystemData(DWORD Processor, DWORD Index, void* Buffer, DWORD BufferSize, DWORD* DataSize)
| Processor | DWORD | in | 対象とするプロセッサの番号を指定する。 |
| Index | DWORD | in | 取得するプロセッサシステムデータの種類を指定する。 |
| Buffer | void* | out | 取得したデータを格納するバッファへのポインタである。 |
| BufferSize | DWORD | in | Buffer のサイズをバイト単位で指定する。 |
| DataSize | DWORD* | outoptional | データの格納に必要なバイト数を受け取るポインタである。 |
| Virtual | ULONGLONG | in | 変換する仮想アドレスを指定する。 |
| Physical | ULONGLONG* | out | 変換結果の物理アドレスを受け取るポインタである。 |
vtbl 24 HRESULT GetVirtualTranslationPhysicalOffsets(ULONGLONG Virtual, ULONGLONG* Offsets, DWORD OffsetsSize, DWORD* Levels)
| Virtual | ULONGLONG | in | 変換過程を取得する仮想アドレスを指定する。 |
| Offsets | ULONGLONG* | outoptional | アドレス変換の各段階で参照される物理アドレスを受け取る配列へのポインタである。 |
| OffsetsSize | DWORD | in | Offsets 配列の容量 (要素数) を指定する。 |
| Levels | DWORD* | outoptional | アドレス変換の階層数を受け取るポインタである。 |
vtbl 25 HRESULT ReadHandleData(ULONGLONG Handle, DWORD DataType, void* Buffer, DWORD BufferSize, DWORD* DataSize)
| Handle | ULONGLONG | in | 情報を取得する対象プロセス内のハンドル値を指定する。 |
| DataType | DWORD | in | 取得するハンドル情報の種類 (DEBUG_HANDLE_DATA_TYPE_*) を指定する。 |
| Buffer | void* | outoptional | 取得した情報を格納するバッファへのポインタである。 |
| BufferSize | DWORD | in | Buffer のサイズをバイト単位で指定する。 |
| DataSize | DWORD* | outoptional | 情報の格納に必要なバイト数を受け取るポインタである。 |
vtbl 26 HRESULT FillVirtual(ULONGLONG Start, DWORD Size, void* Pattern, DWORD PatternSize, DWORD* Filled)
| Start | ULONGLONG | in | 書き込みを開始する仮想アドレスを指定する。 |
| Size | DWORD | in | 埋める範囲のバイト数を指定する。 |
| Pattern | void* | in | 繰り返し書き込むバイトパターンを格納したバッファへのポインタである。 |
| PatternSize | DWORD | in | パターンのサイズをバイト単位で指定する。 |
| Filled | DWORD* | outoptional | 実際に埋められたバイト数を受け取るポインタである。 |
vtbl 27 HRESULT FillPhysical(ULONGLONG Start, DWORD Size, void* Pattern, DWORD PatternSize, DWORD* Filled)
| Start | ULONGLONG | in | 書き込みを開始する物理アドレスを指定する。 |
| Size | DWORD | in | 埋める範囲のバイト数を指定する。 |
| Pattern | void* | in | 繰り返し書き込むバイトパターンを格納したバッファへのポインタである。 |
| PatternSize | DWORD | in | パターンのサイズをバイト単位で指定する。 |
| Filled | DWORD* | outoptional | 実際に埋められたバイト数を受け取るポインタである。 |
vtbl 28 HRESULT QueryVirtual(ULONGLONG Offset, MEMORY_BASIC_INFORMATION64* Info)
| Offset | ULONGLONG | in | 情報を照会する仮想アドレスを指定する。 |
| Info | MEMORY_BASIC_INFORMATION64* | out | メモリ領域の情報を受け取る MEMORY_BASIC_INFORMATION64 構造体へのポインタである。 |
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
出力引数:
#define global IID_IDebugDataSpaces2 "{7A5E852F-96E9-468F-AC1B-0B3ADDC4A049}" #usecom global IDebugDataSpaces2 IID_IDebugDataSpaces2 "{}" #comfunc global IDebugDataSpaces2_ReadVirtual 3 int64,sptr,int,var #comfunc global IDebugDataSpaces2_WriteVirtual 4 int64,sptr,int,var #comfunc global IDebugDataSpaces2_SearchVirtual 5 int64,int64,sptr,int,int,var #comfunc global IDebugDataSpaces2_ReadVirtualUncached 6 int64,sptr,int,var #comfunc global IDebugDataSpaces2_WriteVirtualUncached 7 int64,sptr,int,var #comfunc global IDebugDataSpaces2_ReadPointersVirtual 8 int,int64,var #comfunc global IDebugDataSpaces2_WritePointersVirtual 9 int,int64,var #comfunc global IDebugDataSpaces2_ReadPhysical 10 int64,sptr,int,var #comfunc global IDebugDataSpaces2_WritePhysical 11 int64,sptr,int,var #comfunc global IDebugDataSpaces2_ReadControl 12 int,int64,sptr,int,var #comfunc global IDebugDataSpaces2_WriteControl 13 int,int64,sptr,int,var #comfunc global IDebugDataSpaces2_ReadIo 14 int,int,int,int64,sptr,int,var #comfunc global IDebugDataSpaces2_WriteIo 15 int,int,int,int64,sptr,int,var #comfunc global IDebugDataSpaces2_ReadMsr 16 int,var #comfunc global IDebugDataSpaces2_WriteMsr 17 int,int64 #comfunc global IDebugDataSpaces2_ReadBusData 18 int,int,int,int,sptr,int,var #comfunc global IDebugDataSpaces2_WriteBusData 19 int,int,int,int,sptr,int,var #comfunc global IDebugDataSpaces2_CheckLowMemory 20 #comfunc global IDebugDataSpaces2_ReadDebuggerData 21 int,sptr,int,var #comfunc global IDebugDataSpaces2_ReadProcessorSystemData 22 int,int,sptr,int,var #comfunc global IDebugDataSpaces2_VirtualToPhysical 23 int64,var #comfunc global IDebugDataSpaces2_GetVirtualTranslationPhysicalOffsets 24 int64,var,int,var #comfunc global IDebugDataSpaces2_ReadHandleData 25 int64,int,sptr,int,var #comfunc global IDebugDataSpaces2_FillVirtual 26 int64,int,sptr,int,var #comfunc global IDebugDataSpaces2_FillPhysical 27 int64,int,sptr,int,var #comfunc global IDebugDataSpaces2_QueryVirtual 28 int64,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IDebugDataSpaces2 "{7A5E852F-96E9-468F-AC1B-0B3ADDC4A049}" #usecom global IDebugDataSpaces2 IID_IDebugDataSpaces2 "{}" #comfunc global IDebugDataSpaces2_ReadVirtual 3 int64,sptr,int,sptr #comfunc global IDebugDataSpaces2_WriteVirtual 4 int64,sptr,int,sptr #comfunc global IDebugDataSpaces2_SearchVirtual 5 int64,int64,sptr,int,int,sptr #comfunc global IDebugDataSpaces2_ReadVirtualUncached 6 int64,sptr,int,sptr #comfunc global IDebugDataSpaces2_WriteVirtualUncached 7 int64,sptr,int,sptr #comfunc global IDebugDataSpaces2_ReadPointersVirtual 8 int,int64,sptr #comfunc global IDebugDataSpaces2_WritePointersVirtual 9 int,int64,sptr #comfunc global IDebugDataSpaces2_ReadPhysical 10 int64,sptr,int,sptr #comfunc global IDebugDataSpaces2_WritePhysical 11 int64,sptr,int,sptr #comfunc global IDebugDataSpaces2_ReadControl 12 int,int64,sptr,int,sptr #comfunc global IDebugDataSpaces2_WriteControl 13 int,int64,sptr,int,sptr #comfunc global IDebugDataSpaces2_ReadIo 14 int,int,int,int64,sptr,int,sptr #comfunc global IDebugDataSpaces2_WriteIo 15 int,int,int,int64,sptr,int,sptr #comfunc global IDebugDataSpaces2_ReadMsr 16 int,sptr #comfunc global IDebugDataSpaces2_WriteMsr 17 int,int64 #comfunc global IDebugDataSpaces2_ReadBusData 18 int,int,int,int,sptr,int,sptr #comfunc global IDebugDataSpaces2_WriteBusData 19 int,int,int,int,sptr,int,sptr #comfunc global IDebugDataSpaces2_CheckLowMemory 20 #comfunc global IDebugDataSpaces2_ReadDebuggerData 21 int,sptr,int,sptr #comfunc global IDebugDataSpaces2_ReadProcessorSystemData 22 int,int,sptr,int,sptr #comfunc global IDebugDataSpaces2_VirtualToPhysical 23 int64,sptr #comfunc global IDebugDataSpaces2_GetVirtualTranslationPhysicalOffsets 24 int64,sptr,int,sptr #comfunc global IDebugDataSpaces2_ReadHandleData 25 int64,int,sptr,int,sptr #comfunc global IDebugDataSpaces2_FillVirtual 26 int64,int,sptr,int,sptr #comfunc global IDebugDataSpaces2_FillPhysical 27 int64,int,sptr,int,sptr #comfunc global IDebugDataSpaces2_QueryVirtual 28 int64,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。