IDiaTable
Перечисляет таблицы источника данных DIA.
IDiaTable : IEnumUnknown
Методы в том порядке Vtable
В следующей таблице показаны методы IDiaTable.
Метод |
Описание |
---|---|
Извлекает интерфейс IEnumVARIANT версия данного перечислителя. |
|
Извлекает имя таблицы. |
|
Получает число элементов в таблице. |
|
Извлекает ссылку к указанному индексу. |
Заметки
Этот интерфейс реализуется IEnumUnknown методы перечисления в пространстве имен Microsoft.VisualStudio.OLE.Interop. IEnumUnknown интерфейс перечисления гораздо эффективнее, чем для перебора содержимым таблицы IDiaTable::get_Count и IDiaTable::Item методы.
Интерпретация IUnknown интерфейс возвращается из IDiaTable::Item метод или Next метод (в пространстве имен Microsoft.VisualStudio.OLE.Interop) зависят от типа таблицы. Например, если IDiaTable интерфейс представляет список источников, впрыснутых IUnknown интерфейс должен быть для запрашивается IDiaInjectedSource интерфейс.
Замечания для вызывающих объектов
Для получения этого интерфейса нужно вызвать метод IDiaEnumTables::Item OR IDiaEnumTables::Next методы.
Следующие интерфейсы реализуются с IDiaTable интерфейс (то есть можно запросить IDiaTable интерфейс для одного из следующих интерфейсов):
Пример
Первая функция ShowTableNamesотображает имена всех таблиц в сеансе. Вторая функция GetTableпоиск, все таблицы, которая реализует указанный интерфейс. Третья функция UseTableуказывает, как использовать GetTable функция.
Примечание
CDiaBSTR класс, который создает программу-оболочку a 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