共用方式為


IDiaTable

列舉 DIA 資料的來源資料表。

IDiaTable : IEnumUnknown

方法 Vtable 順序

下表顯示的方法IDiaTable

方法

描述

IDiaTable::get__NewEnum

擷取IEnumVARIANT Interface版的這個列舉值。

IDiaTable::get_name

擷取資料表的名稱。

IDiaTable::get_Count

擷取資料表中的項目數。

IDiaTable::Item

擷取特定的項目索引的參考。

備註

這個介面會實作IEnumUnknown Microsoft.VisualStudio.OLE.Interop 命名空間中的列舉型別方法。 IEnumUnknown列舉型別介面會更有效率,逐一查看目錄中,於IDiaTable::get_CountIDiaTable::Item方法。

轉譯工作IUnknown介面傳回自IDiaTable::Item方法或Next (在 Microsoft.VisualStudio.OLE.Interop 命名空間中) 的方法是資料表的型別而定。 比方說,如果IDiaTable介面表示一份注入的來源, IUnknown介面應該查詢的IDiaInjectedSource介面。

呼叫者的備忘稿

取得這個介面,藉由呼叫IDiaEnumTables::ItemIDiaEnumTables::Next方法。

下列的介面實作與IDiaTable介面 (也就是您可以查詢IDiaTable的其中一項下列介面的介面):

範例

第一個函式中, ShowTableNames,在活動中會顯示所有資料表的名稱。 第二個函式中, GetTable,搜尋所有的資料表,如果資料表已經實作指定的介面。 第三項功能, UseTable,示範如何使用GetTable函式。

注意事項注意事項

CDiaBSTR是一個類別,會換行BSTR ,並自動處理具現化超出範圍時,請釋出的字串。

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

需求

標頭: Dia2.h

媒體櫃: diaguids.lib

DLL: msdia80.dll

請參閱

參考

IDiaEnumTables

IDiaEnumTables::Item

IDiaEnumTables::Next

其他資源

介面 (偵錯介面存取 SDK)