MSDAER.DLL _com_error 예외 함께 FIX: 액세스 위반

기술 자료 번역 기술 자료 번역
기술 자료: 173645 - 이 문서가 적용되는 제품 보기.
이 문서가 보관되었습니다. "그대로" 제공되었으며, 업데이트가 되지 않을 것입니다.
모두 확대 | 모두 축소

현상

컴파일러가 # import 기능을, ADO, OLE DB 1.1을 ODBC 공급자, 및 트래핑 _com_error 예외를 사용하여 응용 프로그램의 닫을 때 MSDAER.DLL에서 액세스 위반이 발생합니다.

원인

# import 함께 만든 메서드를 _com_error 예외를 throw 할 수 있습니다. 예외를 throw하는 경우 GetErrorInfo()에서 반환한 IErrorInfo 포인터에 Release() 호출되지 않습니다. 응용 프로그램이 종료될 때 발생하는 액세스 위반이 발생합니다 내부 오류 개체를 남겨진 OLEDB ODBC 공급자를 에 둡니다.

해결 방법

"catch" 블록 끝에 있는 IErrorInfo 인터페이스 Release() 사용할 수 있는 매크로를 만듭니다. 예를 들어,:
   #define BUGFIX_RELEASE_IERRORINFO(error) \ 
           IErrorInfo * pErr = error.ErrorInfo();  \ 
           pErr->Release();                        \ 
           pErr->Release();
				
여기에 사용할 수 있는 방법에 대한 예제가 있습니다:
   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);
   }
				

현재 상태

Microsoft는 이 문서의 시작 부분에 나열한 제품에서 버그가 수 있도록 이 확인했습니다. Visual Studio 97 서비스 팩 3 및 Visual C++ 버전 6.0이 이 버그가 수정되었습니다.

자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
170365정보: Visual Studio 97 서비스 팩 - 내용, 위치, 및 이유

속성

기술 자료: 173645 - 마지막 검토: 2014년 2월 2일 일요일 - 수정: 1.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual C++ 5.0 Enterprise Edition
키워드:?
kbnosurvey kbarchive kbmt kbbug kbfix kbvc600fix kbvs97sp2fix KB173645 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

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