远程调用DCOM:大家帮小弟我看看,为什么小弟我的代码 FindConnectionPoint 总是失败
远程调用DCOM:大家帮我看看,为什么我的代码 FindConnectionPoint 总是失败。
谢谢各位。
------解决方案--------------------
遇到错误你至少得把错误码打印出来判断一下
------解决方案--------------------
查看返回错误,是否连接点启动等
------解决方案--------------------
hr就是错误码,你写COM不会这都不知道吧?要不然FAILED/SUCCEEDED怎么判断是否成功?
------解决方案--------------------
对方允许你连么?这个东西没搞太多,没啥经验了:$ 看看对方和你自己计算机得事件查看器,看看是不是有相关得告警出现。
这个错误码在MAPI里是end of session,但是DCOM是什么似乎查不到
为什么用这么老得技术啊?好像DCOM用得很少
------解决方案--------------------
DDD
------解决方案--------------------
UP
- 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