В COM, как проверить, что указатель на COM-объект все еще имеет действительный объект на другом конце?
У меня проблема, когда этот следующий бит кода пытается проверить, остается ли указатель m_pServer
, но когда это приложение подвергает этот интерфейс, этот бит кода сбой приложения. Может ли кто-нибудь посоветовать, как проверить указатель перед его использованием?
if (FAILED(m_pServer->StillAlive())) { // do something }
Этот код не работает, если m_pServer больше не находится в памяти.
EDIT:
ИСКЛЮЧЕНИЕ: Исключение с первой вероятностью в 0x7728fbae (kernel32.dll) в Client40.exe: 0x800706BA: сервер RPC недоступен.
CALL STACK:
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