Partilhar via


IDiaTable

Enumera uma tabela de origem de dados do DIA.

IDiaTable : IEnumUnknown

Métodos na ordem de Vtable

A tabela a seguir mostra os métodos de IDiaTable.

Método

Descrição

IDiaTable::get__NewEnum

Recupera o IEnumVARIANT Interface versão deste enumerador.

IDiaTable::get_name

Recupera o nome da tabela.

IDiaTable::get_Count

Recupera o número de itens na tabela.

IDiaTable::Item

Recupera uma referência a um índice de entrada em particular.

Comentários

Essa interface implementa o IEnumUnknown métodos de enumeração no namespace Microsoft.VisualStudio.OLE.Interop. O IEnumUnknown interface de enumeração é muito mais eficiente para iterar sobre o conteúdo da tabela que o IDiaTable::get_Count e IDiaTable::Item métodos.

A interpretação do IUnknown interface retornado a partir de um a IDiaTable::Item método ou o Next método (no namespace Microsoft.VisualStudio.OLE.Interop) depende do tipo de tabela. Por exemplo, se a IDiaTable interface representa uma lista de fontes injetados, o IUnknown interface deve ser consultado para o IDiaInjectedSource interface.

Observações para chamadores

Obter essa interface chamando o IDiaEnumTables::Item ou IDiaEnumTables::Next métodos.

As seguintes interfaces são implementadas com o IDiaTable interface (ou seja, você pode consultar a IDiaTable interface para uma das seguintes interfaces):

Exemplo

A primeira função, ShowTableNames, exibe os nomes de todas as tabelas na sessão. A segunda função, GetTable, procura todas as tabelas para uma tabela que implementa uma interface especificada. A terceira função, UseTable, mostra como usar o GetTable função.

Dica

CDiaBSTRé uma classe que encapsula um BSTR e trata automaticamente liberando a seqüência de caracteres quando a instanciação sai do escopo.

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

Requisitos

Cabeçalho: Dia2.h

Biblioteca: diaguids.lib

DLL: msdia80.dll

Consulte também

Referência

IDiaEnumTables

IDiaEnumTables::Item

IDiaEnumTables::Next

Outros recursos

Interfaces (SDK de Acesso à Interface de Depuração)