IDiaTable
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 , ShowTableNames
wyświetla nazwy wszystkich tabel w sesji. Druga funkcja , GetTable
wyszukuje wszystkie tabele dla tabeli, która implementuje określony interfejs. Trzecia funkcja , pokazuje, UseTable
jak 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