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);
}

另请参阅