WinCE DirectShow Filter 注册

                                       WinCE DirectShow Filter 注册

                                              by hdh 2009 03 03

 

Wince系统Filter的注册,代码如下:

STDAPI DllRegisterServer()

{

            HRESULT hr= AMovieDllRegisterServer2(TRUE);

            return hr;

}

通过这个注册,COm的信息注册进去了,可以在程序里面创建Com 接口。但是pin 的信息没有注册进去,智能链接的时候没效。

通过查看 Directshow 的AMovieDllRegisterServer2代码发现确实只是注册了com信息,没有注册pin信息。解决方法:

一、自己创建注册表文件,然后用注册表导入工具经信息导入。

     有点麻烦,需要对filter的注册信息了解,需要做注册表导入工具。

二、使用Directshow的CLSID_FilterMapper 来导入pin信息,代码如下:

STDAPI DllRegisterServer()

{

            HRESULT hr= AMovieDllRegisterServer2(TRUE);

            RegisterAllPin();

            return hr;

}

BOOL RegisterAllPin()
{
 CoInitialize(NULL);  
 HRESULT hr=E_FAIL;
 IFilterMapper *pIFM = 0;
 hr = CoCreateInstance(
  CLSID_FilterMapper,
  NULL,
  CLSCTX_INPROC_SERVER,
  IID_IFilterMapper,
  (void **)&pIFM);

 if(FAILED(hr))
 {
  printf("Get FilterMapper fail/r/n");
  return FALSE;


 }

 printf("Get FilterMapper Success/r/n");
 for( int i = 0; i < g_cTemplates; i++ )
 {
  // get i'th template
  //
  const CFactoryTemplate *pT = &g_Templates[i];

  if( NULL != pT->m_pAMovieSetup_Filter )
  {

   hr = AMovieSetupRegisterFilter( pT->m_pAMovieSetup_Filter, pIFM, TRUE );
   printf("Get AMovieSetupRegisterFilter /r/n");

  }

  // check final error for this pass
  // and break loop if we failed
  //
  if( FAILED(hr) )
   break;
 }
 CoUninitialize();  
 return TRUE;
}
这样以后就可以把pin的信息导入到注册表里面去了,可以实现filter的智能链接了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值