Share via


IHostMemoryManager Interface

Provides methods that allow the common language runtime (CLR) to make virtual memory requests through the host, instead of using the standard Win32 virtual memory functions.

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
        );
};

Methods

Method

Description

IHostMemoryManager::AcquiredVirtualAddressSpace Method

Notifies the host that the common language runtime (CLR) has acquired the specified memory from the operating system.

IHostMemoryManager::CreateMAlloc Method

Gets an interface pointer to an IHostMAlloc instance that is used to request memory allocations from a heap created by the host.

IHostMemoryManager::GetMemoryLoad Method

Gets the amount of physical memory that is currently being used, as reported by the host.

IHostMemoryManager::NeedsVirtualAddressSpace Method

Notifies the host that the CLR is going to attempt to use the specified memory.

IHostMemoryManager::RegisterMemoryNotificationCallback Method

Registers a pointer to a callback function that the host invokes to notify the CLR of the current memory load on the computer.

IHostMemoryManager::ReleasedVirtualAddressSpace Method

Notifies the host that the CLR has finished using the specified memory.

IHostMemoryManager::VirtualAlloc Method

Serves as a logical wrapper for the corresponding Win32 function, which reserves or commits a region of pages in the virtual address space of the calling process.

IHostMemoryManager::VirtualFree Method

Serves as a logical wrapper for the corresponding Win32 function, which releases, decommits, or releases and decommits a region of pages within the virtual address space of the calling process.

IHostMemoryManager::VirtualProtect Method

Serves as a logical wrapper for the corresponding Win32 function, which changes the protection on a region of committed pages in the virtual address space of the calling process.

IHostMemoryManager::VirtualQuery Method

Serves as a logical wrapper for the corresponding Win32 function, which retrieves information about a range of pages in the virtual address space of the calling process.

Remarks

IHostMemoryManager also provides methods for the CLR to obtain a pointer through which to make memory requests on the heap and to get the level of memory pressure in the process, as reported by the host.

Requirements

Platforms: Windows 2000, Windows XP, Windows Server 2003 family

Header: MSCorEE.idl

Library: Included as a resource in MSCorEE.dll

.NET Framework Version: 2.0

See Also

Concepts

IHostMAlloc Interface

Hosting Interfaces