如何在创建 DirectShow 类别后将其销毁?

How Do I Destroy A DirectShow Category After Creating It?

MSDN 关于使用 IFilterMapper2 创建用于注册 DirectShow 过滤器的类别的方法令人耳目一新:

IFilterMapper2 *pFM2 = NULL;

CoCreateInstance(CLSID_FilterMapper2, NULL, CLSCTX_INPROC_SERVER,
        IID_IFilterMapper2, (void **)&pFM2);

pFM2->CreateCategory(
    CLSID_MyFiltersCategory,         // Category.
    MERIT_DO_NOT_USE,                // Merit.
    L"My Filters"                    // Description.
);

pFM2->Release();

但是,没有为接口定义 "DestroyCategory" 方法。我宁愿不对注册表进行任何形式的考古挖掘。有谁知道在使用 IFilterMapper2::CreateCategory 创建 DirectShow 类别后销毁它的可靠方法?

您将不得不进行考古 - 没有删除类别的方法。好处是它非常简单:

  • HKEY_CLASSES_ROOT\CLSID\<category-GUID>
  • HKEY_CLASSES_ROOT\CLSID\{DA4E3DA0-D07D-11d0-BD50-00A0C911CE86}\Instance\<category-GUID>