現在オフラインです。再接続するためにインターネットの接続を待っています

FIX アクセス違反発生に MSDAER。_Com_error 例外を持つ DLL

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:173645
サポート期間が終了した「サポート技術情報」資料に関する免責事項
この資料は、マイクロソフトでサポートされていない製品について記述したものです。そのため、この資料は現状ベースで提供されており、今後更新されることはありません。
現象
コンパイラ #import 機能、ADO、OLE DB 1.1 ODBC プロバイダーを使用すると、_com_error 例外をトラップする、アクセス違反発生MSDAER。DLL をアプリケーションの終了時。
原因
#Import を使用を作成する方法、_com_error 例外をスローできます。場合、スロー IErrorInfo ポインター例外、Release() が呼び出されないGetErrorInfo() から返されます。これは内部エラーを離れるオブジェクトは、ole DB ODBC プロバイダーでは、アクセスが孤立しました。違反は、アプリケーションをシャット ダウンするときに発生します。
解決方法
Release() が、IErrorInfo インターフェイスにするために使用できるマクロを作成します。"catch"ブロックを終了します。たとえば。
   #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 Service Pack 3 および Visual C バージョン 6.0 です。

詳細については、マイクロソフトの次の資料を参照してください。ナレッジ ベース:
170365Visual Studio 97年の情報: サービス パック - 何をどこで、その理由
ハンドルされていない例外アクセス違反

警告: この記事は自動翻訳されています

プロパティ

文書番号:173645 - 最終更新日: 07/05/2011 17:17:00 - リビジョン: 3.0

  • kbbug kbfix kbvc600fix kbvs97sp2fix kbmt KB173645 KbMtja
フィードバック
0&did=1&t=">