佚名通过本文主要向大家介绍了advise,advise的用法,advice和advise的区别,advise是什么意思,advise sb to do sth等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 使用Netmeeting sdk 开发程序是,遇到advise()系统发生读取冲突问题
描述:
在m_pMgrNotify->Connect(m_pINmMgr);后系统走到如下程序:
程序走到hr = m_pcnp->Advise((IUnknown *)pUnkN, &m_dwCookie);报:
COM.exe 中的 0x00000000 处最可能的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突
程序的主要作用是实现一种回调方式用advise()建立连接
我的程序已经和Microsoft提供的例程已经一模一样了,debug模式下所有变量都不是野指针。
卡了好几天了。希望得到指点,非常急,在搞不出来要死人了!另外说下我是在mfc下做的。
解决方案1:
描述:
本帖最后由 qwtfps 于 2010-04-22 15:32:00 编辑
CoInitialize(NULL); //初始化COM库
HRESULT hr=S_OK;
LPCLASSFACTORY pcf;
CMgrNotify *m_pMgrNotify = new CMgrNotify();
INmManager * m_pINmMgr=NULL;
INmCall *m_pINmCall;
BSTRING bstrName("null");
CoCreateInstance(CLSID_NmManager,NULL,CLSCTX_INPROC_SERVER,IID_INmManager,(VOID **)&m_pINmMgr); //创建会议管理器组建
m_pINmMgr->CreateCall(&m_pINmCall,NM_CALL_H323 ,NM_ADDR_MACHINENAME ,bstrName,NULL);
ULONG uOptions = NM_INIT_BACKGROUND; //不显示Netmeeting用户界面
if((SUCCEEDED(hr)))
{
m_pMgrNotify->Connect(m_pINmMgr); //绑定回调对象
hr=m_pINmMgr->Initialize(&uOptions,NULL); //初始化会议管理器
}
在m_pMgrNotify->Connect(m_pINmMgr);后系统走到如下程序:
其中两个变量是如下类型的:IConnectionPointContainer * m_pcnpcnt;IConnectionPoint * m_pcnp;
HRESULT CNotify::Connect(IUnknown *pUnk, REFIID riid, IUnknown *pUnkN)
{
HRESULT hr;
ASSERT(0 == m_dwCookie);
// Get the connection container
hr = pUnk->QueryInterface(IID_IConnectionPointContainer, (void **)&m_pcnpcnt);
if (SUCCEEDED(hr))
{
// Find an appropriate connection point
hr = m_pcnpcnt->FindConnectionPoint(riid, &m_pcnp);
if (SUCCEEDED(hr))
{
ASSERT(NULL != m_pcnp);
// Connect the sink object
hr = m_pcnp->Advise((IUnknown *)pUnkN, &m_dwCookie);
}
}
if (FAILED(hr))
{
m_dwCookie = 0;
}
else
{
m_pUnk = pUnk; // keep around for caller
}
return hr;
}
程序走到hr = m_pcnp->Advise((IUnknown *)pUnkN, &m_dwCookie);报:
COM.exe 中的 0x00000000 处最可能的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突
程序的主要作用是实现一种回调方式用advise()建立连接
我的程序已经和Microsoft提供的例程已经一模一样了,debug模式下所有变量都不是野指针。
卡了好几天了。希望得到指点,非常急,在搞不出来要死人了!另外说下我是在mfc下做的。
解决方案1:
楼主参考一下这个SDK:AnyChat Platform Core SDK
解决方案2: 你把代码发给我
我帮你看一下
gw_net@163.com
检查一下m_pcnp或输入参数是否为空
您可能想查找下面的文章:
- 求助:DCOM组件中使用连接点机制时,调用Advise()函数出现E_NOTIMPL(“尚未实现”)错误
- 一个自动化组件,定义了双接口为出接口,JavaScript和VBScript怎么跟它Advise来连接该组件?
- 请问IViewObject::SetAdvise后,为何IAdviseSink的OnViewChange并没有被调用
- IConnectionPointer::Advise的问题
- 进程外可连接对象Advise失败的问题
- AtlAdvise是干么的?
- 接收器不能与连接点对象建立连接Advise失败什么原因?
- delphiIEBHO如何用AtlAdvise方式注册表单事件啊?
- VC进程外组件创建连接点Advice返回错误
- 关于DispEventAdvise,能否监视多个传入对象??