IDiaTable
Vytvoří výčet DIA data zdrojovou tabulku.
IDiaTable : IEnumUnknown
Metody v pořadí virtuální tabulka
Následující tabulka obsahuje metody IDiaTable.
Metoda |
Description |
---|---|
Načte IEnumVARIANT Interface verzi tohoto čítače výčtu. |
|
Načte název tabulky. |
|
Číslo položky v tabulce získá. |
|
Získá odkaz na konkrétní položky indexu. |
Poznámky
Implementuje rozhraní IEnumUnknown výčet metod v oboru názvů Microsoft.VisualStudio.OLE.Interop.IEnumUnknown Výčtu rozhraní je mnohem efektivnější iterace obsahu než IDiaTable::get_Count a IDiaTable::Item metod.
Výklad IUnknown rozhraní vrátil buď IDiaTable::Item metoda nebo Next metodou (v oboru názvů Microsoft.VisualStudio.OLE.Interop) je závislé na typu tabulka.Například pokud IDiaTable rozhraní představuje seznam vloženého zdrojů IUnknown rozhraní by měly být zadávány dotazy IDiaInjectedSource rozhraní.
Poznámky pro volající
Získat voláním rozhraní IDiaEnumTables::Item nebo IDiaEnumTables::Next metod.
Následující rozhraní jsou implementovány s IDiaTable rozhraní (, můžete dotaz IDiaTable rozhraní pro jednu z následujících rozhraní):
Příklad
První funkce ShowTableNames, zobrazí se názvy všech tabulek v relaci.Druhá funkce GetTable, vyhledá všechny tabulky pro tabulku, která implementuje určeného rozhraní.Třetí funkce UseTable, ukazuje, jak použít GetTable funkce.
[!POZNÁMKA]
CDiaBSTRje třída zalomí BSTR a automaticky zpracovává uvolnění řetězce při vytváření instance dostane 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
Záhlaví: Dia2.h
Knihovny: diaguids.lib
Knihovna DLL: msdia80.dll