IHostMemoryManager

更新:2007 年 11 月

提供一些方法,这些方法使公共语言运行库 (CLR) 可以通过宿主而不是使用标准 Win32 虚拟内存函数来请求虚拟内存。

interface IHostMemoryManager : IUnknown {

    HRESULT CreateMAlloc (
        [in]  BOOL    fThreadSafe,
        [out] IHostMalloc **ppMalloc
    );

    HRESULT VirtualAlloc (
        [in]  void*   pAddress,
        [in]  SIZE_T  dwSize,
        [in]  DWORD   flAllocationType,
        [in]  DWORD   flProtect,
        [in]  EMemoryCriticalLevel dwCriticalLevel,
        [out] void**  ppMem
    );

    HRESULT VirtualFree (
        [in]  LPVOID  lpAddress,
        [in]  SIZE_T  dwSize,
        [in]  DWORD   dwFreeType
    );

    HRESULT VirtualQuery (
        [in]  void*   lpAddress,
        [out] void*   lpBuffer,
        [in]  SIZE_T  dwLength,
        [out] SIZE_T  *pResult
    );

    HRESULT VirtualProtect (
        [in]  void*   lpAddress,
        [in]  SIZE_T  dwSize,
        [in]  DWORD   flNewProtect,
        [out] DWORD*  pflOldProtect
    );

    HRESULT GetMemoryLoad (
        [out] DWORD*  pMemoryLoad, 
        [out] SIZE_T  *pAvailableBytes
    );

    HRESULT RegisterMemoryNotificationCallback (
        [in]  ICLRMemoryNotificationCallback* pCallback
    );

    HRESULT NeedsVirtualAddressSpace(
        [in]  LPVOID  startAddress,
        [in]  SIZE_T  size
        );

    HRESULT AcquiredVirtualAddressSpace(
        [in]  LPVOID  startAddress,
        [in]  SIZE_T  size
        );

    HRESULT ReleasedVirtualAddressSpace(
        [in]  LPVOID  startAddress
        );
};

方法

方法

说明

IHostMemoryManager::AcquiredVirtualAddressSpace 方法

通知宿主公共语言运行库 (CLR) 已从操作系统中获得了指定的内存。

IHostMemoryManager::CreateMAlloc 方法

获取指向 IHostMAlloc 实例的接口指针,该实例用于向宿主创建的堆请求内存分配。

IHostMemoryManager::GetMemoryLoad 方法

由按宿主的报告,获取当前正在使用的物理内存量。

IHostMemoryManager::NeedsVirtualAddressSpace 方法

通知宿主 CLR 将要尝试使用指定的内存。

IHostMemoryManager::RegisterMemoryNotificationCallback 方法

注册一个指向某回调函数的指针,宿主通过调用该回调函数来通知 CLR 计算机上的当前内存负载情况。

IHostMemoryManager::ReleasedVirtualAddressSpace 方法

通知宿主 CLR 已完成使用指定内存的过程。

IHostMemoryManager::VirtualAlloc 方法

充当对应 Win32 函数的逻辑包装,Win32 函数将保留或提交调用进程的虚拟地址空间中的页面区域。

IHostMemoryManager::VirtualFree 方法

充当对应 Win32 函数的逻辑包装,Win32 函数将释放、解除或者释放并解除调用进程的虚拟地址空间中的页面区域。

IHostMemoryManager::VirtualProtect 方法

充当对应 Win32 函数的逻辑包装,Win32 函数将更改对调用进程的虚拟地址空间中已提交页面区域的保护。

IHostMemoryManager::VirtualQuery 方法

充当对应 Win32 函数的逻辑包装,Win32 函数将检索有关调用进程虚拟地址空间中的页面区域的信息。

备注

IHostMemoryManager 还为 CLR 提供获得指针的方法,通过指针既可以向堆请求内存,又可以按宿主的报告获取进程中的内存压力级别。

要求

**平台:**请参见 .NET Framework 系统要求

**头文件:**MSCorEE.idl

**库:**作为一项资源包含在 MSCorEE.dll 中

**.NET Framework 版本:**3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0

请参见

参考

IHostMAlloc

其他资源

宿主接口