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

IMetaDataTables

COM
IIDd8f579ab-402d-4b8e-82d9-5d63b1065c68継承元IUnknown自前メソッド開始 vtbl3

メソッド 19

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

vtbl 3 HRESULT GetStringHeapSize(DWORD* pcbStrings)
pcbStringsDWORD*inout文字列ヒープのサイズをバイト数で受け取る。
vtbl 4 HRESULT GetBlobHeapSize(DWORD* pcbBlobs)
pcbBlobsDWORD*inoutblob ヒープのサイズをバイト数で受け取る。
vtbl 5 HRESULT GetGuidHeapSize(DWORD* pcbGuids)
pcbGuidsDWORD*inoutGUID ヒープのサイズをバイト数で受け取る。
vtbl 6 HRESULT GetUserStringHeapSize(DWORD* pcbBlobs)
pcbBlobsDWORD*inoutユーザー文字列ヒープのサイズをバイト数で受け取る。
vtbl 7 HRESULT GetNumTables(DWORD* pcTables)
pcTablesDWORD*inoutメタデータテーブルの総数を受け取る。
vtbl 8 HRESULT GetTableIndex(DWORD token, DWORD* pixTbl)
tokenDWORDinテーブルインデックスを取得する対象のメタデータトークンを指定する。
pixTblDWORD*inoutトークンが属するテーブルのインデックスを受け取る。
vtbl 9 HRESULT GetTableInfo(DWORD ixTbl, DWORD* pcbRow, DWORD* pcRows, DWORD* pcCols, DWORD* piKey, CHAR** ppName)
ixTblDWORDin情報を取得する対象のテーブルのインデックスを指定する。
pcbRowDWORD*inout1 行あたりのサイズをバイト数で受け取る。
pcRowsDWORD*inoutテーブルの行数を受け取る。
pcColsDWORD*inoutテーブルの列数を受け取る。
piKeyDWORD*inoutテーブルのキー列のインデックスを受け取る。
ppNameCHAR**inテーブル名を示す文字列へのポインタを受け取る。
vtbl 10 HRESULT GetColumnInfo(DWORD ixTbl, DWORD ixCol, DWORD* poCol, DWORD* pcbCol, DWORD* pType, CHAR** ppName)
ixTblDWORDin対象のテーブルのインデックスを指定する。
ixColDWORDin情報を取得する対象の列のインデックスを指定する。
poColDWORD*inout行内における列のオフセットを受け取る。
pcbColDWORD*inout列のサイズをバイト数で受け取る。
pTypeDWORD*inout列の値の型を示すコードを受け取る。
ppNameCHAR**in列名を示す文字列へのポインタを受け取る。
vtbl 11 HRESULT GetCodedTokenInfo(DWORD ixCdTkn, DWORD* pcTokens, DWORD** ppTokens, CHAR** ppName)
ixCdTknDWORDin情報を取得する対象のコード化トークン種別のインデックスを指定する。
pcTokensDWORD*inout対象のトークン種別数を受け取る。
ppTokensDWORD**inout対象となるトークン種別を示す配列へのポインタを受け取る。
ppNameCHAR**inコード化トークンの名前を示す文字列へのポインタを受け取る。
vtbl 12 HRESULT GetRow(DWORD ixTbl, DWORD rid, void** ppRow)
ixTblDWORDin対象のテーブルのインデックスを指定する。
ridDWORDin取得する行の行 ID (1 始まり) を指定する。
ppRowvoid**inout指定行の生データへのポインタを受け取る。
vtbl 13 HRESULT GetColumn(DWORD ixTbl, DWORD ixCol, DWORD rid, DWORD* pVal)
ixTblDWORDin対象のテーブルのインデックスを指定する。
ixColDWORDin対象の列のインデックスを指定する。
ridDWORDin対象の行 ID (1 始まり) を指定する。
pValDWORD*inout指定したセルの値を受け取る。
vtbl 14 HRESULT GetString(DWORD ixString, CHAR** ppString)
ixStringDWORDin取得する文字列の、文字列ヒープ内インデックスを指定する。
ppStringCHAR**inインデックスに対応する文字列へのポインタを受け取る。
vtbl 15 HRESULT GetBlob(DWORD ixBlob, DWORD* pcbData, void** ppData)
ixBlobDWORDin取得する blob の、blob ヒープ内インデックスを指定する。
pcbDataDWORD*inoutblob のサイズをバイト数で受け取る。
ppDatavoid**inインデックスに対応する blob データへのポインタを受け取る。
vtbl 16 HRESULT GetGuid(DWORD ixGuid, GUID** ppGUID)
ixGuidDWORDin取得する GUID の、GUID ヒープ内インデックスを指定する。
ppGUIDGUID**inインデックスに対応する GUID へのポインタを受け取る。
vtbl 17 HRESULT GetUserString(DWORD ixUserString, DWORD* pcbData, void** ppData)
ixUserStringDWORDin取得するユーザー文字列の、ヒープ内インデックスを指定する。
pcbDataDWORD*inoutユーザー文字列のサイズをバイト数で受け取る。
ppDatavoid**inインデックスに対応するユーザー文字列データへのポインタを受け取る。
vtbl 18 HRESULT GetNextString(DWORD ixString, DWORD* pNext)
ixStringDWORDin現在の文字列のインデックスを指定する。
pNextDWORD*inout次の文字列のインデックスを受け取る。
vtbl 19 HRESULT GetNextBlob(DWORD ixBlob, DWORD* pNext)
ixBlobDWORDin現在の blob のインデックスを指定する。
pNextDWORD*inout次の blob のインデックスを受け取る。
vtbl 20 HRESULT GetNextGuid(DWORD ixGuid, DWORD* pNext)
ixGuidDWORDin現在の GUID のインデックスを指定する。
pNextDWORD*inout次の GUID のインデックスを受け取る。
vtbl 21 HRESULT GetNextUserString(DWORD ixUserString, DWORD* pNext)
ixUserStringDWORDin現在のユーザー文字列のインデックスを指定する。
pNextDWORD*inout次のユーザー文字列のインデックスを受け取る。

