远程调用DCOM:大家帮小弟我看看,为什么小弟我的代码 FindConnectionPoint 总是失败

远程调用DCOM:大家帮我看看,为什么我的代码 FindConnectionPoint 总是失败。
C/C++ code

IMsgSendPtr  pSend;

void CInteropDcomDemoDlg::OnBnClickedButton2()
{
             
    const IID clsID ={0x3E7CA987,0xB746,0x4BAC,{0x8B,0x0C,0x1F,0x40,0xFB,0x1D,0xEF,0x5A}};
    COSERVERINFO si;
    MULTI_QI     qi;
    si.dwReserved1 = 0;
    si.pwszName = L"10.63.10.128";
    si.pAuthInfo = NULL;
    si.dwReserved2 = 0;

    qi.pIID = &__uuidof(IMsgSend);     
    qi.pItf = NULL;

    // Everyone can connect
    CoInitializeSecurity(NULL, -1, NULL, NULL,
        RPC_C_AUTHN_LEVEL_NONE, RPC_C_IMP_LEVEL_IDENTIFY, NULL, EOAC_NONE, NULL);

    HRESULT  hr = CoCreateInstanceEx(clsID, NULL,  CLSCTX_SERVER, &si, 1, &qi);

    if (FAILED(hr))
    {
        AfxMessageBox(_T("创建实例失败."));
    }
    if (FAILED(qi.hr))
    {
        AfxMessageBox(_T("连接至服务器失败."));
    }


    pSend = (IMsgSend*)qi.pItf;

    IConnectionPointContainerPtr pCPC;
    IConnectionPointPtr pCP;

    try
    {
      pCPC = pSend;
    } 
    catch(...) 
    {
      hr = E_FAIL;
    }
    if (SUCCEEDED(hr))
        hr = pCPC->FindConnectionPoint(__uuidof(IMsgSend), &pCP);  // 这里失败了。
    if (SUCCEEDED(hr))
        hr = pCP->Advise(  , &dwSendCookie);                       // 第1个参数填什么呢?
    
    if (FAILED(hr))
    {
        AfxMessageBox(_T("连接至连接点失败!"));
        pSend = 0;
        hr = E_FAIL;
    }
}




谢谢各位。

------解决方案--------------------
遇到错误你至少得把错误码打印出来判断一下
------解决方案--------------------
查看返回错误,是否连接点启动等
------解决方案--------------------
hr就是错误码,你写COM不会这都不知道吧?要不然FAILED/SUCCEEDED怎么判断是否成功?
------解决方案--------------------
对方允许你连么?这个东西没搞太多,没啥经验了:$ 看看对方和你自己计算机得事件查看器,看看是不是有相关得告警出现。

这个错误码在MAPI里是end of session,但是DCOM是什么似乎查不到

为什么用这么老得技术啊?好像DCOM用得很少
------解决方案--------------------
DDD
------解决方案--------------------
UP