Düzeltme: Erişim ihlali özel durumlar _com_error ile MSDAER.DLL

Makale çevirileri Makale çevirileri
Makale numarası: 173645 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Hepsini aç | Hepsini kapa

Belirtiler

Derleyici alma özelliği, ADO, OLE DB 1.1 ODBC Provider ve yakalama _com_error özel durumları kullanırken, bir uygulamayı kapatma sırasında erişim ihlali MSDAER.DLL içinde oluşur.

Neden

Alma ile oluşturulan BIR yöntem, bir _com_error özel durum. Bu özel durum oluşturduğunda, GetErrorInfo() döndüren IErrorInfo işaretçiyi üzerinde Release() çağrılmaz. Bu, erişim ihlali, uygulama kapandığı olarak yapılmasına neden olur iç hata nesnesinde stranded OLEDB ODBC Provider bırakır.

Çözüm

IErrorInfo arabirim "catch" bloğunun sonuna Release() için kullanılabilen bir makro oluşturun. Örneğin:
   #define BUGFIX_RELEASE_IERRORINFO(error) \ 
           IErrorInfo * pErr = error.ErrorInfo();  \ 
           pErr->Release();                        \ 
           pErr->Release();
				
burada olduğunu nasıl kullanır Örnek:
   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);
   }
				

Durum

Microsoft bu hatanın bu makalenin başında listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır. Bu hata, Visual Studio 97 Service Pack 3 ve Visual C++ sürüm 6. 0'de giderilmiştir.

Daha fazla bilgi için, lütfen aşağıdaki Microsoft Knowledge Base makalesine bakın:
170365BILGI: Visual Studio 97 hizmet paketleri - ne, nerede ve neden

Özellikler

Makale numarası: 173645 - Last Review: 13 Şubat 2014 Perşembe - Gözden geçirme: 1.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual C++ 5.0 Enterprise Edition
Anahtar Kelimeler: 
kbnosurvey kbarchive kbmt kbbug kbfix kbvc600fix kbvs97sp2fix KB173645 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:173645

Geri Bildirim Ver

 

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