Win32 API 日本語リファレンス
ホームSystem.WinRT.Metadata › ICeeGen

ICeeGen

COM
IID7ed1bdff-8e36-11d2-9c56-00a0c9b7cc45継承元IUnknown自前メソッド開始 vtbl3

メソッド 15

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

vtbl 3 HRESULT EmitString(LPWSTR lpString, DWORD* RVA)
lpStringLPWSTRin出力する文字列を指定する。
RVADWORD*inout出力された文字列の相対仮想アドレス (RVA) を受け取る。
vtbl 4 HRESULT GetString(DWORD RVA, LPWSTR* lpString)
RVADWORDin取得する文字列の相対仮想アドレス (RVA) を指定する。
lpStringLPWSTR*outoptionalRVA に対応する文字列へのポインタを受け取る。
vtbl 5 HRESULT AllocateMethodBuffer(DWORD cchBuffer, BYTE** lpBuffer, DWORD* RVA)
cchBufferDWORDin確保するメソッドバッファのサイズをバイト数で指定する。
lpBufferBYTE**inout確保されたバッファへのポインタを受け取る。
RVADWORD*inout確保されたバッファの相対仮想アドレス (RVA) を受け取る。
vtbl 6 HRESULT GetMethodBuffer(DWORD RVA, BYTE** lpBuffer)
RVADWORDin取得するメソッドバッファの相対仮想アドレス (RVA) を指定する。
lpBufferBYTE**inoutRVA に対応するメソッドバッファへのポインタを受け取る。
vtbl 7 HRESULT GetIMapTokenIface(IUnknown** pIMapToken)
pIMapTokenIUnknown**outトークンマッピングを行う IMapToken インターフェイスへのポインタを受け取る。
vtbl 8 HRESULT GenerateCeeFile()
vtbl 9 HRESULT GetIlSection(void** section)
sectionvoid**inoutIL コードを格納するセクションへのハンドル (ポインタ) を受け取る。
vtbl 10 HRESULT GetStringSection(void** section)
sectionvoid**inout文字列を格納するセクションへのハンドル (ポインタ) を受け取る。
vtbl 11 HRESULT AddSectionReloc(void* section, DWORD offset, void* relativeTo, CeeSectionRelocType relocType)
sectionvoid*inout再配置情報を追加する対象のセクションへのハンドルを指定する。
offsetDWORDin再配置を行うセクション内のオフセットを指定する。
relativeTovoid*inout再配置の基準となるセクションへのハンドルを指定する。
relocTypeCeeSectionRelocTypein再配置の種別を示す CeeSectionRelocType を指定する。
vtbl 12 HRESULT GetSectionCreate(LPSTR name, DWORD flags, void** section)
nameLPSTRin作成または取得するセクションの名前を指定する文字列である。
flagsDWORDinセクションの属性を示すフラグを指定する。
sectionvoid**inout作成または取得されたセクションへのハンドル (ポインタ) を受け取る。
vtbl 13 HRESULT GetSectionDataLen(void* section, DWORD* dataLen)
sectionvoid*inout対象のセクションへのハンドルを指定する。
dataLenDWORD*inoutセクションのデータ長をバイト数で受け取る。
vtbl 14 HRESULT GetSectionBlock(void* section, DWORD len, DWORD align, void** ppBytes)
sectionvoid*inoutブロックを確保する対象のセクションへのハンドルを指定する。
lenDWORDin確保するブロックのサイズをバイト数で指定する。
alignDWORDinブロックのアラインメントを指定する。
ppBytesvoid**inout確保されたブロックへのポインタを受け取る。
vtbl 15 HRESULT TruncateSection(void* section, DWORD len)
sectionvoid*inout切り詰める対象のセクションへのハンドルを指定する。
lenDWORDin切り詰めるバイト数を指定する。
vtbl 16 HRESULT GenerateCeeMemoryImage(void** ppImage)
ppImagevoid**inout生成されたメモリ上のイメージへのポインタを受け取る。
vtbl 17 HRESULT ComputePointer(void* section, DWORD RVA, BYTE** lpBuffer)
sectionvoid*inout対象のセクションへのハンドルを指定する。
RVADWORDinポインタを計算する相対仮想アドレス (RVA) を指定する。
lpBufferBYTE**inoutRVA に対応する実際のメモリ位置へのポインタを受け取る。

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_ICeeGen "{7ED1BDFF-8E36-11D2-9C56-00A0C9B7CC45}"
#usecom global ICeeGen IID_ICeeGen "{}"
#comfunc global ICeeGen_EmitString              3 wstr,var
#comfunc global ICeeGen_GetString               4 int,var
#comfunc global ICeeGen_AllocateMethodBuffer    5 int,var,var
#comfunc global ICeeGen_GetMethodBuffer         6 int,var
#comfunc global ICeeGen_GetIMapTokenIface       7 sptr
#comfunc global ICeeGen_GenerateCeeFile         8
#comfunc global ICeeGen_GetIlSection            9 sptr
#comfunc global ICeeGen_GetStringSection        10 sptr
#comfunc global ICeeGen_AddSectionReloc         11 sptr,int,sptr,int
#comfunc global ICeeGen_GetSectionCreate        12 str,int,sptr
#comfunc global ICeeGen_GetSectionDataLen       13 sptr,var
#comfunc global ICeeGen_GetSectionBlock         14 sptr,int,int,sptr
#comfunc global ICeeGen_TruncateSection         15 sptr,int
#comfunc global ICeeGen_GenerateCeeMemoryImage  16 sptr
#comfunc global ICeeGen_ComputePointer          17 sptr,int,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。