windows - OLE32 Undtagelse, når jeg lukker min Service

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en Service-applikation, der kun går ned på en pc (Windows XP), når du lukker ned via Services.


Jeg får følgende fejl på 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


Min kode bruger en COM/Ole database kontrol af en eller anden form, og jeg får adgang til den som denne:


CoInitializeEx( 0, COINIT\_MULTITHREADED );

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

<Windows message loop>

CoUninitialize();


Hvis jeg kommenterer brugen af ​​testCDS, er der ingen sammenstød. Jeg har prøvet kombinationer af ReleaseDispatch og DetachDispatch, men jeg får stadig det samme problem.


Hjælp ville blive meget værdsat.
Tak

Bedste reference


Hmm. Dette var ikke så vanskelig som jeg troede - der var en anden brug af IClientTable begravet inde i et bibliotek og ReleaseDispatch () blev ikke kaldt. Problem løst.