HSP用 COM定義

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

出力引数:
#define global IID_IMetaDataTables "{D8F579AB-402D-4B8E-82D9-5D63B1065C68}"
#usecom global IMetaDataTables IID_IMetaDataTables "{}"
#comfunc global IMetaDataTables_GetStringHeapSize      3 var
#comfunc global IMetaDataTables_GetBlobHeapSize        4 var
#comfunc global IMetaDataTables_GetGuidHeapSize        5 var
#comfunc global IMetaDataTables_GetUserStringHeapSize  6 var
#comfunc global IMetaDataTables_GetNumTables           7 var
#comfunc global IMetaDataTables_GetTableIndex          8 int,var
#comfunc global IMetaDataTables_GetTableInfo           9 int,var,var,var,var,var
#comfunc global IMetaDataTables_GetColumnInfo          10 int,int,var,var,var,var
#comfunc global IMetaDataTables_GetCodedTokenInfo      11 int,var,var,var
#comfunc global IMetaDataTables_GetRow                 12 int,int,sptr
#comfunc global IMetaDataTables_GetColumn              13 int,int,int,var
#comfunc global IMetaDataTables_GetString              14 int,var
#comfunc global IMetaDataTables_GetBlob                15 int,var,sptr
#comfunc global IMetaDataTables_GetGuid                16 int,var
#comfunc global IMetaDataTables_GetUserString          17 int,var,sptr
#comfunc global IMetaDataTables_GetNextString          18 int,var
#comfunc global IMetaDataTables_GetNextBlob            19 int,var
#comfunc global IMetaDataTables_GetNextGuid            20 int,var
#comfunc global IMetaDataTables_GetNextUserString      21 int,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。