2011-08-26 83 views
1

我有一個服務應用程序在通過服務關閉時僅在一臺PC(Windows XP)上崩潰。OLE32關閉我的服務時出現異常

我得到的WinDbg以下錯誤:

(1038.728): Access violation - code c0000005 (!!! second chance !!!) 
eax=00000000 ebx=00000000 ecx=0018b7a4 edx=77606e00 esi=0016b7f8 edi=0018b7a4 
eip=7750cdbd esp=0012fe78 ebp=0012fe84 iopl=0   nv up ei pl nz na pe nc 
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000    efl=00000202 
... 
ole32!StringFromCLSID+0x325 
ole32!StringFromCLSID+0x2e7 
ole32!StringFromCLSID+0x2c9 
ole32!StringFromCLSID+0x215 
ole32!StringFromCLSID+0x38f 
RPCRT4!IUnknown_Release_Proxy+0x11 
mfc100+0x20a229 
MSVCR100!exit+0x11 

我的代碼使用某種形式的COM/OLE數據庫控制和訪問它是這樣的:

CoInitializeEx(0, COINIT_MULTITHREADED); 

IClientTable testCDS; 
testCDS.CreateDispatch("ClientTableServer.ClientTable"); 
testCDS.ReleaseDispatch(); 

<Windows message loop> 

CoUninitialize(); 

如果我註釋掉使用testCDS,沒有崩潰。我嘗試過ReleaseDispatch和DetachDispatch的組合,但我仍然遇到同樣的問題。

幫助將不勝感激。 謝謝

+0

什麼是IClientTable的類型? – sharptooth

+0

對不起下面的格式,但我似乎無法對其進行編輯的代碼類IClientTable:公衆的COleDispatchDriver { 市民: \t IClientTable(){} \t \t //調用的COleDispatchDriver默認構造函數 \t IClientTable(LPDISPATCH pDispatch): COleDispatchDriver(pDispatch){} \t IClientTable(const IClientTable&dispatchSrc):COleDispatchDriver(dispatchSrc){} – SparkyNZ

回答

1

嗯。這並不像我想的那麼棘手 - IClientTable的另一種用法是埋入庫中,ReleaseDispatch()沒有被調用。問題解決了。

相關問題