다음을 통해 공유


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::Item 또는 IDiaEnumTables::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)