レジストリ キーのレイアウト
DirectShow フィルタは、次の 2 つの場所に登録される。
- フィルタが含まれた DLL は、そのフィルタの COM サーバーとして登録される。アプリケーションが CoCreateInstance を呼び出してフィルタを作成すると、Microsoft Windows COM ライブラリはそのレジストリ エントリを使って DLL を見つける。
- フィルタに関する追加情報はフィルタ カテゴリ内に登録できる。System Device Enumerator とフィルタ マッパーはこの情報を使ってフィルタを見つけられる。
フィルタは追加フィルタ情報を登録する "必要はない"。DLL が COM サーバーとして登録されている限り、アプリケーションはフィルタを作成し、フィルタ グラフに追加できる。しかし、System Device Enumerator またはフィルタ マッパーによりフィルタが見つけられるようにする場合、追加情報を登録する必要がある。
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