IDiaTable
枚举 DIA 数据源表。
语法
IDiaTable : IEnumUnknown
Vtable 顺序中的方法
下表显示了 IDiaTable
方法。
方法 | 说明 |
---|---|
IDiaTable::get__NewEnum | 检索该枚举器的 IEnumVARIANT Interface 版本。 |
IDiaTable::get_name | 检索表名称。 |
IDiaTable::get_Count | 检索表中的项数。 |
IDiaTable::Item | 检索对特定条目索引的引用。 |
备注
此接口实现 Microsoft.VisualStudio.OLE.Interop 命名空间中的 IEnumUnknown
枚举方法。 相比 IDiaTable::get_Count 和 IDiaTable::Item 方法,IEnumUnknown
枚举接口在循环访问表内容时要高效得多。
IDiaTable::Item
方法或 Next
方法(在 Microsoft.VisualStudio.OLE.Interop 命名空间中)返回的 IUnknown
接口的解释取决于表类型。 例如,如果 IDiaTable
接口表示注入源代码列表,则应对 IDiaInjectedSource 接口查询 IUnknown
接口。
对调用者的说明
通过调用 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