Condividi tramite


IDiaTable

Enumera una tabella dell'origine dati DIA.

Sintassi

IDiaTable : IEnumUnknown

Metodi nell'ordine Vtable

Nella tabella seguente vengono illustrati i metodi di IDiaTable.

metodo Descrizione
IDiaTable::get__NewEnum Recupera la versione dell'interfaccia IEnumVARIANT di questo enumeratore.
IDiaTable::get_name Recupera il nome della tabella.
IDiaTable::get_Count Recupera il numero di elementi nella tabella.
IDiaTable::Item Recupera un riferimento a un particolare indice di voce.

Osservazioni:

Questa interfaccia implementa i IEnumUnknown metodi di enumerazione nello spazio dei nomi Microsoft.VisualStudio.OLE.Interop. L'interfaccia IEnumUnknown di enumerazione è molto più efficiente per l'iterazione del contenuto del sommario rispetto ai metodi IDiaTable::get_Count e IDiaTable::Item .

L'interpretazione dell'interfaccia IUnknown restituita dal IDiaTable::Item metodo o dal Next metodo (nello spazio dei nomi Microsoft.VisualStudio.OLE.Interop) dipende dal tipo di tabella. Ad esempio, se l'interfaccia IDiaTable rappresenta un elenco di origini inserite, l'interfaccia IUnknown deve essere eseguita una query per l'interfaccia IDiaInjectedSource .

Note per i chiamanti

Ottenere questa interfaccia chiamando i metodi IDiaEnumTables::Item o IDiaEnumTables::Next .

Le interfacce seguenti vengono implementate con l'interfaccia IDiaTable , ovvero è possibile eseguire una query sull'interfaccia IDiaTable per una delle interfacce seguenti:

Esempio

La prima funzione, ShowTableNames, visualizza i nomi di tutte le tabelle della sessione. La seconda funzione, GetTable, cerca in tutte le tabelle una tabella che implementa un'interfaccia specificata. La terza funzione, UseTable, mostra come usare la GetTable funzione .

Nota

CDiaBSTR è una classe che esegue il wrapping di un BSTR oggetto e gestisce automaticamente la liberazione della stringa quando l'istanza esce dall'ambito.

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

Requisiti

Intestazione: Dia2.h

Libreria: diaguids.lib

DLL: msdia80.dll

Vedi anche