Udostępnij za pośrednictwem


IDiaTable

Wylicza tabelę źródła danych DIA.

Składnia

IDiaTable : IEnumUnknown

Metody w tabeli Vtable Order

W poniższej tabeli przedstawiono metody .IDiaTable

Metoda opis
IDiaTable::get__NewEnum Pobiera wersję interfejsu IEnumVARIANT tego modułu wyliczającego.
IDiaTable::get_name Pobiera nazwę tabeli.
IDiaTable::get_Count Pobiera liczbę elementów w tabeli.
IDiaTable::Item Pobiera odwołanie do określonego indeksu wpisu.

Uwagi

Ten interfejs implementuje IEnumUnknown metody wyliczania w przestrzeni nazw Microsoft.VisualStudio.OLE.Interop. Interfejs IEnumUnknown wyliczania jest znacznie bardziej wydajny w przypadku iterowania zawartości tabeli niż metody IDiaTable::get_Count i IDiaTable::Item .

Interpretacja interfejsu IUnknown zwróconego IDiaTable::Item z metody lub Next metody (w przestrzeni nazw Microsoft.VisualStudio.OLE.Interop) zależy od typu tabeli. Jeśli na przykład IDiaTable interfejs reprezentuje listę wstrzykniętych źródeł, IUnknown interfejs powinien zostać zapytany o interfejs IDiaInjectedSource .

Uwagi dotyczące wywoływania

Uzyskaj ten interfejs, wywołując metody IDiaEnumTables::Item lub IDiaEnumTables::Next .

Następujące interfejsy są implementowane za pomocą interfejsu IDiaTable (czyli można wykonać zapytanie dotyczące interfejsu IDiaTable dla jednego z następujących interfejsów):

Przykład

Pierwsza funkcja , ShowTableNameswyświetla nazwy wszystkich tabel w sesji. Druga funkcja , GetTablewyszukuje wszystkie tabele dla tabeli, która implementuje określony interfejs. Trzecia funkcja , pokazuje, UseTablejak używać GetTable funkcji.

Uwaga

CDiaBSTR jest klasą, która opakowuje BSTR element i automatycznie obsługuje zwalnianie ciągu, gdy wystąpienie 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

Biblioteka: diaguids.lib

BIBLIOTEKA DLL: msdia80.dll

Zobacz też