Sdílet prostřednictvím


IDiaTable

Vytvoří výčet tabulky zdroje dat DIA.

Syntaxe

IDiaTable : IEnumUnknown

Metody v pořadí Vtable

Následující tabulka ukazuje metody IDiaTable.

metoda Popis
IDiaTable::get__NewEnum Načte verzi rozhraní IEnumVARIANT tohoto enumerátoru.
IDiaTable::get_name Načte název tabulky.
IDiaTable::get_Count Načte počet položek v tabulce.
IDiaTable::Item Načte odkaz na konkrétní index položky.

Poznámky

Toto rozhraní implementuje metody výčtu IEnumUnknown v oboru názvů Microsoft.VisualStudio.OLE.Interop. Rozhraní IEnumUnknown výčtu je mnohem efektivnější pro iteraci obsahu tabulky než IDiaTable::get_Count a IDiaTable::Item metody.

Interpretace IUnknown rozhraní vrácené metodou IDiaTable::Item nebo metodou Next (v oboru názvů Microsoft.VisualStudio.OLE.Interop) závisí na typu tabulky. Pokud IDiaTable například rozhraní představuje seznam vloženého zdroje, IUnknown rozhraní by mělo být dotazováno pro IDiaInjectedSource rozhraní.

Poznámky pro volající

Získejte toto rozhraní voláním IDiaEnumTables::Item nebo IDiaEnumTables::Next metody.

Následující rozhraní jsou implementována IDiaTable s rozhraním (to znamená, že můžete dotazovat IDiaTable rozhraní pro jedno z následujících rozhraní):

Příklad

První funkce ShowTableNames, zobrazí názvy všech tabulek v relaci. Druhá funkce , GetTablevyhledá všechny tabulky pro tabulku, která implementuje zadané rozhraní. Třetí funkce, UseTable, ukazuje, jak používat GetTable funkci.

Poznámka:

CDiaBSTR je třída, která zabalí BSTR řetězec a automaticky zpracuje uvolnění řetězce při vytvoření instance 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

Hlavička: Dia2.h

Knihovna: diaguids.lib

DLL: msdia80.dll

Viz také