次の方法で共有


IDiaSession::getEnumTables

シンボル ストアに含まれる全テーブルの列挙子を取得します。

構文

HRESULT getEnumTables (
    IDiaEnumTables** ppEnumTables
);

パラメーター

ppEnumTables

[出力] 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);
}

関連項目