IDiaTable

Énumère une table de source de données DIA.

Syntaxe

IDiaTable : IEnumUnknown

Méthodes dans l'ordre Vtable

Le tableau suivant présente les méthodes de IDiaTable.

Méthode Description
IDiaTable::get__NewEnum Récupère la version de l’interface IEnumVARIANT de cet énumérateur.
IDiaTable::get_name Récupère le nom de la table.
IDiaTable::get_Count Récupère le nombre d’éléments dans la table.
IDiaTable::Item Récupère une référence à un index d’entrée spécifique.

Notes

Cette interface implémente les méthodes d’énumération IEnumUnknown dans l’espace de noms Microsoft.VisualStudio.OLE.Interop. L’interface d’énumération IEnumUnknown est beaucoup plus efficace que les méthodes IDiaTable::get_Count et IDiaTable::Item pour l’itération sur le contenu de la table.

L’interprétation de l’interface IUnknown retournée par la méthode IDiaTable::Item ou Next (dans l’espace de noms Microsoft.VisualStudio.OLE.Interop) dépend du type de table. Par exemple, si l’interface IDiaTable représente une liste de sources injectées, l’interface IDiaInjectedSource doit être demandée à l’interface IUnknown.

Remarques pour les appelants

Pour obtenir cette interface, appelez la méthode IDiaEnumTables::Item ou IDiaEnumTables::Next.

Les interfaces suivantes sont implémentées avec l’interface IDiaTable (autrement dit, vous pouvez demander à l’interface IDiaTable l’une des interfaces suivantes) :

Exemple

La première fonction, ShowTableNames, affiche les noms de toutes les tables dans la session. La deuxième fonction, GetTable, recherche dans toutes les tables une table qui implémente une interface spécifiée. La troisième fonction, UseTable, montre comment utiliser la fonction GetTable.

Notes

CDiaBSTR est une classe qui encapsule un BSTR et qui gère automatiquement la libération de la chaîne quand l’instanciation sort de l’étendue.

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

Configuration requise

En-tête : Dia2.h

Bibliothèque : diaguids.lib

DLL : msdia80.dll

Voir aussi