IWMPMediaPluginRegistrar
COM公式ドキュメント
IWMPMediaPluginRegistrar インターフェイスはプラグインの登録を管理します。
メソッド 2
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
IWMPMediaPluginRegistrar::WMPRegisterPlayerPlugin 関数は、Windows Media Player プラグインを識別する情報をレジストリに追加します。
| pwszFriendlyName | LPWSTR | in | プラグインのフレンドリ名を格納した、ワイド文字の null 終端文字列へのポインター。これはユーザーに表示される名前でもあります。 |
| pwszDescription | LPWSTR | in | プラグインの説明を格納した、ワイド文字の null 終端文字列へのポインター。この情報もユーザーに表示されます。 |
| pwszUninstallString | LPWSTR | in | アンインストール文字列を格納した、ワイド文字の null 終端文字列へのポインター。 |
| dwPriority | DWORD | in | 現在有効なプラグインのチェーン内における、プラグインの優先順位の位置を格納する整数値。 |
| guidPluginType | GUID | in | プラグインの種類を指定する GUID。DSP プラグインの場合、DirectShow 再生用に登録するには WMP_PLUGINTYPE_DSP を、Media Foundation 再生用に登録するには WMP_PLUGINTYPE_DSP_OUTOFPROC を指定します。「解説」を参照してください。 |
| clsid | GUID | in | プラグインのクラス ID。 |
| cMediaTypes | DWORD | in | プラグインがサポートするメディアの種類の数。 |
| pMediaTypes | void* | inout | サポートされるメディアの種類を列挙するメディアの種類の配列へのポインター。メディアの種類は、type/subtype のペアとして格納されます。 |
戻り値
この関数は HRESULT を返します。
解説(Remarks)
この関数は、エクスポートされた DllRegisterServer 関数内に実装します。
アンインストール文字列は、ユーザーがプレーヤーのプラグイン構成ダイアログ ボックスで [削除] をクリックしてプラグインを削除することを選択したときに、Windows Media Player が Windows の ShellExecute 関数へ引数として渡すコマンド ライン文字列です。これにより、Windows Media Player から起動する独自のアンインストール プログラムを実行できます。
優先順位の値は 0 から始まります。ほとんどの DSP プラグインでは、1 から 10 の間の値を指定します。値が小さいほど、プラグインはレンダリング エンジンに近い位置に配置されます。
dwPriority に同一の値を指定して登録された DSP プラグインは、レジストリ内での位置に基づいて順序付けされます。レジストリ階層内で上位にあるプラグインには、下位にあるプラグインよりも高い優先順位が割り当てられます。
Windows Media Player 11 で動作するように設計された DSP プラグインは、このメソッドを 2 回呼び出す必要があります。1 回目の呼び出しでは、guidPluginType に WMP_PLUGINTYPE_DSP を指定する必要があります。2 回目の呼び出しでは、guidPluginType に WMP_PLUGINTYPE_DSP_OUTOFPROC を指定する必要があります。下位互換性を持つように設計されたプラグインの場合、旧バージョンの Windows Media Player 向けにインストールするときは 2 回目の呼び出しを行わないようにしてください。これを実現するには、Windows のバージョンを確認します。Windows オペレーティング システムのメジャー バージョンが 6 以上であれば、Media Foundation 再生用にプラグインを安全に登録できます。
IWMPMediaPluginRegistrar::WMPUnRegisterPlayerPlugin 関数は、Windows Media Player プラグインに関する情報をレジストリから削除します。
| guidPluginType | GUID | in | プラグインの種類を指定する GUID。DSP プラグインの場合、DirectShow 再生用に登録するには WMP_PLUGINTYPE_DSP を、Media Foundation 再生用に登録するには WMP_PLUGINTYPE_DSP_OUTOFPROC を指定します。「解説」を参照してください。 |
| clsid | GUID | in | 削除するプラグインのクラス ID を指定します。 |
戻り値
この関数は HRESULT を返します。
解説(Remarks)
この関数は、エクスポートされた DllUnRegisterServer 関数内に実装します。
Windows Media Player 11 で動作するように設計された DSP プラグインは、WMPRegisterPlayerPlugin を 2 回呼び出した場合、このメソッドも 2 回呼び出す必要があります。1 回目の呼び出しでは、guidPluginType に WMP_PLUGINTYPE_DSP を指定する必要があります。2 回目の呼び出しでは、guidPluginType に WMP_PLUGINTYPE_DSP_OUTOFPROC を指定する必要があります。下位互換性を持つように設計されたプラグインの場合、旧バージョンの Windows Media Player 向けにインストールするときは 2 回目の呼び出しを行わないようにしてください。これを実現するには、Windows のバージョンを確認します。Windows オペレーティング システムのメジャー バージョンが 6 以上であれば、Media Foundation 再生用にプラグインを安全に削除できます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWMPMediaPluginRegistrar "{68E27045-05BD-40B2-9720-23088C78E390}"
#usecom global IWMPMediaPluginRegistrar IID_IWMPMediaPluginRegistrar "{}"
#comfunc global IWMPMediaPluginRegistrar_WMPRegisterPlayerPlugin 3 wstr,wstr,wstr,int,int,int,int,sptr
#comfunc global IWMPMediaPluginRegistrar_WMPUnRegisterPlayerPlugin 4 int,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。