Aracılığıyla paylaş


IDiaTable

DIA veri kaynağı tablosunu numaralandırır.

Sözdizimi

IDiaTable : IEnumUnknown

Vtable Sırasına Göre Yöntemler

Aşağıdaki tabloda yönteminin yöntemleri gösterilmektedir IDiaTable.

Metot Açıklama
IDiaTable::get__NewEnum Bu numaralandırıcının IEnumVARIANT Arabirimi sürümünü alır.
IDiaTable::get_name Tablonun adını alır.
IDiaTable::get_Count Tablodaki öğe sayısını alır.
IDiaTable::Item Belirli bir giriş dizinine başvuru alır.

Açıklamalar

Bu arabirim, Microsoft.VisualStudio.OLE.Interop ad alanında numaralandırma yöntemlerini uygular IEnumUnknown . IEnumUnknown Numaralandırma arabirimi, tablo içeriği üzerinde yineleme için IDiaTable::get_Count ve IDiaTable::Item yöntemlerinden çok daha verimlidir.

yönteminden veya Next yönteminden IDiaTable::Item döndürülen arabirimin yorumu IUnknown (Microsoft.VisualStudio.OLE.Interop ad alanında) tablo türüne bağlıdır. Örneğin, arabirim eklenen kaynakların listesini temsil ederseIDiaTable, IUnknown arabirim IDiaInjectedSource arabirimi için sorgulanmalıdır.

Arayanlar İçin Notlar

IDiaEnumTables::Item veya IDiaEnumTables::Next yöntemlerini çağırarak bu arabirimi alın.

Aşağıdaki arabirimler arabirimiyle uygulanır (diğer bir ifadeyle IDiaTable , aşağıdaki arabirimlerden biri için arabirimi sorgulayabilirsiniz IDiaTable ):

Örnek

İlk işlevi olan ShowTableNames, oturumdaki tüm tabloların adlarını görüntüler. İkinci işlev olan GetTable, tüm tablolarda belirtilen arabirimi uygulayan bir tablo arar. Üçüncü işlev olan UseTable, işlevinin GetTable nasıl kullanılacağını gösterir.

Dekont

CDiaBSTR , bir sarmalayan ve örnekleme kapsam dışına çıktığında dizeyi serbest bırakma işlemini otomatik olarak işleyen bir BSTR sınıftır.

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.
    }
}

Gereksinimler

Üst bilgi: Dia2.h

Kitaplık: diaguids.lib

DLL: msdia80.dll

Ayrıca bkz.