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