IDiaTable
Hiermit wird eine DIA-Datenquellentabelle aufgelistet.
Syntax
IDiaTable : IEnumUnknown
Methoden in Vtable-Reihenfolge
In der folgenden Tabelle sind die Methoden von IDiaTable
aufgeführt.
Methode | BESCHREIBUNG |
---|---|
IDiaTable::get__NewEnum | Hiermit wird die Version der IEnumVARIANT-Schnittstelle dieses Enumerators abgerufen. |
IDiaTable::get_name | Hiermit wird der Name der Tabelle abgerufen. |
IDiaTable::get_Count | Hiermit wird die Anzahl der Elemente in der Tabelle abgerufen. |
IDiaTable::Item | Hiermit wird ein Verweis auf einen bestimmten Eintragsindex abgerufen. |
Bemerkungen
Diese Schnittstelle implementiert die IEnumUnknown
-Enumerationsmethoden im Microsoft.VisualStudio.OLE.Interop-Namespace. Die IEnumUnknown
-Enumerationsschnittstelle ist wesentlich effizienter für das Durchlaufen der Tabelleninhalte als die Methoden IDiaTable::get_Count und IDiaTable::Item.
Die Interpretation der IUnknown
-Schnittstelle, die entweder von der IDiaTable::Item
-Methode oder der Next
-Methode (im Microsoft.VisualStudio.OLE.Interop-Namespace) zurückgegeben wird, hängt vom Typ der Tabelle ab. Wenn die IDiaTable
-Schnittstelle beispielsweise eine Liste der eingefügten Quellen darstellt, sollte die IUnknown
-Schnittstelle für die IDiaInjectedSource-Schnittstelle abgefragt werden.
Hinweise für Aufrufer
Rufen Sie diese Schnittstelle ab, indem Sie die Methode IDiaEnumTables::Item oder die Methode IDiaEnumTables::Next aufrufen.
Die folgenden Schnittstellen werden mit der IDiaTable
-Schnittstelle implementiert (d. h., Sie können die IDiaTable
-Schnittstelle für eine der folgenden Schnittstellen abfragen):
Beispiel
Die erste Funktion (ShowTableNames
) zeigt die Namen aller Tabellen in der Sitzung an. Die zweite Funktion (GetTable
) durchsucht alle Tabellen nach einer Tabelle, die eine angegebene Schnittstelle implementiert. Die dritte Funktion (UseTable
) zeigt, wie die GetTable
-Funktion verwendet wird.
Hinweis
CDiaBSTR
ist eine Klasse, die ein BSTR
-Element umschließt und automatisch die Freigabe der Zeichenfolge verarbeitet, wenn die Instanziierung den Gültigkeitsbereich überschreitet.
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.
}
}
Anforderungen
Header: Dia2.h
Bibliothek: diaguids.lib
DLL: msdia80.dll