IDiaTable
Перечисляет таблицу источника данных DIA.
Синтаксис
IDiaTable : IEnumUnknown
Методы в порядке таблицы Vtable
В следующей таблице показаны методы IDiaTable
.
Метод | Description |
---|---|
IDiaTable::get__NewEnum | Извлекает версию интерфейса IEnumVARIANT этого перечислителя. |
IDiaTable::get_name | Извлекает имя таблицы. |
IDiaTable::get_Count | Извлекает количество элементов в таблице. |
IDiaTable::Item | Извлекает ссылку на определенный индекс записи. |
Замечания
Этот интерфейс реализует IEnumUnknown
методы перечисления в пространстве имен Microsoft.VisualStudio.OLE.Interop. Интерфейс IEnumUnknown
перечисления гораздо эффективнее для итерации содержимого таблицы, чем методы IDiaTable::get_Count и IDiaTable::Item .
Интерпретация IUnknown
интерфейса, возвращаемого методом IDiaTable::Item
или Next
методом (в пространстве имен Microsoft.VisualStudio.OLE.Interop), зависит от типа таблицы. Например, если 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.
}
}
Requirements
Заголовок: Dia2.h
Библиотека: diaguids.lib
DLL: msdia80.dll