public unsafe static object GetNativeOverlappedState(NativeOverlapped *overlapped) { if (overlapped == null) { throw new ArgumentNullException("overlapped"); } return(ThreadPoolBoundHandle.GetOverlappedWrapper(overlapped, null)._userState); }
public unsafe void FreeNativeOverlapped(NativeOverlapped *overlapped) { if (overlapped == null) { throw new ArgumentNullException("overlapped"); } ThreadPoolBoundHandleOverlapped overlappedWrapper = ThreadPoolBoundHandle.GetOverlappedWrapper(overlapped, this); if (overlappedWrapper._boundHandle != this) { throw new ArgumentException("Wrong bound handle", "overlapped"); } if (overlappedWrapper._preAllocated != null) { overlappedWrapper._preAllocated.Release(); return; } Overlapped.Free(overlapped); }