创建是败的filter

lanhxg 2012-03-29 10:52:39
为什么出现在graphedit上的filter我调用coCreateIntance这个函数去创建的时候失败。


更倒霉的是我graphedit提示的filename 找到对应文件去注册。注册成功了,但是还是不能创建,
这里显示对应的filter的dll(我想ax文件和dll文件都是可以注册的吧,我就用dll去注册)

这里注册显示注册成功,但是我创建该filter却是失败了,hr的返回值是“没有注册类”


下面是我的代码,希望有大牛帮我。
//OUR_GUID_ENTRY(CLSID_MPEG4s_decoder,
// 0x4a69e442,0x28be,0x4991, 0x96, 0x9c,0xb5, 0x00, 0xad ,0xf5,0xd8,0xa8);
这里是是创建代码:
BOOL pass=FALSE ;
if(!IsFilterRegistered(CLSID_MPEG4s_decoder))
pass = RegisterFilter(TEXT("C:\\Windows\\System32\\MP4SDECD.DLL"));

if(pass)
hr =AddFilterByClSID(pGraph,CLSID_MPEG4s_decoder,
TEXT("MPEG4s Decoder DMO"),&pMPEG4sDecoder);
if(FAILED(hr))
return FALSE ;

//一下是上面调用函数的实现
//注册代码:
BOOL CPlayer::RegisterFilter(LPCWSTR infilerAx)
{
typedef int (WINAPI *REGISTER_FUNC) (void);
REGISTER_FUNC myFunc = NULL ;
HMODULE hModule = ::LoadLibraryW(infilerAx);

if(hModule)
{
myFunc= (REGISTER_FUNC)GetProcAddress(hModule,"DllRegisterServer");
BOOL pass = (myFunc!=NULL);
if(pass)
myFunc();
::FreeLibrary(hModule);
return pass;
}
return FALSE ;
}
HRESULT CPlayer::AddFilterByClSID(
IFilterGraph *pfG,
const GUID & clsid,
LPCWSTR wszName,
IBaseFilter ** ppf)
{
if(!pfG || !ppf )
return E_POINTER ;
(*ppf) = 0 ;
IBaseFilter * pF =0 ;
HRESULT hr = CoCreateInstance(
clsid,
NULL,
CLSCTX_INPROC,
IID_IBaseFilter,
reinterpret_cast<void **>(&pF));
if(SUCCEEDED(hr))
{
hr = pfG->AddFilter(pF,wszName);
if(SUCCEEDED(hr))
*ppf=pF ;
else
pF->Release();
}
return hr ;
}
...全文
87 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanhxg 2012-04-04
  • 打赏
  • 举报
回复
搞定了!结贴
http://blog.csdn.net/lanhxg/article/details/7426392
LiuYinChina 2012-04-01
  • 打赏
  • 举报
回复
陆其明的书上有 DirectShow 中怎么用 DMO 的,
lanhxg 2012-03-30
  • 打赏
  • 举报
回复
都OK!graphedit可以连通,可以播放。
我查了下dmo这个东西。貌似要先处理才可以使用。等解决后再贴出解决办法!
许文君 2012-03-30
  • 打赏
  • 举报
回复
一般来讲这个是不用你自己去注册的,graphedit能否连接?
LiuYinChina 2012-03-30
  • 打赏
  • 举报
回复
有的商品软件是在调试模式下创建不成功的,
你用 graphedit 试一下能不能创建成功,如果 graphedit 都不行,说明是有问题

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