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

IAMDevMemoryAllocator

COM
IIDc6545bf0-e76b-11d0-bd52-00a0c911ce86継承元IUnknown自前メソッド開始 vtbl3

メソッド 5

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

vtbl 3 HRESULT GetInfo(DWORD* pdwcbTotalFree, DWORD* pdwcbLargestFree, DWORD* pdwcbTotalMemory, DWORD* pdwcbMinimumChunk)
pdwcbTotalFreeDWORD*outデバイスメモリの空き総量(バイト)を受け取る出力ポインタ。
pdwcbLargestFreeDWORD*out連続して確保可能な最大空きサイズ(バイト)を受け取る出力ポインタ。
pdwcbTotalMemoryDWORD*outデバイスメモリの総容量(バイト)を受け取る出力ポインタ。
pdwcbMinimumChunkDWORD*out確保単位となる最小チャンクサイズ(バイト)を受け取る出力ポインタ。
vtbl 4 HRESULT CheckMemory(BYTE* pBuffer)
pBufferBYTE*inこのアロケータが管理するデバイスメモリ内のバッファか検証する対象ポインタ。
vtbl 5 HRESULT Alloc(BYTE** ppBuffer, DWORD* pdwcbBuffer)
ppBufferBYTE**out確保したデバイスメモリバッファの先頭を受け取る出力ポインタ。
pdwcbBufferDWORD*inout確保したバッファのサイズ(バイト)を受け取る出力ポインタ。
vtbl 6 HRESULT Free(BYTE* pBuffer)
pBufferBYTE*in解放するデバイスメモリバッファへのポインタ。
vtbl 7 HRESULT GetDevMemoryObject(IUnknown** ppUnkInnner, IUnknown* pUnkOuter)
ppUnkInnnerIUnknown**out内部デバイスメモリオブジェクトのIUnknownを受け取る出力ポインタ。
pUnkOuterIUnknown*inアグリゲーション時の外側コントローリングIUnknown。単独利用時はNULL。

HSP用 COM定義

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

出力引数:
#define global IID_IAMDevMemoryAllocator "{C6545BF0-E76B-11D0-BD52-00A0C911CE86}"
#usecom global IAMDevMemoryAllocator IID_IAMDevMemoryAllocator "{}"
#comfunc global IAMDevMemoryAllocator_GetInfo             3 var,var,var,var
#comfunc global IAMDevMemoryAllocator_CheckMemory         4 var
#comfunc global IAMDevMemoryAllocator_Alloc               5 var,var
#comfunc global IAMDevMemoryAllocator_Free                6 var
#comfunc global IAMDevMemoryAllocator_GetDevMemoryObject  7 sptr,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。