共用方式為


IDiaTable

列舉 DIA 資料來源資料表。

語法

IDiaTable : IEnumUnknown

依照 Vtable 順序的方法

下表顯示 IDiaTable 方法。

方法 描述
IDiaTable::get__NewEnum 擷取此列舉值的 IEnumVARIANT 介面版本。
IDiaTable::get_name 擷取資料表名稱。
IDiaTable::get_Count 擷取資料表中的項目數。
IDiaTable::Item 擷取特定項目索引的參考。

備註

此介面會在 Microsoft.VisualStudio.OLE.Interop 命名空間中實作 IEnumUnknown 列舉方法。 該 IEnumUnknown 列舉介面比 IDiaTable::get_CountIDiaTable::Item 方法更有效率地逐一查看資料表內容。

IDiaTable::Item 方法或 Next 方法 (在 Microsoft.VisualStudio.OLE.Interop 命名空間中) 中傳回的 IUnknown 介面的解譯取決於資料表的類型。 例如,如果 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

另請參閱