IDiaTable
Enumera una tabla de origen de datos de DIA.
Sintaxis
IDiaTable : IEnumUnknown
Métodos en orden de Vtable
En la tabla siguiente se muestran los métodos de IDiaTable
.
Método | Descripción |
---|---|
IDiaTable::get__NewEnum | Recupera la versión de la interfaz IEnumVARIANT de este enumerador. |
IDiaTable::get_name | Recupera el nombre de la tabla. |
IDiaTable::get_Count | Recupera el número de elementos de la tabla. |
IDiaTable::Item | Recupera una referencia a un índice de entrada determinado. |
Observaciones
Esta interfaz implementa los métodos de enumeración IEnumUnknown
en el espacio de nombres Microsoft.VisualStudio.OLE.Interop. La interfaz de enumeración IEnumUnknown
es mucho más eficaz para recorrer en iteración el contenido de la tabla que los métodos IDiaTable::get_Count y IDiaTable::Item.
La interpretación de la interfaz IUnknown
devuelta por el método IDiaTable::Item
o por el método Next
(en el espacio de nombres Microsoft.VisualStudio.OLE.Interop) depende del tipo de tabla. Por ejemplo, si la interfaz IDiaTable
representa una lista de códigos fuente insertados, se debe consultar a la interfaz IUnknown
sobre la interfaz IDiaInjectedSource.
Notas para autores de la llamada
Obtenga esta interfaz llamando a los métodos IDiaEnumTables::Item o IDiaEnumTables::Next.
Las siguientes interfaces se implementan con la interfaz IDiaTable
(es decir, puede consultar la interfaz IDiaTable
sobre una de las siguientes interfaces):
Ejemplo
La primera función, ShowTableNames
, muestra los nombres de todas las tablas de la sesión. La segunda función, GetTable
, busca en todas las tablas una tabla que implemente una interfaz especificada. La tercera función, UseTable
, muestra cómo usar la función GetTable
.
Nota
CDiaBSTR
es una clase que encapsula BSTR
y controla automáticamente la liberación de la cadena cuando la creación de instancias sale del ámbito.
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
Encabezado: Dia2.h
Biblioteca: diaguids.lib
DLL: msdia80.dll