using System; namespace NTwain { /// <summary> /// Interface that provides the correct methods for managing memory on data exchanged with TWAIN sources. /// </summary> public interface IMemoryManager { /// <summary> /// Function to allocate memory. Calls to this must be coupled with <see cref="Free"/> later. /// </summary> /// <param name="size">The size in bytes.</param> /// <returns>Handle to the allocated memory.</returns> IntPtr Allocate(uint size); /// <summary> /// Function to free memory. /// </summary> /// <param name="handle">The handle from <see cref="Allocate"/>.</param> void Free(IntPtr handle); /// <summary> /// Function to lock some memory. Calls to this must be coupled with <see cref="Unlock"/> later. /// </summary> /// <param name="handle">The handle to allocated memory.</param> /// <returns>Handle to the lock.</returns> IntPtr Lock(IntPtr handle); /// <summary> /// Function to unlock a previously locked memory region. /// </summary> /// <param name="handle">The handle from <see cref="Lock"/>.</param> void Unlock(IntPtr handle); } }