/// <summary> /// Synchronous bulk/interrupt transfer function. /// </summary> /// <param name="buffer">A caller-allocated buffer for the transfer data. This object is pinned using <see cref="PinnedHandle"/>.</param> /// <param name="offset">Position in buffer that transferring begins.</param> /// <param name="length">Number of bytes, starting from thr offset parameter to transfer.</param> /// <param name="timeout">Maximum time to wait for the transfer to complete.</param> /// <param name="transferLength">Number of bytes actually transferred.</param> /// <returns>True on success.</returns> public ErrorCode Transfer(object buffer, int offset, int length, int timeout, out int transferLength) { PinnedHandle pinned = new PinnedHandle(buffer); ErrorCode eReturn = Transfer(pinned.Handle, offset, length, timeout, out transferLength); pinned.Dispose(); return(eReturn); }
/// <summary> /// Cancels any pending transfer and frees resources. /// </summary> public virtual void Dispose() { if (!IsCancelled) { Cancel(); } int dummy; if (!mHasWaitBeenCalled) { Wait(out dummy); } if (mPinnedHandle != null) { mPinnedHandle.Dispose(); } mPinnedHandle = null; }