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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour