IMSVidVideoRenderer
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
IMSVidVideoRenderer インターフェイスは、ビデオレンダラーデバイスを表します。MSVidVideoRenderer オブジェクトがこのインターフェイスを公開します。このインターフェイスは、Video Mixing Renderer (VMR) フィルターへのアクセスを提供します。
解説(Remarks)
このインターフェイスのインターフェイス識別子 (IID) を宣言するには、__uuidof 演算子を使用します: __uuidof(IMSVidVideoRenderer)。
メソッド 30
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
get_CustomCompositorClass メソッドは、Video Mixing Renderer の現在のイメージコンポジターのクラス識別子 (CLSID) を BSTR として取得します。
| CompositorCLSID | LPWSTR* | out | CLSID の文字列表現を受け取ります。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
このメソッドは Automation クライアント向けに提供されています。C++ アプリケーションでは、BSTR ではなく GUID を返す IMSVidVideoRenderer::get__CustomCompositorClass メソッドを使用できます。
呼び出し元は、返された文字列を SysFreeString 関数を使用して解放する必要があります。
put_CustomCompositorClass メソッドは、カスタムイメージコンポジターのクラス識別子 (CLSID) を BSTR として指定します。
| CompositorCLSID | LPWSTR | in | CLSID を文字列として指定します。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
このメソッドは Automation クライアント向けに提供されています。C++ アプリケーションでは、BSTR ではなく GUID を指定する IMSVidVideoRenderer::put__CustomCompositorClass メソッドを使用できます。
get__CustomCompositorClass メソッドは、Video Mixing Renderer の現在のイメージコンポジターのクラス識別子 (CLSID) を GUID として取得します。
| CompositorCLSID | GUID* | out | CLSID を受け取ります。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
アプリケーションは、カスタムのイメージコンポジット処理を行うために独自のコンポジターを提供できます。詳細については、Using the Video Mixing Renderer を参照してください。
put__CustomCompositorClass メソッドは、カスタムイメージコンポジターのクラス識別子 (CLSID) を GUID として指定します。
| CompositorCLSID | GUID* | in | カスタムコンポジターの CLSID を指定します。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
アプリケーションは、カスタムのイメージコンポジット処理を行うために独自のコンポジターを提供できます。詳細については、Using the Video Mixing Renderer を参照してください。
get__CustomCompositor メソッドは、Video Mixing Renderer の現在のイメージコンポジターを取得します。
| Compositor | IVMRImageCompositor** | out | IVMRImageCompositor インターフェイスポインターを受け取ります。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
アプリケーションは、カスタムのイメージコンポジット処理を行うために独自のコンポジターを提供できます。詳細については、Using the Video Mixing Renderer を参照してください。
返される IVMRImageCompositor インターフェイスは、未解放の参照カウントを持っています。呼び出し元はこのインターフェイスを解放する必要があります。
put__CustomCompositor メソッドは、Video Mixing Renderer (VMR) が使用するカスタムイメージコンポジターを指定します。
| Compositor | IVMRImageCompositor* | in | イメージコンポジターの IVMRImageCompositor インターフェイスへのポインター。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
アプリケーションは、カスタムのイメージコンポジット処理を行うために独自のコンポジターを提供できます。詳細については、Using the Video Mixing Renderer を参照してください。
get_MixerBitmap メソッドは、静的なビットマップイメージを IPictureDisp 型として取得します。
| MixerPictureDisp | IPictureDisp** | out | IPictureDisp インターフェイスポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。 |
戻り値
HRESULT 値を返します。可能な値には次のものがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| ビットマップが設定されていません。 |
解説(Remarks)
静的なビットマップイメージが設定されている場合、VMR はそのビットマップをビデオイメージにアルファブレンドします。IPictureDisp インターフェイスの詳細については、Platform SDK のドキュメントを参照してください。
get__MixerBitmap メソッドは、VMR が静的なビットマップをミックスする方法を制御する Video Mixing Renderer の IVMRMixerBitmap インターフェイスを取得します。
| MixerPicture | IVMRMixerBitmap** | out | IVMRMixerBitmap インターフェイスポインターを受け取ります。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
返される IVMRMixerBitmap インターフェイスは、未解放の参照カウントを持っています。呼び出し元はこのインターフェイスを解放する必要があります。
put_MixerBitmap メソッドは、静的なビットマップイメージを IPictureDisp 型として指定します。
| MixerPictureDisp | IPictureDisp* | in | IPictureDisp インターフェイスへのポインターを指定します。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
VMR は、静的なビットマップイメージをビデオイメージにアルファブレンドします。IPictureDisp インターフェイスの詳細については、Platform SDK のドキュメントを参照してください。
put__MixerBitmap メソッドは、静的なビットマップイメージを指定します。
| MixerPicture | VMRALPHABITMAP* | in | ビットマップに関する情報を含む VMRALPHABITMAP 構造体へのポインター。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
get_MixerBitmapPositionRect メソッドは、ビデオウィンドウを基準とした静的なビットマップイメージの位置を取得します。
| rDest | IMSVidRect** | out | IMSVidRect インターフェイスポインターを受け取ります。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
静的なビットマップイメージが設定されている場合、VMR は pprDest で指定された位置矩形を使用して、そのビットマップをビデオイメージにアルファブレンドします。
返される IMSVidRect インターフェイスは、未解放の参照カウントを持っています。呼び出し元はこのインターフェイスを解放する必要があります。
put_MixerBitmapPositionRect メソッドは、ビデオウィンドウを基準とした静的なビットマップイメージの位置を指定します。
| rDest | IMSVidRect* | in | 矩形を指定する IMSVidRect インターフェイスへのポインター。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
静的なビットマップイメージが設定されている場合、VMR は指定された位置矩形を使用して、そのビットマップをビデオイメージにアルファブレンドします。
get_MixerBitmapOpacity メソッドは、静的なビットマップイメージの不透明度を取得します。
| opacity | INT* | out | 0 (透明) から 100 (不透明) までの整数で表される不透明度を受け取ります。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
静的なビットマップイメージが設定されている場合、VMR は pOpacity で指定された不透明度を使用して、そのビットマップをビデオイメージにアルファブレンドします。
put_MixerBitmapOpacity メソッドは、静的なビットマップイメージの不透明度を指定します。
| opacity | INT | in | 不透明度を 0 (透明) から 100 (不透明) までの整数で指定します。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
静的なビットマップイメージが設定されている場合、VMR は指定された不透明度を使用して、そのビットマップをビデオイメージにアルファブレンドします。
SetupMixerBitmap メソッドは、ビデオの上にアルファブレンドされたビットマップを表示するように Video Mixing Renderer (VMR) を構成します。
| MixerPictureDisp | IPictureDisp* | in | ビットマップを指定する IPictureDisp インターフェイスへのポインター。 |
| Opacity | INT | in | ビットマップの不透明度を、0 (透明) から 100 (不透明) までの整数で指定します。 |
| rDest | IMSVidRect* | in | ビデオウィンドウを基準としたビットマップの位置を指定する IMSVidRect インターフェイスへのポインター。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
get_SourceSize メソッドは、ビデオ矩形に適用するクリッピングの種類 (存在する場合) を取得します。
| CurrentSize | SourceSizeList* | out | SourceSizeList 列挙型のメンバーを受け取ります。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
put_SourceSize メソッドは、ビデオ矩形に適用するクリッピングの種類 (存在する場合) を指定します。
| NewSize | SourceSizeList | in | SourceSizeList 列挙型のメンバーを指定します。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
get_OverScan メソッドは、ランダムなビデオノイズを取り除くために、ビデオフレームのすべての辺に対して実行するクリッピングの量を取得します。
| plPercent | INT* | out | クリッピングの量を、パーセントの 100 分の 1 単位で受け取ります。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
現在のクリッピングモードが sslClipByOverScan の場合、VMR は plPercent パラメーターで指定された量だけビデオイメージをクリッピングします。詳細については、IMSVidVideoRenderer::put_SourceSize を参照してください。
put_OverScan メソッドは、ランダムなビデオノイズを取り除くために、ビデオフレームのすべての辺に対して実行するクリッピングの量を指定します。
| lPercent | INT | in | クリッピングの量を、パーセントの 100 分の 1 単位で指定します。たとえば、175 は 1.75% を表します。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
現在のクリッピングモードが sslClipByOverScan の場合、VMR は指定された量だけビデオイメージをクリッピングします。詳細については、IMSVidVideoRenderer::put_SourceSize を参照してください。
get_AvailableSourceRect メソッドは、ネイティブビデオのサイズを取得します。
| pRect | IMSVidRect** | out | IMSVidRect インターフェイスポインターを受け取ります。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
返される IMSVidRect インターフェイスは、未解放の参照カウントを持っています。呼び出し元はこのインターフェイスを解放する必要があります。
get_MaxVidRect メソッドは、ビデオ矩形の理想的な最大サイズを取得します。
| ppVidRect | IMSVidRect** | out | IMSVidRect インターフェイスポインターを受け取ります。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
理想的な最大イメージサイズとは、パフォーマンスやイメージ品質を著しく低下させることなく表示できる最大のビデオサイズです。
返される IMSVidRect インターフェイスは、未解放の参照カウントを持っています。呼び出し元はこのインターフェイスを解放する必要があります。
get_MinVidRect メソッドは、ビデオ矩形の理想的な最小サイズを取得します。
| ppVidRect | IMSVidRect** | out | IMSVidRect インターフェイスポインターを受け取ります。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
理想的な最小イメージサイズとは、パフォーマンスやイメージ品質を著しく低下させることなく表示できる最小のビデオサイズです。
返される IMSVidRect インターフェイスは、未解放の参照カウントを持っています。呼び出し元はこのインターフェイスを解放する必要があります。
get_ClippedSourceRect メソッドは、ビデオソース上のクリッピング矩形を取得します。
| pRect | IMSVidRect** | out | IMSVidRect インターフェイスポインターを受け取ります。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
現在のクリッピングモードが sslClipByClipRect の場合、VMR はビデオイメージをビデオソース矩形にクリッピングし、クリッピングされたイメージを引き伸ばして Video Control のビデオウィンドウを埋めます。詳細については、IMSVidVideoRenderer::put_SourceSize を参照してください。
返される IMSVidRect インターフェイスは、未解放の参照カウントを持っています。呼び出し元はこのインターフェイスを解放する必要があります。
put_ClippedSourceRect メソッドは、ビデオソース上のクリッピング矩形を指定します。
| pRect | IMSVidRect* | in | 矩形を指定する IMSVidRect インターフェイスへのポインター。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
現在のクリッピングモードが sslClipByClipRect の場合、VMR はビデオイメージをビデオソース矩形にクリッピングし、これを引き伸ばして Video Control のビデオウィンドウを埋めます。詳細については、IMSVidVideoRenderer::put_SourceSize を参照してください。
使用例
次の例では、ビデオイメージをソース矩形の左上隅にクリッピングします。
CComPtr<IMSVidVideoRenderer> pVideo;
HRESULT hr = pVideoControl->get_VideoRendererActive(&pVideo);
if (SUCCEEDED(hr))
{
long lWidth, lHeight;
CComPtr<IMSVidRect> pRect;
hr = pVideo->get_AvailableSourceRect(&pRect);
pRect->get_Height(&lHeight);
pRect->get_Width(&lWidth);
pRect->put_Height(lHeight / 2);
pRect->put_Width(lWidth / 2);
pVideo->put_SourceSize(sslClipByClipRect);
hr = pVideo->put_ClippedSourceRect(pRect);
}
get_UsingOverlay メソッドは、Video Mixing Renderer (VMR) がハードウェアオーバーレイを使用しているかどうかを照会します。
| UseOverlayVal | VARIANT_BOOL* | out | 次のいずれかの値を受け取ります。
|
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
put_UsingOverlay メソッドは、Video Mixing Renderer がハードウェアオーバーレイを使用するかどうかを指定します。
| UseOverlayVal | VARIANT_BOOL | in | ハードウェアオーバーレイを使用するかどうかを指定するフラグ。次のいずれかの値を使用します。
|
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
Capture メソッドは、Video Mixing Renderer (VMR) によって現在レンダリングされているビデオフレームをキャプチャします。
| currentImage | IPictureDisp** | out | IPictureDisp インターフェイスポインターを受け取ります。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
返される IPictureDisp インターフェイスは、未解放の参照カウントを持っています。呼び出し元はこのインターフェイスを解放する必要があります。
IPictureDisp インターフェイスの詳細については、Microsoft Platform SDK のドキュメントを参照してください。
使用例
CComPtr<IMSVidCtl> m_pVideoControl; // Video Control へのポインター。
/* フィルターグラフを構築して実行します (ここでは省略)。 */
// ビデオレンダラーを検索します
CComPtr<IMSVidVideoRenderer> pVideo;
hr = m_pVideoControl->get_VideoRendererActive(&pVideo);
if (SUCCEEDED(hr))
{
// イメージをキャプチャします。
CComPtr<IPictureDisp> pPic;
hr = pVideo->Capture(&pPic);
}
get_FramesPerSecond メソッドは、現在のフレームレートを取得します。
| pVal | INT* | out | フレームレートを、フレーム毎秒単位で受け取ります。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
get_DecimateInput メソッドは、Video Mixing Renderer (VMR) が処理前にビデオをデシメート (すなわち、ネイティブビデオサイズを縮小) するよう現在構成されているかどうかを照会します。
| pDeci | VARIANT_BOOL* | out | 次のいずれかの値を受け取ります。
|
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
このプロパティは、ネイティブビデオストリームが HDTV であるにもかかわらずシステムモニターがより低い解像度に設定されている場合に true に設定する必要があります。これにより、VMR がビデオを高解像度で処理してから縮小するという不要な作業を行うのを防ぎます。
put_DecimateInput メソッドは、Video Mixing Renderer (VMR) が処理前にビデオをデシメート (すなわち、ネイティブビデオサイズを縮小) するかどうかを指定します。
| pDeci | VARIANT_BOOL | in | ビデオデシメーションを有効にするか無効にするかを指定します。次のいずれかの値を使用します。
|
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
このプロパティは、ネイティブビデオストリームが HDTV であるにもかかわらずシステムモニターがより低い解像度に設定されている場合に true に設定する必要があります。これにより、VMR がビデオを高解像度で処理してから縮小するという不要な作業を行うのを防ぎます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMSVidVideoRenderer "{37B03540-A4C8-11D2-B634-00C04F79498E}" #usecom global IMSVidVideoRenderer IID_IMSVidVideoRenderer "{37B03543-A4C8-11D2-B634-00C04F79498E}" #comfunc global IMSVidVideoRenderer_get_CustomCompositorClass 16 var #comfunc global IMSVidVideoRenderer_put_CustomCompositorClass 17 wstr #comfunc global IMSVidVideoRenderer_get__CustomCompositorClass 18 var #comfunc global IMSVidVideoRenderer_put__CustomCompositorClass 19 var #comfunc global IMSVidVideoRenderer_get__CustomCompositor 20 sptr #comfunc global IMSVidVideoRenderer_put__CustomCompositor 21 sptr #comfunc global IMSVidVideoRenderer_get_MixerBitmap 22 sptr #comfunc global IMSVidVideoRenderer_get__MixerBitmap 23 sptr #comfunc global IMSVidVideoRenderer_put_MixerBitmap 24 sptr #comfunc global IMSVidVideoRenderer_put__MixerBitmap 25 var #comfunc global IMSVidVideoRenderer_get_MixerBitmapPositionRect 26 sptr #comfunc global IMSVidVideoRenderer_put_MixerBitmapPositionRect 27 sptr #comfunc global IMSVidVideoRenderer_get_MixerBitmapOpacity 28 var #comfunc global IMSVidVideoRenderer_put_MixerBitmapOpacity 29 int #comfunc global IMSVidVideoRenderer_SetupMixerBitmap 30 sptr,int,sptr #comfunc global IMSVidVideoRenderer_get_SourceSize 31 var #comfunc global IMSVidVideoRenderer_put_SourceSize 32 int #comfunc global IMSVidVideoRenderer_get_OverScan 33 var #comfunc global IMSVidVideoRenderer_put_OverScan 34 int #comfunc global IMSVidVideoRenderer_get_AvailableSourceRect 35 sptr #comfunc global IMSVidVideoRenderer_get_MaxVidRect 36 sptr #comfunc global IMSVidVideoRenderer_get_MinVidRect 37 sptr #comfunc global IMSVidVideoRenderer_get_ClippedSourceRect 38 sptr #comfunc global IMSVidVideoRenderer_put_ClippedSourceRect 39 sptr #comfunc global IMSVidVideoRenderer_get_UsingOverlay 40 var #comfunc global IMSVidVideoRenderer_put_UsingOverlay 41 int #comfunc global IMSVidVideoRenderer_Capture 42 sptr #comfunc global IMSVidVideoRenderer_get_FramesPerSecond 43 var #comfunc global IMSVidVideoRenderer_get_DecimateInput 44 var #comfunc global IMSVidVideoRenderer_put_DecimateInput 45 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IMSVidVideoRenderer "{37B03540-A4C8-11D2-B634-00C04F79498E}" #usecom global IMSVidVideoRenderer IID_IMSVidVideoRenderer "{37B03543-A4C8-11D2-B634-00C04F79498E}" #comfunc global IMSVidVideoRenderer_get_CustomCompositorClass 16 sptr #comfunc global IMSVidVideoRenderer_put_CustomCompositorClass 17 wstr #comfunc global IMSVidVideoRenderer_get__CustomCompositorClass 18 sptr #comfunc global IMSVidVideoRenderer_put__CustomCompositorClass 19 sptr #comfunc global IMSVidVideoRenderer_get__CustomCompositor 20 sptr #comfunc global IMSVidVideoRenderer_put__CustomCompositor 21 sptr #comfunc global IMSVidVideoRenderer_get_MixerBitmap 22 sptr #comfunc global IMSVidVideoRenderer_get__MixerBitmap 23 sptr #comfunc global IMSVidVideoRenderer_put_MixerBitmap 24 sptr #comfunc global IMSVidVideoRenderer_put__MixerBitmap 25 sptr #comfunc global IMSVidVideoRenderer_get_MixerBitmapPositionRect 26 sptr #comfunc global IMSVidVideoRenderer_put_MixerBitmapPositionRect 27 sptr #comfunc global IMSVidVideoRenderer_get_MixerBitmapOpacity 28 sptr #comfunc global IMSVidVideoRenderer_put_MixerBitmapOpacity 29 int #comfunc global IMSVidVideoRenderer_SetupMixerBitmap 30 sptr,int,sptr #comfunc global IMSVidVideoRenderer_get_SourceSize 31 sptr #comfunc global IMSVidVideoRenderer_put_SourceSize 32 int #comfunc global IMSVidVideoRenderer_get_OverScan 33 sptr #comfunc global IMSVidVideoRenderer_put_OverScan 34 int #comfunc global IMSVidVideoRenderer_get_AvailableSourceRect 35 sptr #comfunc global IMSVidVideoRenderer_get_MaxVidRect 36 sptr #comfunc global IMSVidVideoRenderer_get_MinVidRect 37 sptr #comfunc global IMSVidVideoRenderer_get_ClippedSourceRect 38 sptr #comfunc global IMSVidVideoRenderer_put_ClippedSourceRect 39 sptr #comfunc global IMSVidVideoRenderer_get_UsingOverlay 40 sptr #comfunc global IMSVidVideoRenderer_put_UsingOverlay 41 int #comfunc global IMSVidVideoRenderer_Capture 42 sptr #comfunc global IMSVidVideoRenderer_get_FramesPerSecond 43 sptr #comfunc global IMSVidVideoRenderer_get_DecimateInput 44 sptr #comfunc global IMSVidVideoRenderer_put_DecimateInput 45 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。