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文字列ヒープのサイズ(バイト単位)へのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 4 HRESULT GetBlobHeapSize(DWORD* pcbBlobs)

取得したバイナリデータへのポインターへのポインター。

pcbBlobsDWORD*inoutBLOB ヒープのサイズ(バイト単位)へのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 5 HRESULT GetGuidHeapSize(DWORD* pcbGuids)

GUID ヒープのサイズをバイト単位で取得します。

pcbGuidsDWORD*inoutGUID ヒープのサイズ(バイト単位)へのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 6 HRESULT GetUserStringHeapSize(DWORD* pcbBlobs)

ユーザー文字列ヒープのサイズをバイト単位で取得します。

pcbBlobsDWORD*inoutユーザー文字列ヒープのサイズをバイト数で受け取る。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 7 HRESULT GetNumTables(DWORD* pcTables)

現在の IMetaDataTables インスタンスのスコープ内にあるテーブルの数を取得します。

pcTablesDWORD*inout現在のインスタンススコープ内のテーブル数へのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 8 HRESULT GetTableIndex(DWORD token, DWORD* pixTbl)

指定されたトークンが参照するテーブルのインデックスを取得します。

tokenDWORDinテーブルを参照するトークン。
pixTblDWORD*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) を参照してください。

vtbl 9 HRESULT GetTableInfo(DWORD ixTbl, DWORD* pcbRow, DWORD* pcRows, DWORD* pcCols, DWORD* piKey, CHAR** ppName)

指定されたテーブルの名前、行サイズ、行数、列数、およびキー列のインデックスを取得します。

ixTblDWORDinプロパティを返すテーブルの識別子。
pcbRowDWORD*inoutテーブルの行のサイズ(バイト単位)へのポインター。
pcRowsDWORD*inoutテーブル内の行数へのポインター。
pcColsDWORD*inoutテーブル内の列数へのポインター。
piKeyDWORD*inoutキー列のインデックスへのポインター。テーブルにキー列がない場合は -1。
ppNameCHAR**inテーブル名へのポインターへのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

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列名へのポインターへのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 11 HRESULT GetCodedTokenInfo(DWORD ixCdTkn, DWORD* pcTokens, DWORD** ppTokens, CHAR** ppName)

指定された行インデックスに関連付けられたトークンの配列へのポインターを取得します。

ixCdTknDWORDin返すコード化トークンの種類。
pcTokensDWORD*inoutppTokens の長さへのポインター。
ppTokensDWORD**inout返されるトークンのリストを格納する配列へのポインターへのポインター。
ppNameCHAR**inixCdTkn のトークンの名前へのポインターへのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 12 HRESULT GetRow(DWORD ixTbl, DWORD rid, void** ppRow)

指定されたテーブルインデックスのテーブル内で、指定された行インデックスの行を取得します。

ixTblDWORDin行を取得する対象のテーブルのインデックス。
ridDWORDin取得する行のインデックス。
ppRowvoid**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) を参照してください。

vtbl 13 HRESULT GetColumn(DWORD ixTbl, DWORD ixCol, DWORD rid, DWORD* pVal)

指定されたテーブル内の、指定された列と行のセルに格納されている値へのポインターを取得します。

ixTblDWORDinテーブルのインデックス。
ixColDWORDinテーブル内の列のインデックス。
ridDWORDinテーブル内の行のインデックス。
pValDWORD*inoutセル内の値へのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 14 HRESULT GetString(DWORD ixString, CHAR** ppString)

現在の参照スコープにあるテーブル列から、指定されたインデックスの文字列を取得します。

ixStringDWORDin次の値の検索を開始するインデックス。
ppStringCHAR**in返される文字列値へのポインターへのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 15 HRESULT GetBlob(DWORD ixBlob, DWORD* pcbData, void** ppData)

指定された列インデックスにあるバイナリラージオブジェクト (BLOB) へのポインターを取得します。

ixBlobDWORDinppData を取得するメモリアドレス。
pcbDataDWORD*inoutppData のサイズ(バイト単位)へのポインター。
ppDatavoid**in取得したバイナリデータへのポインターへのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 16 HRESULT GetGuid(DWORD ixGuid, GUID** ppGUID)

指定されたインデックスの行から GUID を取得します。

ixGuidDWORDinGUID を取得する対象の行のインデックス。
ppGUIDGUID**inGUID へのポインターへのポインター。

戻り値

このメソッドが成功した場合は 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) を参照してください。

vtbl 17 HRESULT GetUserString(DWORD ixUserString, DWORD* pcbData, void** ppData)

現在のスコープにある文字列列で、指定されたインデックスのハードコードされた文字列を取得します。

ixUserStringDWORDinハードコードされた文字列を取得するインデックス値。
pcbDataDWORD*inoutppData のサイズへのポインター。
ppDatavoid**in返される文字列へのポインターへのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 18 HRESULT GetNextString(DWORD ixString, DWORD* pNext)

現在のテーブル列における次の文字列のインデックスを取得します。

ixStringDWORDin文字列テーブル列のインデックス値。
pNextDWORD*inout列内の次の文字列のインデックスへのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 19 HRESULT GetNextBlob(DWORD ixBlob, DWORD* pNext)

テーブル内の次のバイナリラージオブジェクト (BLOB) のインデックスを取得します。

ixBlobDWORDinBLOB の列から返されたインデックス。
pNextDWORD*inout次の BLOB のインデックスへのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 20 HRESULT GetNextGuid(DWORD ixGuid, DWORD* pNext)

現在のテーブル列における次の GUID 値のインデックスを取得します。

ixGuidDWORDinGUID テーブル列のインデックス値。
pNextDWORD*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) を参照してください。

vtbl 21 HRESULT GetNextUserString(DWORD ixUserString, DWORD* pNext)

現在のテーブル列で、次のハードコードされた文字列を格納する行のインデックスを取得します。

ixUserStringDWORDin現在の文字列列のインデックス値。
pNextDWORD*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 の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 指定が可能。