IDiaTable
Enumera uma tabela de fonte de dados DIA.
Sintaxe
IDiaTable : IEnumUnknown
Métodos na ordem VTable
A tabela a seguir mostra os métodos de IDiaTable
.
Método | Descrição |
---|---|
IDiaTable::get__NewEnum | Recupera a versão da Interface IEnumVARIANT deste enumerador. |
IDiaTable::get_name | Recupera o nome da tabela. |
IDiaTable::get_Count | Recupera o número de itens na tabela. |
IDiaTable::Item | Recupera uma referência a um índice de entrada específico. |
Comentários
Essa interface implementa os métodos de enumeração IEnumUnknown
no namespace Microsoft.VisualStudio.OLE.Interop. A interface de enumeração IEnumUnknown
é muito mais eficiente para iterar sobre o conteúdo da tabela do que os métodos IDiaTable::get_Count e IDiaTable::Item.
A interpretação da interface IUnknown
retornada do método IDiaTable::Item
ou Next
(no namespace Microsoft.VisualStudio.OLE.Interop) depende do tipo de tabela. Por exemplo, se a interface IDiaTable
representar uma lista de códigos inseridos, a interface IUnknown
deverá ser consultada na interface IDiaInjectedSource.
Observações para chamadores
Obtenha essa interface chamando o método IDiaEnumTables::Item ou IDiaEnumTables::Next.
As interfaces a seguir são implementadas com a interface IDiaTable
(ou seja, você pode consultar a interface IDiaTable
para uma das seguintes interfaces):
Exemplo
A primeira função, ShowTableNames
, exibe os nomes de todas as tabelas na sessão. A segunda função, GetTable
, pesquisa em todas as tabelas uma tabela que implementa uma interface especificada. A terceira função, UseTable
, mostra como usar a função GetTable
.
Observação
CDiaBSTR
é uma classe que encapsula um BSTR
e manipula automaticamente a liberação da cadeia de caracteres quando a instanciação sai do escopo.
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.
}
}
Requisitos
Cabeçalho: Dia2.h
Biblioteca: diaguids.lib
DLL: msdia80.dll