IMetaDataTables
COM公式ドキュメント
メタデータ情報をテーブルに格納したり取得したりするためのメソッドを提供します。
メソッド 19
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
文字列ヒープのサイズをバイト単位で取得します。
| pcbStrings | DWORD* | inout | 文字列ヒープのサイズ(バイト単位)へのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
取得したバイナリデータへのポインターへのポインター。
| pcbBlobs | DWORD* | inout | BLOB ヒープのサイズ(バイト単位)へのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
GUID ヒープのサイズをバイト単位で取得します。
| pcbGuids | DWORD* | inout | GUID ヒープのサイズ(バイト単位)へのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
ユーザー文字列ヒープのサイズをバイト単位で取得します。
| pcbBlobs | DWORD* | inout | ユーザー文字列ヒープのサイズをバイト数で受け取る。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
現在の IMetaDataTables インスタンスのスコープ内にあるテーブルの数を取得します。
| pcTables | DWORD* | inout | 現在のインスタンススコープ内のテーブル数へのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定されたトークンが参照するテーブルのインデックスを取得します。
| token | DWORD | in | テーブルを参照するトークン。 |
| pixTbl | DWORD* | inout | 参照先のテーブルについて返されるインデックスへのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは一貫した結果を返さないため、使用は推奨されません。GUID テーブルについては、Common Language Infrastructure (CLI) のドキュメント、特に「Partition II: Metadata Definition and Semantics」を参照してください。詳細については、Ecma International の Web サイトにある ECMA C# and Common Language Infrastructure Standards および Standard ECMA-335 - Common Language Infrastructure (CLI) を参照してください。
指定されたテーブルの名前、行サイズ、行数、列数、およびキー列のインデックスを取得します。
| ixTbl | DWORD | in | プロパティを返すテーブルの識別子。 |
| pcbRow | DWORD* | inout | テーブルの行のサイズ(バイト単位)へのポインター。 |
| pcRows | DWORD* | inout | テーブル内の行数へのポインター。 |
| pcCols | DWORD* | inout | テーブル内の列数へのポインター。 |
| piKey | DWORD* | inout | キー列のインデックスへのポインター。テーブルにキー列がない場合は -1。 |
| ppName | CHAR** | in | テーブル名へのポインターへのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定されたテーブル内の指定された列に関するデータを取得します。
| ixTbl | DWORD | in | 対象のテーブルのインデックス。 |
| ixCol | DWORD | in | 対象の列のインデックス。 |
| poCol | DWORD* | inout | 行内における列のオフセットへのポインター。 |
| pcbCol | DWORD* | inout | 列のサイズ(バイト単位)へのポインター。 |
| pType | DWORD* | inout | 列内の値の型へのポインター。 |
| ppName | CHAR** | in | 列名へのポインターへのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定された行インデックスに関連付けられたトークンの配列へのポインターを取得します。
| ixCdTkn | DWORD | in | 返すコード化トークンの種類。 |
| pcTokens | DWORD* | inout | ppTokens の長さへのポインター。 |
| ppTokens | DWORD** | inout | 返されるトークンのリストを格納する配列へのポインターへのポインター。 |
| ppName | CHAR** | in | ixCdTkn のトークンの名前へのポインターへのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定されたテーブルインデックスのテーブル内で、指定された行インデックスの行を取得します。
| ixTbl | DWORD | in | 行を取得する対象のテーブルのインデックス。 |
| rid | DWORD | in | 取得する行のインデックス。 |
| ppRow | void** | inout | 行へのポインターへのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは一貫した結果を返さないため、使用は推奨されません。GUID テーブルについては、Common Language Infrastructure (CLI) のドキュメント、特に「Partition II: Metadata Definition and Semantics」を参照してください。詳細については、Ecma International の Web サイトにある ECMA C# and Common Language Infrastructure Standards および Standard ECMA-335 - Common Language Infrastructure (CLI) を参照してください。
指定されたテーブル内の、指定された列と行のセルに格納されている値へのポインターを取得します。
| ixTbl | DWORD | in | テーブルのインデックス。 |
| ixCol | DWORD | in | テーブル内の列のインデックス。 |
| rid | DWORD | in | テーブル内の行のインデックス。 |
| pVal | DWORD* | inout | セル内の値へのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
現在の参照スコープにあるテーブル列から、指定されたインデックスの文字列を取得します。
| ixString | DWORD | in | 次の値の検索を開始するインデックス。 |
| ppString | CHAR** | in | 返される文字列値へのポインターへのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定された列インデックスにあるバイナリラージオブジェクト (BLOB) へのポインターを取得します。
| ixBlob | DWORD | in | ppData を取得するメモリアドレス。 |
| pcbData | DWORD* | inout | ppData のサイズ(バイト単位)へのポインター。 |
| ppData | void** | in | 取得したバイナリデータへのポインターへのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定されたインデックスの行から GUID を取得します。
| ixGuid | DWORD | in | GUID を取得する対象の行のインデックス。 |
| ppGUID | GUID** | in | GUID へのポインターへのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは一貫した結果を返さないため、使用は推奨されません。GUID テーブルについては、Common Language Infrastructure (CLI) のドキュメント、特に「Partition II: Metadata Definition and Semantics」を参照してください。詳細については、Ecma International の Web サイトにある ECMA C# and Common Language Infrastructure Standards および Standard ECMA-335 - Common Language Infrastructure (CLI) を参照してください。
現在のスコープにある文字列列で、指定されたインデックスのハードコードされた文字列を取得します。
| ixUserString | DWORD | in | ハードコードされた文字列を取得するインデックス値。 |
| pcbData | DWORD* | inout | ppData のサイズへのポインター。 |
| ppData | void** | in | 返される文字列へのポインターへのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
現在のテーブル列における次の文字列のインデックスを取得します。
| ixString | DWORD | in | 文字列テーブル列のインデックス値。 |
| pNext | DWORD* | inout | 列内の次の文字列のインデックスへのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
テーブル内の次のバイナリラージオブジェクト (BLOB) のインデックスを取得します。
| ixBlob | DWORD | in | BLOB の列から返されたインデックス。 |
| pNext | DWORD* | inout | 次の BLOB のインデックスへのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
現在のテーブル列における次の GUID 値のインデックスを取得します。
| ixGuid | DWORD | in | GUID テーブル列のインデックス値。 |
| pNext | DWORD* | inout | 次の GUID 値のインデックスへのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは一貫した結果を返さないため、使用は推奨されません。GUID テーブルについては、Common Language Infrastructure (CLI) のドキュメント、特に「Partition II: Metadata Definition and Semantics」を参照してください。詳細については、Ecma International の Web サイトにある ECMA C# and Common Language Infrastructure Standards および Standard ECMA-335 - Common Language Infrastructure (CLI) を参照してください。
現在のテーブル列で、次のハードコードされた文字列を格納する行のインデックスを取得します。
| ixUserString | DWORD | in | 現在の文字列列のインデックス値。 |
| pNext | DWORD* | inout | 列内の次の文字列の行インデックスへのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは一貫した結果を返さないため、使用は推奨されません。GUID テーブルについては、Common Language Infrastructure (CLI) のドキュメント、特に「Partition II: Metadata Definition and Semantics」を参照してください。詳細については、Ecma International の Web サイトにある ECMA C# and Common Language Infrastructure Standards および Standard ECMA-335 - Common Language Infrastructure (CLI) を参照してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
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 指定が可能。#define global IID_IMetaDataTables "{D8F579AB-402D-4B8E-82D9-5D63B1065C68}" #usecom global IMetaDataTables IID_IMetaDataTables "{}" #comfunc global IMetaDataTables_GetStringHeapSize 3 sptr #comfunc global IMetaDataTables_GetBlobHeapSize 4 sptr #comfunc global IMetaDataTables_GetGuidHeapSize 5 sptr #comfunc global IMetaDataTables_GetUserStringHeapSize 6 sptr #comfunc global IMetaDataTables_GetNumTables 7 sptr #comfunc global IMetaDataTables_GetTableIndex 8 int,sptr #comfunc global IMetaDataTables_GetTableInfo 9 int,sptr,sptr,sptr,sptr,sptr #comfunc global IMetaDataTables_GetColumnInfo 10 int,int,sptr,sptr,sptr,sptr #comfunc global IMetaDataTables_GetCodedTokenInfo 11 int,sptr,sptr,sptr #comfunc global IMetaDataTables_GetRow 12 int,int,sptr #comfunc global IMetaDataTables_GetColumn 13 int,int,int,sptr #comfunc global IMetaDataTables_GetString 14 int,sptr #comfunc global IMetaDataTables_GetBlob 15 int,sptr,sptr #comfunc global IMetaDataTables_GetGuid 16 int,sptr #comfunc global IMetaDataTables_GetUserString 17 int,sptr,sptr #comfunc global IMetaDataTables_GetNextString 18 int,sptr #comfunc global IMetaDataTables_GetNextBlob 19 int,sptr #comfunc global IMetaDataTables_GetNextGuid 20 int,sptr #comfunc global IMetaDataTables_GetNextUserString 21 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。