在COM中,如何验证指向COM对象的指针在另一端仍然有效?
我遇到了一个问题,即以下代码尝试检查m_pServer
指针是否仍然存在,但当公开该接口的应用程序被关闭时,这段代码会导致应用程序崩溃。 有人能否建议如何在使用指针之前检查它?
if (FAILED(m_pServer->StillAlive())) { // do something }
如果m_pServer不再位于内存中,该代码将失败。
编辑:
异常:在Client40.exe中的0x7728fbae(kernel32.dll)处第一次机会异常:0x800706BA:RPC服务器不可用。
调用堆栈:
kernel32.dll!RaiseException() + 0x58
rpcrt4.dll!RpcRaiseException() + 0x3e
rpcrt4.dll!NdrProxyErrorHandler() + 0x28
rpcrt4.dll!NdrProxySendReceive() + 0xa4
rpcrt4.dll!NdrProxySendReceive() + 0x119
rpcrt4.dll!NdrComplexArrayMarshall() + 0x26d
--> Client40.exe!SlaveDriver::run() Line 97 + 0x14 C++ //Runs while loop, to handle requests
Client40.exe!DThread::tfunc(void * thisptr=0x0047e694) Line 56 + 0xd C++
Client40.exe!_threadstartex(void * ptd=0x01b20e00) Line 241 + 0xd C
kernel32.dll!BaseThreadInitThunk() + 0x12
ntdll.dll!RtlInitializeExceptionChain() + 0x63
ntdll.dll!RtlInitializeExceptionChain() + 0x36