Макет разделов реестра

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]

Фильтры DirectShow регистрируются в двух местах:

  • Библиотека DLL, содержащая фильтр, регистрируется в качестве COM-сервера фильтра. Когда приложение вызывает CoCreateInstance для создания фильтра, библиотека COM Microsoft Windows использует эту запись реестра для поиска библиотеки 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