Partager via


IDiaTable

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

IDiaTable : IEnumUnknown

méthodes en commande de Vtable

Le tableau suivant répertorie les méthodes d' IDiaTable.

Méthode

Description

IDiaTable::get__NewEnum

Récupère la version d' IEnumVARIANT Interface de cet énumérateur.

IDiaTable::get_name

Extrait le nom de la table.

IDiaTable::get_Count

Récupère le nombre d'éléments du tableau.

IDiaTable::Item

extrait une référence à un index d'entrée particulier.

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 pour itérer sur le contenu du tableau que les méthodes d' IDiaTable::get_Count et d' IDiaTable::Item .

La traduction de l'interface d' IUnknown retournée par la méthode d' IDiaTable::Item ou de la méthode d' Next (dans l'espace de noms Microsoft.VisualStudio.OLE.Interop) dépend du type de tableau. Par exemple, si l'interface d' IDiaTable représente une liste des sources injectées, l'interface d' IUnknown doit être interrogé pour l'interface d' IDiaInjectedSource .

Remarques pour les appelants

obtenez cette interface en appelant les méthodes d' IDiaEnumTables::Item ou d' IDiaEnumTables::Next .

Les interfaces suivantes sont implémentées avec l'interface d' IDiaTable (autrement dit, vous pouvez interroger l'interface d' IDiaTable pour 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 tous les tableaux pour une table qui implémente une interface spécifiée. la troisième fonction, UseTable, montre comment utiliser la fonction d' GetTable .

Notes

CDiaBSTR est une classe qui encapsule BSTR et automatiquement les handles libérant la chaîne lorsque l'instanciation est hors de portée.

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

Référence

IDiaEnumTables

IDiaEnumTables::Item

IDiaEnumTables::Next

Autres ressources

Interfaces (Kit de développement logiciel de Debug Interface Access)