Freigeben über


IDiaTable

Listet Durchmesser-Datenquellen eine Tabelle auf.

IDiaTable : IEnumUnknown

Methoden in die Vtable-Reihenfolge

In der folgenden Tabelle werden die Methoden von IDiaTablean.

Methode

Beschreibung

IDiaTable::get__NewEnum

Ruft die IEnumVARIANT Interface-Version dieses Enumerators ab.

IDiaTable::get_name

Ruft den Namen der Tabelle ab oder legt ihn fest.

IDiaTable::get_Count

Ruft die Anzahl der Elemente in der Tabelle ab.

IDiaTable::Item

Ruft einen Verweis auf einen bestimmten Eintrags Index ab.

Hinweise

Diese Schnittstelle implementiert die IEnumUnknown-Enumerationsmethoden im Microsoft.VisualStudio.OLE.Interop-Namespace.Die IEnumUnknown-Enumerationsschnittstelle kann zum Durchlaufen von Tabellen und IDiaTable::get_Count die als Inhalt der IDiaTable::Item-Methoden deutlich effizienter.

Die Interpretation der IUnknown-Schnittstelle, die von der IDiaTable::Item-Methode oder der Next-Methode zurückgegeben wird (im Microsoft.VisualStudio.OLE.Interop-Namespace) weist den Typ der Tabelle ab.Wenn beispielsweise die IDiaTable-Schnittstelle eine Liste mit eingefügten Quellen darstellt, sollte die IUnknown-Schnittstelle für die IDiaInjectedSource-Schnittstelle abgefragt werden.

Hinweise für Aufrufer

Rufen Sie diese Schnittstelle, indem sie die IDiaEnumTables::Item oder IDiaEnumTables::Next-Methoden aufgerufen werden.

Die folgenden Schnittstellen werden mit der IDiaTable-Schnittstelle implementiert (das heißt Sie können die IDiaTable-Schnittstelle für eine der folgenden Schnittstellen abfragen):

Beispiel

Die erste Funktion, ShowTableNames, werden die Namen aller Tabellen in der Sitzung an.Die zweite Funktion, GetTableallen Tabellen durchsucht, für eine Tabelle, die eine angegebene Schnittstelle implementiert.Die dritte Funktion, UseTable, wird gezeigt, wie die GetTable-Funktion verwendet.

HinweisHinweis

CDiaBSTR ist eine Klasse, die BSTR behandelt und automatisch durchgeführt wird, die die Zeichenfolge freigeben, wenn die Instanziierung den Gültigkeitsbereich verlässt.

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

Anforderungen

Header: Dia2.h

Bibliothek: diaguids.lib

DLLs: msdia80.dll

Siehe auch

Referenz

IDiaEnumTables

IDiaEnumTables::Item

IDiaEnumTables::Next

Weitere Ressourcen

Schnittstellen (Debug Interface Access SDK)