/// <summary> /// Creates, fills and submits an asynchronous <see cref="UsbTransfer"/> context. /// </summary> /// <remarks> /// <note type="tip">This is a non-blocking asynchronous transfer function. This function returns immediately after the context is created and submitted.</note> /// </remarks> /// <param name="buffer">A caller-allocated buffer for the data that is transferred.</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="transferContext">On <see cref="ErrorCode.Success"/>, a new transfer context.</param> /// <returns><see cref="ErrorCode.Success"/> if the transfer context was created and <see cref="UsbTransfer.Submit"/> succeeded.</returns> /// <seealso cref="SubmitAsyncTransfer(object,int,int,int,out LibUsbDotNet.Main.UsbTransfer)"/> /// <seealso cref="NewAsyncTransfer"/> public virtual ErrorCode SubmitAsyncTransfer(IntPtr buffer, int offset, int length, int timeout, out UsbTransfer transferContext) { transferContext = CreateTransferContext(); transferContext.Fill(buffer, offset, length, timeout); ErrorCode ec = transferContext.Submit(); if (ec != ErrorCode.None) { transferContext.Dispose(); transferContext = null; UsbError.Error(ec, 0, "SubmitAsyncTransfer Failed", this); } return(ec); }
/// <summary> /// Creates, fills and submits an asynchronous <see cref="UsbTransfer"/> context. /// </summary> /// <remarks> /// <note type="tip">This is a non-blocking asynchronous transfer function. This function returns immediately after the context is created and submitted.</note> /// </remarks> /// <param name="buffer">A caller-allocated buffer for the data that is transferred.</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="transferContext">On <see cref="ErrorCode.Success"/>, a new transfer context.</param> /// <returns><see cref="ErrorCode.Success"/> if the transfer context was created and <see cref="UsbTransfer.Submit"/> succeeded.</returns> /// <seealso cref="SubmitAsyncTransfer(object,int,int,int,out LibUsbDotNet.Main.UsbTransfer)"/> /// <seealso cref="NewAsyncTransfer"/> public virtual ErrorCode SubmitAsyncTransfer(IntPtr buffer, int offset, int length, int timeout, out UsbTransfer transferContext) { transferContext = CreateTransferContext(); transferContext.Fill(buffer, offset, length, timeout); ErrorCode ec = transferContext.Submit(); if (ec != ErrorCode.None) { transferContext.Dispose(); transferContext = null; UsbError.Error(ec, 0, "SubmitAsyncTransfer Failed", this); } return ec; }