[ComImport]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("00000002-0000-0000-C000-000000000046")]
interface IMalloc {
// Allocate a block of memory
// Return value: a pointer to the allocated memory block.
[PreserveSig]
IntPtr Alloc(
UInt32 cb); // Size, in bytes, of the memory block to be
// allocated.
// Changes the size of a previously allocated memory block.
// Return value: reallocated memory block
[PreserveSig]
IntPtr Realloc(
IntPtr pv, // Pointer to the memory block to be reallocated
UInt32 cb); // Size of the memory block, in bytes, to be
// reallocated.
// Free a previously allocated block of memory.
[PreserveSig]
void Free(
IntPtr pv); // Pointer to the memory block to be freed.
// This method returns the size, in bytes, of a memory block
// previously
// allocated with IMalloc::Alloc or IMalloc::Realloc.
// Return value: The size of the allocated memory block in bytes.
[PreserveSig]
UInt32 GetSize(
IntPtr pv); // Pointer to the memory block for which the size is
// requested.
// This method determines whether this allocator was used to allocate
// the specified block of memory.
// Return value: 1 - allocated 0 - not allocated by this IMalloc Instance.
// -1 if DidAlloc is unable to determine whether or not it allocated the memory block.
[PreserveSig]
Int16 DidAlloc(
IntPtr pv); // Pointer to the memory block
// Minimizes the heap by releasing unused memory to the operating system.
[PreserveSig]
void HeapMinimize();
}
<Runtime.InteropServices.ComImport()> _
<Runtime.InteropServices.InterfaceType(Runtime.InteropServices.ComInterfaceType.InterfaceIsIUnknown)> _
<Runtime.InteropServices.Guid("00000002-0000-0000-C000-000000000046")> _
Public Interface IMalloc
''' <summary>
''' Allocate a block of Memory.
''' </summary>
''' <param name="cb">Size, in bytes, of the memory block to be allocated.</param>
''' <returns>Returns a pointer to the allocated memory block.</returns>
<Runtime.InteropServices.PreserveSig()> Function Alloc(ByVal cb As UInt32) As IntPtr
''' <summary>
''' Changes the size of the allocated memory block.
''' </summary>
''' <param name="pv">Pointer to the memory block to be reallocated.</param>
''' <param name="cb">Size of the memory block, in bytes, to be reallocated.</param>
''' <returns>Returns the reallocated memory block.</returns>
<Runtime.InteropServices.PreserveSig()> Function Realloc(ByVal pv As IntPtr, ByVal cb As UInt32) As IntPtr
''' <summary>
''' Free a previously allocated block of memory.
''' </summary>
''' <param name="pv">Pointer to the memory block to be freed.</param>
<Runtime.InteropServices.PreserveSig()> Sub Free(ByVal pv As IntPtr)
''' <summary>
''' This method returns the size, in bytes, of a memory block previously allocated with IMalloc::Alloc or IMalloc::Realloc.
''' </summary>
''' <param name="pv">Pointer to the memory block for which the size is requested.</param>
''' <returns>Returns the size of the allocated memory block in bytes.</returns>
<Runtime.InteropServices.PreserveSig()> Function GetSize(ByVal pv As IntPtr) As UInt32
''' <summary>
''' This method determines whether this allocator was used to allocate the specified block of memory.
''' </summary>
''' <param name="pv">Pointer to the memory block.</param>
''' <returns>1 - allocated 0 - not allocated by this IMalloc Instance.</returns>
<Runtime.InteropServices.PreserveSig()> Function DidAlloc(ByVal pv As IntPtr) As Int16
''' <summary>
''' 'Minimizes the heap by releasing unused memory to the operating system.
''' </summary>
<Runtime.InteropServices.PreserveSig()> Sub HeapMinimize()
End Interface