IDiaTable
Enumera una tabella dell'origine dati DIA.
Sintassi
IDiaTable : IEnumUnknown
Metodi nell'ordine Vtable
Nella tabella seguente vengono illustrati i metodi di IDiaTable
.
metodo | Descrizione |
---|---|
IDiaTable::get__NewEnum | Recupera la versione dell'interfaccia IEnumVARIANT di questo enumeratore. |
IDiaTable::get_name | Recupera il nome della tabella. |
IDiaTable::get_Count | Recupera il numero di elementi nella tabella. |
IDiaTable::Item | Recupera un riferimento a un particolare indice di voce. |
Osservazioni:
Questa interfaccia implementa i IEnumUnknown
metodi di enumerazione nello spazio dei nomi Microsoft.VisualStudio.OLE.Interop. L'interfaccia IEnumUnknown
di enumerazione è molto più efficiente per l'iterazione del contenuto del sommario rispetto ai metodi IDiaTable::get_Count e IDiaTable::Item .
L'interpretazione dell'interfaccia IUnknown
restituita dal IDiaTable::Item
metodo o dal Next
metodo (nello spazio dei nomi Microsoft.VisualStudio.OLE.Interop) dipende dal tipo di tabella. Ad esempio, se l'interfaccia IDiaTable
rappresenta un elenco di origini inserite, l'interfaccia IUnknown
deve essere eseguita una query per l'interfaccia IDiaInjectedSource .
Note per i chiamanti
Ottenere questa interfaccia chiamando i metodi IDiaEnumTables::Item o IDiaEnumTables::Next .
Le interfacce seguenti vengono implementate con l'interfaccia IDiaTable
, ovvero è possibile eseguire una query sull'interfaccia IDiaTable
per una delle interfacce seguenti:
Esempio
La prima funzione, ShowTableNames
, visualizza i nomi di tutte le tabelle della sessione. La seconda funzione, GetTable
, cerca in tutte le tabelle una tabella che implementa un'interfaccia specificata. La terza funzione, UseTable
, mostra come usare la GetTable
funzione .
Nota
CDiaBSTR
è una classe che esegue il wrapping di un BSTR
oggetto e gestisce automaticamente la liberazione della stringa quando l'istanza esce dall'ambito.
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.
}
}
Requisiti
Intestazione: Dia2.h
Libreria: diaguids.lib
DLL: msdia80.dll