IDiaTable

Enumera una tabella di origine dati di diametro.

IDiaTable : IEnumUnknown

Metodi nell'ordine di Vtable

Nella tabella seguente sono elencati i metodi di IDiaTable.

Metodo

Descrizione

IDiaTable::get__NewEnum

recupera interfaccia di IEnumVARIANT versione di questo enumeratore.

IDiaTable::get_name

Recupera il nome della tabella.

IDiaTable::get_Count

Recupera il numero di elementi della tabella.

IDiaTable::Item

Recupera un riferimento a un particolare indice della voce.

Note

questa interfaccia implementa IEnumUnknown metodi di enumerazione nello spazio dei nomi Microsoft.VisualStudio.OLE.Interop.IEnumUnknown l'interfaccia di enumerazione è molto più efficiente per la ripetizione sul contenuto della tabella che IDiaTable::get_Count e IDiaTable::Item metodi.

L'interpretazione di IUnknown interfaccia restituito dall'una o l'altra IDiaTable::Item metodo o Next il metodo (nello spazio dei nomi Microsoft.VisualStudio.OLE.Interop) dipende dal tipo di tabella.Ad esempio, se IDiaTable l'interfaccia rappresenta un elenco di database di origine inseriti, IUnknown l'interfaccia deve essere eseguire una query per IDiaInjectedSource interfaccia.

Note per i chiamanti

Leggi questa interfaccia chiamando IDiaEnumTables::Item o IDiaEnumTables::Next metodi.

Le seguenti interfacce implementate con IDiaTable interfaccia (ovvero è possibile eseguire una query IDiaTable interfaccia per una delle interfacce):

Esempio

la prima funzione, ShowTableNames, visualizza i nomi di tutte le tabelle nella sessione.la seconda funzione, GetTable, esamina tutte le tabelle per una tabella che implementa un'interfaccia specificata.la terza funzione, UseTable, viene illustrato come utilizzare GetTable funzione.

[!NOTA]

CDiaBSTR è una classe che esegue il wrapping di un oggetto BSTR e posizionano gli handle che liberano la stringa durante la creazione di istanze 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

raccolta: diaguids.lib

DLL: msdia80.dll

Vedere anche

Riferimenti

IDiaEnumTables

IDiaEnumTables::Item

IDiaEnumTables::Next

Altre risorse

Interfacce (Debug Interface Access SDK)