IDiaTable
Vytvoří výčet tabulky zdroje dat DIA.
Syntaxe
IDiaTable : IEnumUnknown
Metody v pořadí Vtable
Následující tabulka ukazuje metody IDiaTable
.
metoda | Popis |
---|---|
IDiaTable::get__NewEnum | Načte verzi rozhraní IEnumVARIANT tohoto enumerátoru. |
IDiaTable::get_name | Načte název tabulky. |
IDiaTable::get_Count | Načte počet položek v tabulce. |
IDiaTable::Item | Načte odkaz na konkrétní index položky. |
Poznámky
Toto rozhraní implementuje metody výčtu IEnumUnknown
v oboru názvů Microsoft.VisualStudio.OLE.Interop. Rozhraní IEnumUnknown
výčtu je mnohem efektivnější pro iteraci obsahu tabulky než IDiaTable::get_Count a IDiaTable::Item metody.
Interpretace IUnknown
rozhraní vrácené metodou IDiaTable::Item
nebo metodou Next
(v oboru názvů Microsoft.VisualStudio.OLE.Interop) závisí na typu tabulky. Pokud IDiaTable
například rozhraní představuje seznam vloženého zdroje, IUnknown
rozhraní by mělo být dotazováno pro IDiaInjectedSource rozhraní.
Poznámky pro volající
Získejte toto rozhraní voláním IDiaEnumTables::Item nebo IDiaEnumTables::Next metody.
Následující rozhraní jsou implementována IDiaTable
s rozhraním (to znamená, že můžete dotazovat IDiaTable
rozhraní pro jedno z následujících rozhraní):
Příklad
První funkce ShowTableNames
, zobrazí názvy všech tabulek v relaci. Druhá funkce , GetTable
vyhledá všechny tabulky pro tabulku, která implementuje zadané rozhraní. Třetí funkce, UseTable
, ukazuje, jak používat GetTable
funkci.
Poznámka:
CDiaBSTR
je třída, která zabalí BSTR
řetězec a automaticky zpracuje uvolnění řetězce při vytvoření instance mimo rozsah.
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.
}
}
Požadavky
Hlavička: Dia2.h
Knihovna: diaguids.lib
DLL: msdia80.dll