Поделиться через


IDiaSession::getEnumTables

Извлекает перечислитель для всех таблиц, содержащихся в хранилище символов.

Синтаксис

HRESULT getEnumTables (
    IDiaEnumTables** ppEnumTables
);

Параметры

ppEnumTables

[out] Возвращает объект IDiaEnumTables . Используйте этот интерфейс для перечисления таблиц в хранилище символов.

Возвращаемое значение

В случае успешного выполнения возвращается S_OK; в противном случае возвращается код ошибки.

Пример

В этом примере представлена общая функция, которая использует getEnumTables метод для получения определенного объекта перечислителя. Если перечислитель найден, функция возвращает указатель, который можно привести к требуемому интерфейсу; в противном случае функция возвращается NULL.

IUnknown *GetTable(IDiaSession *pSession, REFIID iid)
{
    IUnknown *pUnknown = NULL;
    if (pSession != NULL)
    {
        CComPtr<IDiaEnumTables> pEnumTables;
        if (pSession->getEnumTables(&pEnumTables) == S_OK)
        {
            CComPtr<IDiaTable> pTable;
            DWORD celt = 0;
            while(pEnumTables->Next(1,&pTable,&celt) == S_OK &&
                  celt == 1)
            {
                if (pTable->QueryInterface(iid, (void **)pUnknown) == S_OK)
                {
                    break;
                }
                pTable = NULL;
            }
        }
    }
    return(pUnknown);
}

См. также