首页 > 其他 > 详细

DirectShow3

时间:2019-09-12 12:05:04      阅读:95      评论:0      收藏:0      [点我收藏+]
\\如何修改系统中已经注册的Filter的Merit值
typedef struct
{
 DWORD dwVersion; //版本号
 DWORD dwMerit;  //Merit值
 DWORD dwPinCount; //Pin的数量
 DWORD dwReserved; //保留
}FILTER_HEADER;
BOOL SetFilterMerit(const char*inClsid,DWORD inMerit)
{
 const char* cRegistryEntry="CLSID\\{083863F1-70DE-11d0-BD40-00A0C911CE86}\\Instance\\";
 const long cMaxLength=1024*16;
 BYTE filterData[cMaxLength];
 DWORD actualLength=0;
 \\生成Filter信息注册部分的注册表入口
 char szEntry[1000];
 strcpy(szEntry,cRegistryEntry);
 strcat(szEntry,inClsid);
 HKEY hKey=NULL;
 LONG result=::RegOpenKeyEx(HKEY_CLASSES_ROOT,szEntry,0,KEY_ALL_ACCESS,&hKey);
 BOOL pass=(result==ERROR_SUCCESS);
 if(pass)
 {
  \\读取FilterData的值
  actualLength=actualLength;
  result=::RegQueryValueEx(hKey,"FilterData",NULL,NULL,filterData,&actualLength);
  pass=(result==ERROR_SUCCESS);
 }
 if(pass)
 {
  \\修改FiterData中的Merit部分,然后写回到注册表
  FILTER_HEADER *filterHeader=(FILTER_HEADER *)filterData;
  filterHeader->dwMerit=inMerit;
  result=::RegSetValueEx(hKey,"FilterData",NULL,REG_BINARy,filterData,actualLength);
  pass=(result==ERROR_SUCCESS);
 }
 if(hKey)
 {
  ::RegCloseKey(hKey);
 }
 return pass;
}

DirectShow3

原文:https://www.cnblogs.com/xiaomi-daming/p/11510844.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!