다음을 통해 공유


IDiaTable

DIA 데이터 소스 테이블을 열거합니다.

구문

IDiaTable : IEnumUnknown

Vtable 순서의 메서드

다음 표에서는 IDiaTable 메서드를 보여 줍니다.

메서드 설명
IDiaTable::get__NewEnum 이 열거자의 IEnumVARIANT Interface 버전을 검색합니다.
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::Item 메서드 또는 IDiaEnumTables::Next 메서드를 호출하여 이 인터페이스를 가져옵니다.

다음 인터페이스는 IDiaTable 인터페이스를 통해 구현됩니다(즉, 다음 인터페이스 중 하나에 대해 IDiaTable 인터페이스를 쿼리할 수 있음).

예시

첫 번째 함수(ShowTableNames)는 세션에 있는 모든 테이블의 이름을 표시합니다. 두 번째 함수(GetTable)는 모든 테이블에서 지정된 인터페이스를 구현하는 테이블을 검색합니다. 세 번째 함수(UseTable)는 GetTable 함수를 사용하는 방법을 보여 줍니다.

참고 항목

CDiaBSTRBSTR를 래핑하고 인스턴스화가 범위를 벗어날 때 자동으로 문자열을 여는 것을 처리하는 클래스입니다.

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

참고 항목