Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Menghitung tabel sumber data DIA.
Sintaks
IDiaTable : IEnumUnknown
Metode dalam Urutan Vtable
Tabel berikut memperlihatkan metode IDiaTable.
| Metode | Deskripsi |
|---|---|
| IDiaTable::get__NewEnum | Mengambil versi Antarmuka IEnumVARIANT dari enumerator ini. |
| IDiaTable::get_name | Mengambil nama tabel. |
| IDiaTable::get_Count | Mengambil jumlah item dalam tabel. |
| IDiaTable::Item | Mengambil referensi ke indeks entri tertentu. |
Keterangan
Antarmuka ini mengimplementasikan metode enumerasi IEnumUnknown di namespace Microsoft.VisualStudio.OLE.Interop. Antarmuka enumerasi IEnumUnknown jauh lebih efisien untuk melakukan iterasi atas konten tabel daripada metode IDiaTable::get_Count dan IDiaTable::Item.
Interpretasi antarmuka IUnknown yang dikembalikan dari metode IDiaTable::Item atau metode Next (di namespace Microsoft.VisualStudio.OLE.Interop) bergantung pada jenis tabel. Misalnya, jika antarmuka IDiaTable mewakili daftar sumber yang disuntikkan, IUnknown antarmuka harus dikueri untuk antarmuka IDiaInjectedSource.
Catatan untuk Penelepon
Dapatkan antarmuka ini dengan memanggil metode IDiaEnumTables::Item atau IDiaEnumTables::Next.
Antarmuka berikut diimplementasikan dengan antarmuka IDiaTable (yaitu, Anda dapat mengkueri antarmuka IDiaTable untuk salah satu antarmuka berikut):
Contoh
Fungsi pertama, ShowTableNames, menampilkan nama semua tabel dalam sesi. Fungsi kedua, GetTable, mencari semua tabel untuk tabel yang mengimplementasikan antarmuka tertentu. Fungsi ketiga, UseTable, menunjukkan bagaimana cara menggunakan fungsi GetTable.
Catatan
CDiaBSTR adalah kelas yang membungkus BSTR dan otomatis menangani pembebasan string ketika instansiasi keluar dari cakupan.
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.
}
}
Persyaratan
Header: Dia2.h
Library: diaguids.lib
DLL: msdia80.dll