IDiaTable

Hiermit wird eine DIA-Datenquellentabelle aufgelistet.

Syntax

IDiaTable : IEnumUnknown

Methoden in Vtable-Reihenfolge

In der folgenden Tabelle sind die Methoden von IDiaTable aufgeführt.

Methode BESCHREIBUNG
IDiaTable::get__NewEnum Hiermit wird die Version der IEnumVARIANT-Schnittstelle dieses Enumerators abgerufen.
IDiaTable::get_name Hiermit wird der Name der Tabelle abgerufen.
IDiaTable::get_Count Hiermit wird die Anzahl der Elemente in der Tabelle abgerufen.
IDiaTable::Item Hiermit wird ein Verweis auf einen bestimmten Eintragsindex abgerufen.

Bemerkungen

Diese Schnittstelle implementiert die IEnumUnknown-Enumerationsmethoden im Microsoft.VisualStudio.OLE.Interop-Namespace. Die IEnumUnknown-Enumerationsschnittstelle ist wesentlich effizienter für das Durchlaufen der Tabelleninhalte als die Methoden IDiaTable::get_Count und IDiaTable::Item.

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

Hinweise für Aufrufer

Rufen Sie diese Schnittstelle ab, indem Sie die Methode IDiaEnumTables::Item oder die Methode IDiaEnumTables::Next aufrufen.

Die folgenden Schnittstellen werden mit der IDiaTable-Schnittstelle implementiert (d. h., Sie können die IDiaTable-Schnittstelle für eine der folgenden Schnittstellen abfragen):

Beispiel

Die erste Funktion (ShowTableNames) zeigt die Namen aller Tabellen in der Sitzung an. Die zweite Funktion (GetTable) durchsucht alle Tabellen nach einer Tabelle, die eine angegebene Schnittstelle implementiert. Die dritte Funktion (UseTable) zeigt, wie die GetTable-Funktion verwendet wird.

Hinweis

CDiaBSTR ist eine Klasse, die ein BSTR-Element umschließt und automatisch die Freigabe der Zeichenfolge verarbeitet, wenn die Instanziierung den Gültigkeitsbereich überschreitet.

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

DLL: msdia80.dll

Weitere Informationen