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 |
---|---|
Récupère la version d' IEnumVARIANT Interface de cet énumérateur. |
|
Extrait le nom de la table. |
|
Récupère le nombre d'éléments du tableau. |
|
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
Autres ressources
Interfaces (Kit de développement logiciel de Debug Interface Access)