FIX: انتهاك وصول في MSDAER.DLL مع _com_error استثناءات

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

173645
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
الأعراض
عند استخدام ميزة #import برنامج التحويل البرمجي ADO, في موفر OLE DB 1.1 ODBC و استثناءات _com_error تعويض اللون ، يحدث خرق في وصول في MSDAER.DLL عند إغلاق تطبيق.
السبب
يمكن أسلوب تم إنشاؤها بواسطة #import طرح استثناء _com_error. عند ذلك يطرح الاستثناء غير يسمى Release() على المؤشر IErrorInfo الذي يتم إرجاعه من GetErrorInfo(). يترك هذا الكائن خطأ داخلي في موفر ODBC OLEDB stranded الذي يجعل خرق وصول حدوث أثناء إيقاف تشغيل التطبيق.
الحل
إنشاء ماكرو الذي يمكن استخدامه Release() الواجهة IErrorInfo في نهاية كتلة "التقاط". على سبيل المثال:
   #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 أن يكون خطأ في منتجات Microsoft المسردة في بداية هذه المقالة هذا. تم إصلاح هذه الأخطاء في Visual Studio 97 Service Pack 3 و Visual C++ الإصدار 6.0.

لمزيد من المعلومات، الرجاء مراجعة المقالة التالية في "قاعدة المعارف لـ Microsoft:
170365INFO: Visual Studio 97 حزم الخدمات - ما ، أين و لماذا
استثناء غير معالَج AV

تحذير: تمت ترجمة هذا المقال تلقائياً

خصائص

رقم الموضوع: 173645 - آخر مراجعة: 02/14/2014 05:59:28 - المراجعة: 1.0

  • Microsoft Visual C++ 5.0 Enterprise Edition
  • kbnosurvey kbarchive kbmt kbbug kbfix kbvc600fix kbvs97sp2fix KB173645 KbMtar
تعليقات