Win32 API 日本語リファレンス
ホームSystem.ClrHosting › IHostMemoryManager

IHostMemoryManager

COM
IID7bc698d1-f9e3-4460-9cde-d04248e9fa25継承元IUnknown自前メソッド開始 vtbl3

メソッド 10

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

vtbl 3 HRESULT CreateMalloc(DWORD dwMallocType, IHostMalloc** ppMalloc)
dwMallocTypeDWORDin作成するメモリアロケーターの種類を指定する DWORD である。
ppMallocIHostMalloc**out作成されたメモリアロケーターを表す IHostMalloc インターフェイスを受け取るポインタへのポインタである。
vtbl 4 HRESULT VirtualAlloc(void* pAddress, UINT_PTR dwSize, DWORD flAllocationType, DWORD flProtect, EMemoryCriticalLevel eCriticalLevel, void** ppMem)
pAddressvoid*in確保を希望する基底アドレスへのポインタであり、任意位置でよい場合は NULL を指定できる。
dwSizeUINT_PTRin確保する領域のバイト数を指定する UINT_PTR である。
flAllocationTypeDWORDinメモリ確保の種類(予約・コミット等)を指定する DWORD である。
flProtectDWORDinメモリ保護属性を指定する DWORD である。
eCriticalLevelEMemoryCriticalLevelinメモリ確保の重要度(失敗時の影響度)を指定する EMemoryCriticalLevel 値である。
ppMemvoid**out確保された仮想メモリ領域の先頭アドレスを受け取るポインタへのポインタである。
vtbl 5 HRESULT VirtualFree(void* lpAddress, UINT_PTR dwSize, DWORD dwFreeType)
lpAddressvoid*in解放する仮想メモリ領域の基底アドレスへのポインタである。
dwSizeUINT_PTRin解放する領域のバイト数を指定する UINT_PTR である。
dwFreeTypeDWORDin解放の種類(デコミット・リリース等)を指定する DWORD である。
vtbl 6 HRESULT VirtualQuery(void* lpAddress, void* lpBuffer, UINT_PTR dwLength, UINT_PTR* pResult)
lpAddressvoid*in情報を問い合わせる仮想メモリアドレスへのポインタである。
lpBuffervoid*outメモリ領域情報を受け取るバッファへのポインタである。
dwLengthUINT_PTRin受け取りバッファのバイト数を指定する UINT_PTR である。
pResultUINT_PTR*outバッファに書き込まれた実際のバイト数を受け取る UINT_PTR へのポインタである。
vtbl 7 HRESULT VirtualProtect(void* lpAddress, UINT_PTR dwSize, DWORD flNewProtect, DWORD* pflOldProtect)
lpAddressvoid*in保護属性を変更する仮想メモリ領域の基底アドレスへのポインタである。
dwSizeUINT_PTRin保護属性を変更する領域のバイト数を指定する UINT_PTR である。
flNewProtectDWORDin新しく設定するメモリ保護属性を指定する DWORD である。
pflOldProtectDWORD*out変更前のメモリ保護属性を受け取る DWORD へのポインタである。
vtbl 8 HRESULT GetMemoryLoad(DWORD* pMemoryLoad, UINT_PTR* pAvailableBytes)
pMemoryLoadDWORD*outメモリ使用率(0〜100 の割合)を受け取る DWORD へのポインタである。
pAvailableBytesUINT_PTR*out利用可能なメモリのバイト数を受け取る UINT_PTR へのポインタである。
vtbl 9 HRESULT RegisterMemoryNotificationCallback(ICLRMemoryNotificationCallback* pCallback)
pCallbackICLRMemoryNotificationCallback*inメモリ通知を受け取るための ICLRMemoryNotificationCallback インターフェイスへのポインタである。
vtbl 10 HRESULT NeedsVirtualAddressSpace(void* startAddress, UINT_PTR size)
startAddressvoid*inランタイムが必要とする仮想アドレス空間の開始アドレスへのポインタである。
sizeUINT_PTRin必要とする仮想アドレス空間のバイト数を指定する UINT_PTR である。
vtbl 11 HRESULT AcquiredVirtualAddressSpace(void* startAddress, UINT_PTR size)
startAddressvoid*inランタイムが確保した仮想アドレス空間の開始アドレスへのポインタである。
sizeUINT_PTRin確保した仮想アドレス空間のバイト数を指定する UINT_PTR である。
vtbl 12 HRESULT ReleasedVirtualAddressSpace(void* startAddress)
startAddressvoid*inランタイムが解放した仮想アドレス空間の開始アドレスへのポインタである。

HSP用 COM定義

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

出力引数:
#define global IID_IHostMemoryManager "{7BC698D1-F9E3-4460-9CDE-D04248E9FA25}"
#usecom global IHostMemoryManager IID_IHostMemoryManager "{}"
#comfunc global IHostMemoryManager_CreateMalloc                        3 int,sptr
#comfunc global IHostMemoryManager_VirtualAlloc                        4 sptr,sptr,int,int,int,sptr
#comfunc global IHostMemoryManager_VirtualFree                         5 sptr,sptr,int
#comfunc global IHostMemoryManager_VirtualQuery                        6 sptr,sptr,sptr,var
#comfunc global IHostMemoryManager_VirtualProtect                      7 sptr,sptr,int,var
#comfunc global IHostMemoryManager_GetMemoryLoad                       8 var,var
#comfunc global IHostMemoryManager_RegisterMemoryNotificationCallback  9 sptr
#comfunc global IHostMemoryManager_NeedsVirtualAddressSpace            10 sptr,sptr
#comfunc global IHostMemoryManager_AcquiredVirtualAddressSpace         11 sptr,sptr
#comfunc global IHostMemoryManager_ReleasedVirtualAddressSpace         12 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。