Udostępnij za pośrednictwem


IDiaTable

Wylicza tabeli źródła danych DIA.

IDiaTable : IEnumUnknown

Metody w kolejności Vtable

W poniższej tabeli przedstawiono metody IDiaTable.

Metoda

Opis

IDiaTable::get__NewEnum

Pobiera IEnumVARIANT Interface wersji ten moduł wyliczający.

IDiaTable::get_name

Pobiera nazwę tabeli.

IDiaTable::get_Count

Pobiera numer pozycji w tabeli.

IDiaTable::Item

Pobiera odwołanie do indeksu określonego wpisu.

Uwagi

Implementuje ten interfejs IEnumUnknown metody wyliczania w obszarze nazw Microsoft.VisualStudio.OLE.Interop.IEnumUnknown Interfejsem enumeration jest znacznie bardziej efektywne Iterowanie nad spisu treści niż IDiaTable::get_Count i IDiaTable::Item metody.

Interpretacja IUnknown interfejsu zwrócił albo IDiaTable::Item metody lub Next metody (w obszarze nazw Microsoft.VisualStudio.OLE.Interop) jest uzależnione od rodzaju tabeli.Na przykład jeśli IDiaTable interfejsu reprezentuje wykaz źródeł wniesiony, IUnknown interfejsu powinny być kierowane kwerendy dla IDiaInjectedSource interfejsu.

Uwagi do wywoływania

Ten interfejs uzyskać, wywołując IDiaEnumTables::Item lub IDiaEnumTables::Next metody.

Następujące interfejsy są implementowane przy użyciu IDiaTable interfejsu (to znaczy kwerendy można IDiaTable interfejsu dla jednego z następujących interfejsów):

Przykład

Pierwsza funkcja ShowTableNames, wyświetla nazwy wszystkich tabel w sesji.Druga funkcja GetTable, przeszukiwane są wszystkie tabele dla tabeli, która implementuje określonego interfejsu.Trzecią funkcję UseTable, pokazuje, jak użyć GetTable funkcji.

[!UWAGA]

CDiaBSTRKlasa, która otacza jest BSTR i obsługuje automatyczne zwalnianie ciąg podczas wystąpienia wykracza poza zakres.

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

Wymagania

Nagłówek: Dia2.h

Biblioteki: diaguids.lib

Biblioteka DLL: msdia80.dll

Zobacz też

Informacje

IDiaEnumTables

IDiaEnumTables::Item

IDiaEnumTables::Next

Inne zasoby

Interfejsy (dostęp do interfejsu SDK debugowanie)