首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

关于注册临时的可插命名空间处理器的有关问题

2012-02-21 
关于注册临时的可插命名空间处理器的问题?在MFC基于对话框的应用程序中,注册临时的可插命名空间处理器。

关于注册临时的可插命名空间处理器的问题?
在MFC基于对话框的应用程序中,注册"临时的可插命名空间处理器"。程序运行一切正常,现在想修改"临时的可插命名空间处理器"的名称.发现程序的执行流程不正确了(编译通过了),表现在临时的可插命名空间处理器的Start函数不执行,直接执行"临时的可插命名空间处理器"的析构函数.

代码如下:

//在对话框的初始化函数中,注册临时的可插命名空间处理器
HRESULT hr=::CoGetClassObject(CLSID_process,CLSCTX_SERVER,NULL,IID_IClassFactory,(void**)&m_pFactory);
if(SUCCEEDED(hr))
{
  hr=::CoInternetGetSession(0,&m_pSession,0);
  if(SUCCEEDED(hr))
  {
  //m_pSession->RegisterNameSpace(m_pFactory,CLSID_process,L"mytest",0,NULL,0); //监视服务  
  m_pSession->RegisterNameSpace(m_pFactory,CLSID_process,L"http",0,NULL,0); //监视HTTP服务  
  }
}


//临时的可插命名空间处理器 Cmyprocess
STDMETHODIMP Cmyprocess::Start(LPCWSTR szUrl,
IInternetProtocolSink *pOIProtSink,
IInternetBindInfo *pOIBindInfo,
DWORD grfPI, HANDLE_PTR dwReserved)
{//此处打断点
  //....
}

Cmyprocess:: ~Cmyprocess()
{//此处打断点
  //释放资源
}


将注册临时的可插命名空间处理器 修改为 mytest后程序的流程执行不正确了,这是为什么?

[解决办法]
http是标准MIME协议,而mytest不是,除非实现一个MIME Filter,使用mytest::协议
[解决办法]
没有要求同时实现,但是这两种过滤器的作用是不一样的。命名空间过滤器可以针对现有的任何协议名称,MIME过滤器只处理特定的协议。

热点排行