/// <summary> /// Uploads the next portion of an input FastTransfer stream for a previously configured FastTransfer upload operation. /// </summary> /// <param name="serverId">A 32-bit signed integer represent the Identity of server.</param> /// <param name="sourceHandleIndex">A fast transfer stream object handle index.</param> /// <param name="transferDataIndex">Transfer data index.</param> /// <returns>Indicate the result of this ROP operation.</returns> public RopResult FastTransferDestinationPutBuffer(int serverId, int sourceHandleIndex, int transferDataIndex) { RopResult result = RopResult.Success; if (sourceHandleIndex < 0 || transferDataIndex <= 0) { return RopResult.InvalidParameter; } uint fastTransferDestinationPutBufferHandle = this.handleContainer[sourceHandleIndex]; foreach (int i in this.streamBufferContainer.Keys) { byte[] transferData = this.streamBufferContainer[i]; RopFastTransferDestinationPutBufferRequest fastTransferDestinationPutBufferRequest = new RopFastTransferDestinationPutBufferRequest(); fastTransferDestinationPutBufferRequest.RopId = 0x54; fastTransferDestinationPutBufferRequest.LogonId = 0x00; fastTransferDestinationPutBufferRequest.InputHandleIndex = 0x00; fastTransferDestinationPutBufferRequest.TransferDataSize = (ushort)transferData.Length; fastTransferDestinationPutBufferRequest.TransferData = transferData; RopFastTransferDestinationPutBufferResponse response = (RopFastTransferDestinationPutBufferResponse)this.Process(serverId, fastTransferDestinationPutBufferRequest, fastTransferDestinationPutBufferHandle); if (RopResult.Success != (RopResult)response.ReturnValue) { result = (RopResult)response.ReturnValue; Site.Log.Add(LogEntryKind.Debug, "Call FastTransferDestinationPutBuffer fail at {0} times, return error: {1}", i, result); break; } this.VerifyRopFastTransferDestinationPutBuffer(fastTransferDestinationPutBufferRequest, response); } return result; }