Oprava: Narušení přístupu v MSDAER.DLL s _com_error výjimky

Překlady článku Překlady článku
ID článku: 173645 - Produkty, které se vztahují k tomuto článku.
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Příznaky

Při použití funkce #import kompilátoru, ADO, zprostředkovatele OLE DB 1.1 ODBC a soutisk _com_error výjimky, dochází k narušení přístupu v MSDAER.DLL při ukončení aplikace.

Příčina

Metodu vytvořené pomocí #import může vyvoláním výjimky _com_error. Jestliže jej výjimku, Release() nazývá není na IErrorInfo ukazatel, který se vrátí z funkci GetErrorInfo(). To ponechá vnitřní chyba objektu ve zprostředkovateli OLEDB ODBC, stranded, který způsobuje narušení přístupu dochází, vypne aplikace.

Řešení

Vytvořte makro, které lze použít k Release() IErrorInfo rozhraní na konci bloku "o úlovcích". Například:
   #define BUGFIX_RELEASE_IERRORINFO(error) \ 
           IErrorInfo * pErr = error.ErrorInfo();  \ 
           pErr->Release();                        \ 
           pErr->Release();
				
zde je uveden příklad jak použijete jej:
   try
   {
     //.... call a #import generated method
     if ( m_connection == NULL )   {
      if(S_OK == m_connection.CreateInstance("ADODB.Connection.1", NULL,
   CLSCTX_INPROC_SERVER))
         m_connection->Open(varDataSource, varUserId, varPwd);
      }
   }
   catch(_com_error & err)
   {
     // Error handling code...
     ::MessageBox(NULL, (LPCSTR)err.Description(), _T("ADO Error"), MB_OK);

     BUGFIX_RELEASE_IERRORINFO(err);
   }
				

Prohlášení

Společnost Microsoft potvrzuje, že tuto změnu problém v produktech společnosti, které jsou uvedeny na začátku tohoto článku. Tato chyba byla stanovena v aplikaci Visual Studio 97 Service Pack 3 a Visual C++ verze 6.0.

Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
170365INFORMACE: Visual Studio 97 Service Pack - co, kde a proč

Vlastnosti

ID článku: 173645 - Poslední aktualizace: 2. února 2014 - Revize: 1.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Visual C++ 5.0 Enterprise Edition
Klíčová slova: 
kbnosurvey kbarchive kbmt kbbug kbfix kbvc600fix kbvs97sp2fix KB173645 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:173645

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com