Bagikan melalui


IDiaTable

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

Baca juga