Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wylicza tabelę źródła danych DIA.
Składnia
IDiaTable : IEnumUnknown
Metody w tabeli Vtable Order
W poniższej tabeli przedstawiono metody .IDiaTable
| Metoda | opis |
|---|---|
| IDiaTable::get__NewEnum | Pobiera wersję interfejsu IEnumVARIANT tego modułu wyliczającego. |
| IDiaTable::get_name | Pobiera nazwę tabeli. |
| IDiaTable::get_Count | Pobiera liczbę elementów w tabeli. |
| IDiaTable::Item | Pobiera odwołanie do określonego indeksu wpisu. |
Uwagi
Ten interfejs implementuje IEnumUnknown metody wyliczania w przestrzeni nazw Microsoft.VisualStudio.OLE.Interop. Interfejs IEnumUnknown wyliczania jest znacznie bardziej wydajny w przypadku iterowania zawartości tabeli niż metody IDiaTable::get_Count i IDiaTable::Item .
Interpretacja interfejsu IUnknown zwróconego IDiaTable::Item z metody lub Next metody (w przestrzeni nazw Microsoft.VisualStudio.OLE.Interop) zależy od typu tabeli. Jeśli na przykład IDiaTable interfejs reprezentuje listę wstrzykniętych źródeł, IUnknown interfejs powinien zostać zapytany o interfejs IDiaInjectedSource .
Uwagi dotyczące wywoływania
Uzyskaj ten interfejs, wywołując metody IDiaEnumTables::Item lub IDiaEnumTables::Next .
Następujące interfejsy są implementowane za pomocą interfejsu IDiaTable (czyli można wykonać zapytanie dotyczące interfejsu IDiaTable dla jednego z następujących interfejsów):
Przykład
Pierwsza funkcja , ShowTableNameswyświetla nazwy wszystkich tabel w sesji. Druga funkcja , GetTablewyszukuje wszystkie tabele dla tabeli, która implementuje określony interfejs. Trzecia funkcja , pokazuje, UseTablejak używać GetTable funkcji.
Uwaga
CDiaBSTR jest klasą, która opakowuje BSTR element i automatycznie obsługuje zwalnianie ciągu, gdy wystąpienie wykracza poza zakres.
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.
}
}
Wymagania
Nagłówek: Dia2.h
Biblioteka: diaguids.lib
BIBLIOTEKA DLL: msdia80.dll