注册表项的布局
[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayer、 IMFMediaEngine 和 媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
DirectShow 筛选器在两个位置注册:
- 包含筛选器的 DLL 注册为筛选器的 COM 服务器。 当应用程序调用 CoCreateInstance 创建筛选器时,Microsoft Windows COM 库使用此注册表项来查找 DLL。
- 有关筛选器的其他信息可以在筛选器类别中注册。 此信息使系统设备枚举器和筛选器映射器能够找到筛选器。
不需要筛选器来注册其他筛选器信息。 只要 DLL 注册为 COM 服务器,应用程序就可以创建筛选器并将其添加到筛选器图。 但是,如果希望系统设备枚举器或筛选器映射器能够发现筛选器,则必须注册其他信息。
DLL 的注册表项具有以下项:
HKEY_CLASSES_ROOT
CLSID
Filter CLSID
REG_SZ: (Default) = Friendly name
InprocServer32
REG_SZ: (Default) = File name of the DLL
REG_SZ: ThreadingModel = Both
筛选器信息的注册表项具有以下项:
HKEY_CLASSES_ROOT
CLSID
Category
Instance
Filter CLSID
REG_SZ: CLSID = Filter CLSID
REG_BINARY: FilterData = Filter information
REG_SZ: FriendlyName = Friendly name
Category
是筛选器类别的 GUID。 (请参阅 筛选器类别。) 筛选器信息打包为二进制格式。 IFilterMapper2 接口在注册表中搜索筛选器时解压缩此数据。
所有筛选器类别 GUID 都列在注册表中的以下项下:
HKEY_CLASSES_ROOT\CLSID\{DA4E3DA0-D07D-11d0-BD50-00A0C911CE86}\Instance