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 方法更有效率地逐一查看資料表內容。
從 IDiaTable::Item
方法或 Next
方法 (在 Microsoft.VisualStudio.OLE.Interop 命名空間中) 中傳回的 IUnknown
介面的解譯取決於資料表的類型。 例如,如果 IDiaTable
介面代表插入來源的清單,則應該查詢 IUnknown
介面來取得 IDiaInjectedSource 介面。
呼叫端注意事項
呼叫 IDiaEnumTables::Item 或 IDiaEnumTables::Next 方法來取得此介面。
下列介面是使用 IDiaTable
介面實作的 (也就是說,您可以查詢 IDiaTable
介面來取得下列其中一個介面):
範例
第一個函式 ShowTableNames
會顯示工作階段中所有資料表的名稱。 第二個函式 GetTable
會搜尋所有資料表中實作指定介面的資料表。 第三個函式 UseTable
會顯示如何使用 GetTable
函式。
注意
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