コード例 #1
0
ファイル: UsbEndpointBase.cs プロジェクト: mikesocha3/Socha3
        /// <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);
        }
コード例 #2
0
        /// <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;
        }