/// <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;
        }