Win32 API 日本語リファレンス
ホームMedia.DirectShow › IVMRSurfaceAllocator

IVMRSurfaceAllocator

COM
IID31ce832e-4484-458b-8cca-f4d7e3db0b52継承元IUnknown自前メソッド開始 vtbl3

メソッド 4

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT AllocateSurface(UINT_PTR dwUserID, VMRALLOCATIONINFO* lpAllocInfo, DWORD* lpdwActualBuffers, IDirectDrawSurface7** lplpSurface)
dwUserIDUINT_PTRinアロケータを識別するユーザー定義ID。
lpAllocInfoVMRALLOCATIONINFO*in必要なサーフェス数や形式を指定するVMRALLOCATIONINFO。
lpdwActualBuffersDWORD*inout実際に確保されたバッファ数を受け取る入出力先。
lplpSurfaceIDirectDrawSurface7**out確保されたDirectDrawサーフェスを受け取る出力先。
vtbl 4 HRESULT FreeSurface(UINT_PTR dwID)
dwIDUINT_PTRin解放するサーフェス群を識別するユーザー定義ID。
vtbl 5 HRESULT PrepareSurface(UINT_PTR dwUserID, IDirectDrawSurface7* lpSurface, DWORD dwSurfaceFlags)
dwUserIDUINT_PTRin対象アロケータを識別するユーザー定義ID。
lpSurfaceIDirectDrawSurface7*in提示前に準備するDirectDrawサーフェス。
dwSurfaceFlagsDWORDin準備動作を指定するフラグ(インターレース等)。
vtbl 6 HRESULT AdviseNotify(IVMRSurfaceAllocatorNotify* lpIVMRSurfAllocNotify)
lpIVMRSurfAllocNotifyIVMRSurfaceAllocatorNotify*inアロケータと連携する通知インターフェイス。NULLで通知解除。

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IVMRSurfaceAllocator "{31CE832E-4484-458B-8CCA-F4D7E3DB0B52}"
#usecom global IVMRSurfaceAllocator IID_IVMRSurfaceAllocator "{}"
#comfunc global IVMRSurfaceAllocator_AllocateSurface  3 sptr,var,var,sptr
#comfunc global IVMRSurfaceAllocator_FreeSurface      4 sptr
#comfunc global IVMRSurfaceAllocator_PrepareSurface   5 sptr,sptr,int
#comfunc global IVMRSurfaceAllocator_AdviseNotify     6 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。