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

См. также