Sdílet prostřednictvím


IDiaTable

Vytvoří výčet DIA data zdrojovou tabulku.

IDiaTable : IEnumUnknown

Metody v pořadí virtuální tabulka

Následující tabulka obsahuje metody IDiaTable.

Metoda

Description

IDiaTable::get__NewEnum

Načte IEnumVARIANT Interface verzi tohoto čítače výčtu.

IDiaTable::get_name

Načte název tabulky.

IDiaTable::get_Count

Číslo položky v tabulce získá.

IDiaTable::Item

Získá odkaz na konkrétní položky indexu.

Poznámky

Implementuje rozhraní IEnumUnknown výčet metod v oboru názvů Microsoft.VisualStudio.OLE.Interop.IEnumUnknown Výčtu rozhraní je mnohem efektivnější iterace obsahu než IDiaTable::get_Count a IDiaTable::Item metod.

Výklad IUnknown rozhraní vrátil buď IDiaTable::Item metoda nebo Next metodou (v oboru názvů Microsoft.VisualStudio.OLE.Interop) je závislé na typu tabulka.Například pokud IDiaTable rozhraní představuje seznam vloženého zdrojů IUnknown rozhraní by měly být zadávány dotazy IDiaInjectedSource rozhraní.

Poznámky pro volající

Získat voláním rozhraní IDiaEnumTables::Item nebo IDiaEnumTables::Next metod.

Následující rozhraní jsou implementovány s IDiaTable rozhraní (, můžete dotaz IDiaTable rozhraní pro jednu z následujících rozhraní):

Příklad

První funkce ShowTableNames, zobrazí se názvy všech tabulek v relaci.Druhá funkce GetTable, vyhledá všechny tabulky pro tabulku, která implementuje určeného rozhraní.Třetí funkce UseTable, ukazuje, jak použít GetTable funkce.

[!POZNÁMKA]

CDiaBSTRje třída zalomí BSTR a automaticky zpracovává uvolnění řetězce při vytváření instance dostane mimo rozsah.

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

Požadavky

Záhlaví: Dia2.h

Knihovny: diaguids.lib

Knihovna DLL: msdia80.dll

Viz také

Referenční dokumentace

IDiaEnumTables

IDiaEnumTables::Item

IDiaEnumTables::Next

Další zdroje

Rozhraní (ladění přístupu k rozhraní SDK)