IDiaTable
DIA データ ソース テーブルを列挙します。
構文
IDiaTable : IEnumUnknown
Vtable 順序のメソッド
次の表に、IDiaTable
のメソッドを示します。
メソッド | 説明 |
---|---|
IDiaTable::get__NewEnum | この列挙子の IEnumVARIANT インターフェイス バージョンを取得します。 |
IDiaTable::get_name | テーブルの名前を取得します。 |
IDiaTable::get_Count | テーブル内の項目の数を取得します。 |
IDiaTable::Item | 特定のエントリ インデックスへの参照を取得します。 |
解説
このインターフェイスは、Microsoft.VisualStudio.OLE.Interop 名前空間の、IEnumUnknown
列挙型のメソッドを実装します。 IEnumUnknown
列挙型インターフェイスでは、IDiaTable::get_Count メソッドや IDiaTable::Item メソッドよりも、テーブルの内容の反復処理をはるかに効率的に行うことができます。
(Microsoft.VisualStudio.OLE.Interop 名前空間の) IDiaTable::Item
メソッドまたは Next
メソッドから返される IUnknown
インターフェイスの解釈は、テーブルの型によって異なります。 たとえば、IDiaTable
インターフェイスが挿入されたソースのリストを表す場合、IUnknown
インターフェースに対して IDiaInjectedSource インターフェイスを照会する必要があります。
呼び出し元に関する注意事項
このインターフェイスを取得するには、IDiaEnumTables::Item または IDiaEnumTables::Next メソッドを呼び出します。
次のインターフェイスは、IDiaTable
インターフェイスで実装されています (つまり、IDiaTable
インターフェイスに対して、次のいずれかのインターフェイスを照会できます)。
例
最初の関数の ShowTableNames
は、セッション内のすべてのテーブルの名前を表示します。 2 番目の関数の GetTable
は、すべてのテーブルを対象に、指定されたインターフェイスを実装するテーブルを検索します。 3 番目の関数の UseTable
は、GetTable
関数の使用方法を示します。
Note
CDiaBSTR
は、BSTR
をラップし、インスタンス化がスコープ外になったときに文字列の解放を自動的に処理するクラスです。
void ShowTableNames(IDiaSession *pSession)
{
CComPtr<IDiaEnumTables> pTables;
if ( FAILED( psession->getEnumTables( &pTables ) ) )
{
Fatal( "getEnumTables" );
}
CComPtr< IDiaTable > pTable;
while ( SUCCEEDED( hr = pTables->Next( 1, &pTable, &celt ) )
&& celt == 1 )
{
CDiaBSTR bstrTableName;
if ( pTable->get_name( &bstrTableName ) != 0 )
{
Fatal( "get_name" );
}
printf( "Found table: %ws\n", bstrTableName );
}
// Searches the list of all tables for a table that supports
// the specified interface. Use this function to obtain an
// enumeration interface.
HRESULT GetTable(IDiaSession* pSession,
REFIID iid,
void** ppUnk)
{
CComPtr<IDiaEnumTables> pEnumTables;
HRESULT hResult;
if (FAILED(pSession->getEnumTables(&pEnumTables)))
Fatal("getEnumTables");
CComPtr<IDiaTable> pTable;
ULONG celt = 0;
while (SUCCEEDED(hResult = pEnumTables->Next(1, &pTable, &celt)) &&
celt == 1)
{
if (pTable->QueryInterface(iid, (void**)ppUnk) == S_OK)
{
return S_OK;
}
pTable = NULL;
}
if (FAILED(hResult))
Fatal("EnumTables->Next");
return E_FAIL;
}
// This function shows how to use the GetTable function.
void UseTable(IDiaSession *pSession)
{
CComPtr<IDiaEnumSegments> pEnumSegments;
if (SUCCEEDED(GetTable(pSession, __uuidof(IDiaEnumSegments), &pEnumSegments)))
{
// Do something with pEnumSegments.
}
}
要件
ヘッダー: Dia2.h
ライブラリ: diaguids.lib
DLL: msdia80.dll