IDiaTable

Enumera una tabla de origen de datos de DIA.

Sintaxis

IDiaTable : IEnumUnknown

Métodos en orden de Vtable

En la tabla siguiente se muestran los métodos de IDiaTable.

Método Descripción
IDiaTable::get__NewEnum Recupera la versión de la interfaz IEnumVARIANT de este enumerador.
IDiaTable::get_name Recupera el nombre de la tabla.
IDiaTable::get_Count Recupera el número de elementos de la tabla.
IDiaTable::Item Recupera una referencia a un índice de entrada determinado.

Observaciones

Esta interfaz implementa los métodos de enumeración IEnumUnknown en el espacio de nombres Microsoft.VisualStudio.OLE.Interop. La interfaz de enumeración IEnumUnknown es mucho más eficaz para recorrer en iteración el contenido de la tabla que los métodos IDiaTable::get_Count y IDiaTable::Item.

La interpretación de la interfaz IUnknown devuelta por el método IDiaTable::Item o por el método Next (en el espacio de nombres Microsoft.VisualStudio.OLE.Interop) depende del tipo de tabla. Por ejemplo, si la interfaz IDiaTable representa una lista de códigos fuente insertados, se debe consultar a la interfaz IUnknown sobre la interfaz IDiaInjectedSource.

Notas para autores de la llamada

Obtenga esta interfaz llamando a los métodos IDiaEnumTables::Item o IDiaEnumTables::Next.

Las siguientes interfaces se implementan con la interfaz IDiaTable (es decir, puede consultar la interfaz IDiaTable sobre una de las siguientes interfaces):

Ejemplo

La primera función, ShowTableNames, muestra los nombres de todas las tablas de la sesión. La segunda función, GetTable, busca en todas las tablas una tabla que implemente una interfaz especificada. La tercera función, UseTable, muestra cómo usar la función GetTable.

Nota

CDiaBSTR es una clase que encapsula BSTR y controla automáticamente la liberación de la cadena cuando la creación de instancias sale del ámbito.

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

Encabezado: Dia2.h

Biblioteca: diaguids.lib

DLL: msdia80.dll

Vea también