IWMPPlugin
COM公式ドキュメント
IWMPPlugin インターフェイスはプラグインによって実装され、Windows Media Player への接続を管理します。Note このインターフェイスのインターフェイス識別子 GUID は、ベータ リリースと最終リリースの間で変更されました。 .
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
IWMPPlugin::Init メソッドは、Windows Media Player がプラグインを初期化するときに呼び出されます。
| dwPlaybackContext | UINT_PTR | in | プラグインが属する特定の Windows Media Player 再生エンジンを示す DWORD 値。 |
戻り値
このメソッドは HRESULT を返します。
解説(Remarks)
任意の時点で、複数の Windows Media Player インスタンスが同一プロセス内で実行されている可能性があります。たとえば、複数の Windows Media Player コントロール インスタンスが同じブラウザー ウィンドウ内に埋め込まれていたり、同一プロセス内に共存する複数のブラウザー インスタンスに埋め込まれていたりする場合があります。また、同一の Windows Media Player インスタンスが同時に複数の再生エンジンを作成する可能性もあります。dwPlaybackContext 値を使用すると、プラグインを含む Windows Media Player 再生エンジンのインスタンスを特定できます。これは、複数のプラグインを相互に接続できるようにしたい場合に役立ちます。
Init と Shutdown は常に同じスレッドで呼び出されます。
IWMPPlugin::Shutdown メソッドは、Windows Media Player がプラグインをシャットダウンするときに呼び出されます。
戻り値
このメソッドは HRESULT を返します。
解説(Remarks)
Init と Shutdown は常に同じスレッドで呼び出されます。
IWMPPlugin::GetID メソッドは、プラグインのクラス ID を返します。
| pGUID | GUID* | inout | プラグインのクラス ID を表す GUID へのポインター。 |
戻り値
このメソッドは HRESULT を返します。
解説(Remarks)
GUID 構造体の詳細については、Platform SDK を参照してください。
IWMPPlugin::GetCaps メソッドは、プラグインが入力形式と出力形式の間で変換できるかどうかを指定するフラグを返します。
| pdwFlags | DWORD* | inout | プラグインが形式を変換できるかどうかを指定する変数へのポインター。指定される値は、WMPPlugin_Caps 列挙体の 0 個以上のフラグをビットごとに組み合わせたものです。 |
戻り値
このメソッドは HRESULT を返します。
解説(Remarks)
現在、プラグインが指定できる [out] 値は 2 通りあります。プラグインが形式を変換できることを示す 0 か、Windows Media Player に必要な形式変換の処理を強制する WMPPlugin_Caps_CannotConvertFormats です。
IWMPPlugin::AdviseWMPServices メソッドはプラグインによって実装されます。
| pWMPServices | IWMPServices* | in | IWMPServices インターフェイスへのポインター。 |
戻り値
このメソッドは HRESULT を返します。
解説(Remarks)
Windows Media Player はプラグインの AdviseWMPServices メソッドを呼び出してポインターを渡します。プラグインはそのポインターを使用して IWMPServices インターフェイスを呼び出すことができ、このインターフェイスにはストリームの現在の状態に関する情報を提供するメソッドが含まれています。
IWMPPlugin::UnAdviseWMPServices メソッドは、AdviseWMPServices によって提供されたポインターを解放するために使用されます。
戻り値
このメソッドは HRESULT を返します。
解説(Remarks)
Windows Media Player は、AdviseWMPServices によって提供されたポインターが無効になったときにこのメソッドを呼び出します。プラグインはこのメソッドを使用して、そのポインターを介したストリーム状態の要求を停止する必要があります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWMPPlugin "{F1392A70-024C-42BB-A998-73DFDFE7D5A7}" #usecom global IWMPPlugin IID_IWMPPlugin "{}" #comfunc global IWMPPlugin_Init 3 sptr #comfunc global IWMPPlugin_Shutdown 4 #comfunc global IWMPPlugin_GetID 5 var #comfunc global IWMPPlugin_GetCaps 6 var #comfunc global IWMPPlugin_AdviseWMPServices 7 sptr #comfunc global IWMPPlugin_UnAdviseWMPServices 8 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IWMPPlugin "{F1392A70-024C-42BB-A998-73DFDFE7D5A7}" #usecom global IWMPPlugin IID_IWMPPlugin "{}" #comfunc global IWMPPlugin_Init 3 sptr #comfunc global IWMPPlugin_Shutdown 4 #comfunc global IWMPPlugin_GetID 5 sptr #comfunc global IWMPPlugin_GetCaps 6 sptr #comfunc global IWMPPlugin_AdviseWMPServices 7 sptr #comfunc global IWMPPlugin_UnAdviseWMPServices 8 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。