This class encapsulates the Win32 API OVERLAPPED structure. NativeOverlapped is needed to mimic the structure the API expects, but this class encapsulates the overlapped structure into a .NET class. You can create NativeOverlapped structures by calling Pack( ) , and create Overlapped objects with the static Unpack( ) method. To avoid a memory leak, each NativeOverlapped that you create must also be freed by calling the static Free( ) method. Unpack( ) does not free the memory. public class Overlapped { // Public Constructors public Overlapped ( ); public Overlapped (int offsetLo , int offsetHi , int hEvent , IAsyncResult ar ); // Public Instance Properties public IAsyncResult AsyncResult {set; get; } public int EventHandle {set; get; } public int OffsetHigh {set; get; } public int OffsetLow {set; get; } // Public Static Methods public static void Free (NativeOverlapped *nativeOverlappedPtr ); public static Overlapped Unpack (NativeOverlapped *nativeOverlappedPtr ); // Public Instance Methods public NativeOverlapped* Pack (IOCompletionCallback iocb ); public NativeOverlapped* UnsafePack (IOCompletionCallback iocb ); } |