Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 , GetTablevyhledá 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