Поделиться через


IDiaTable

Перечисляет таблицы источника данных DIA.

IDiaTable : IEnumUnknown

Методы в том порядке Vtable

В следующей таблице показаны методы IDiaTable.

Метод

Описание

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 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

См. также

Ссылки

IDiaEnumTables

IDiaEnumTables::Item

IDiaEnumTables::Next

Другие ресурсы

Интерфейсы (SDK для доступа к интерфейсу отладки)