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_Count 및 IDiaTable::Item 메서드보다 테이블 내용을 반복하는 데 훨씬 더 효율적입니다.
IDiaTable::Item
메서드 또는 Next
메서드(Microsoft.VisualStudio.OLE.Interop 네임스페이스 내)에서 반환된 IUnknown
인터페이스의 해석은 테이블 형식에 따라 달라집니다. 예를 들어 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