コード例 #1
0
        /// <summary>
        /// send SMBD data transfer message, for test case to control the transfer
        /// mannually
        /// </summary>
        /// <param name="creditsRequested">The total number of Send Credits requested
        /// of the receiver, including any Send Credits already granted.
        /// </param>
        /// <param name="creditsGranted">The incremental number of Send Credits
        /// granted by the sender.
        /// </param>
        /// <param name="flags">The flags indicating how the operation is to be processed.
        /// This field MUST be constructed by using any or none of the following values:
        /// SMB_DIRECT_RESPONSE_REQUESTED. The Flags field MUST be set to zero if no flag
        /// values are specified.
        /// </param>
        /// <param name="reserved">The sender SHOULD set this field to 0 and the receiver
        /// MUST ignore it on receipt.
        /// </param>
        /// <param name="remainingDataLength">The amount of data, in bytes, remaining in a
        /// sequence of fragmented messages. If this value is 0x00000000, this message is
        /// the final message in the sequence.
        /// </param>
        /// <param name="dataOffset">The offset, in bytes, from the beginning of the SMBDirect
        /// header to the first byte of the message’s data payload. If no data payload
        /// is associated with this message, this value MUST be 0. This offset MUST
        /// be 8-byte aligned from the beginning of the message.
        /// </param>
        /// <param name="dataLength">The length, in bytes, of the message’s data payload.
        /// If no data payload is associated with this message, this value MUST be 0.
        /// </param>
        /// <param name="padding">Additional bytes for alignment</param>
        /// <param name="buffer"></param>
        /// <returns>A buffer that contains the data payload as defined by
        /// the DataOffset and DataLength fields.</returns>
        public NtStatus SendDataTransferMessage(
            ushort creditsRequested,
            ushort creditsGranted,
            SmbdDataTransfer_Flags flags,
            ushort reserved,
            uint remainingDataLength,
            uint dataOffset,
            uint dataLength,
            byte[] padding,
            byte[] buffer)
        {
            SmbdDataTransferMessage smbdDataTransfer = new SmbdDataTransferMessage();

            smbdDataTransfer.CreditsRequested    = creditsRequested;
            smbdDataTransfer.CreditsGranted      = creditsGranted;
            smbdDataTransfer.Flags               = flags;
            smbdDataTransfer.Reserved            = reserved;
            smbdDataTransfer.RemainingDataLength = remainingDataLength;
            smbdDataTransfer.DataOffset          = dataOffset;
            smbdDataTransfer.DataLength          = dataLength;
            smbdDataTransfer.Padding             = padding;
            smbdDataTransfer.Buffer              = buffer;

            return(SendDataTransferMessage(smbdDataTransfer));
        }
コード例 #2
0
 public NtStatus SmbdSendDataTransferMessage(
     ushort creditsRequested,
     ushort creditsGranted,
     SmbdDataTransfer_Flags flags,
     ushort reserved,
     uint remainingDataLength,
     uint dataOffset,
     uint dataLength,
     byte[] padding,
     byte[] buffer
     )
 {
     return(this.smbdClient.SendDataTransferMessage(
                creditsRequested,
                creditsGranted,
                flags,
                reserved,
                remainingDataLength,
                dataOffset,
                dataLength,
                padding,
                buffer
                ));
 }
コード例 #3
0
 public NtStatus SmbdSendDataTransferMessage(
     ushort creditsRequested,
     ushort creditsGranted,
     SmbdDataTransfer_Flags flags,
     uint remainingDataLength,
     uint dataOffset,
     uint dataLength,
     byte[] buffer
     )
 {
     uint paddingLength = dataOffset;
     if (paddingLength < SmbdDataTransferMessage.MINIMUM_SIZE)
     {
         paddingLength = 0;
     }
     else
     {
         paddingLength -= (uint)SmbdDataTransferMessage.MINIMUM_SIZE;
     }
     byte[] padding = new byte[paddingLength];
     for (int i = 0; i < padding.Length; ++i)
     {
         padding[i] = 0;
     }
     return SmbdSendDataTransferMessage(
         creditsRequested,
         creditsGranted,
         flags,
         0,
         remainingDataLength,
         dataOffset,
         dataLength,
         padding,
         buffer
         );
 }
コード例 #4
0
        /// <summary>
        /// send SMBD data transfer message, for test case to control the transfer
        /// mannually
        /// </summary>
        /// <param name="creditsRequested">The total number of Send Credits requested 
        /// of the receiver, including any Send Credits already granted.
        /// </param>
        /// <param name="creditsGranted">The incremental number of Send Credits 
        /// granted by the sender.
        /// </param>
        /// <param name="flags">The flags indicating how the operation is to be processed.
        /// This field MUST be constructed by using any or none of the following values: 
        /// SMB_DIRECT_RESPONSE_REQUESTED. The Flags field MUST be set to zero if no flag 
        /// values are specified. 
        /// </param>
        /// <param name="reserved">The sender SHOULD set this field to 0 and the receiver 
        /// MUST ignore it on receipt.
        /// </param>
        /// <param name="remainingDataLength">The amount of data, in bytes, remaining in a 
        /// sequence of fragmented messages. If this value is 0x00000000, this message is 
        /// the final message in the sequence.
        /// </param>
        /// <param name="dataOffset">The offset, in bytes, from the beginning of the SMBDirect 
        /// header to the first byte of the message’s data payload. If no data payload 
        /// is associated with this message, this value MUST be 0. This offset MUST 
        /// be 8-byte aligned from the beginning of the message.
        /// </param>
        /// <param name="dataLength">The length, in bytes, of the message’s data payload. 
        /// If no data payload is associated with this message, this value MUST be 0.
        /// </param>
        /// <param name="padding">Additional bytes for alignment</param>
        /// <param name="buffer"></param>
        /// <returns>A buffer that contains the data payload as defined by 
        /// the DataOffset and DataLength fields.</returns>
        public NtStatus SendDataTransferMessage(
            ushort creditsRequested,
            ushort creditsGranted,
            SmbdDataTransfer_Flags flags,
            ushort reserved,
            uint remainingDataLength,
            uint dataOffset,
            uint dataLength,
            byte[] padding,
            byte[] buffer)
        {
            SmbdDataTransferMessage smbdDataTransfer = new SmbdDataTransferMessage();
            smbdDataTransfer.CreditsRequested = creditsRequested;
            smbdDataTransfer.CreditsGranted = creditsGranted;
            smbdDataTransfer.Flags = flags;
            smbdDataTransfer.Reserved = reserved;
            smbdDataTransfer.RemainingDataLength = remainingDataLength;
            smbdDataTransfer.DataOffset = dataOffset;
            smbdDataTransfer.DataLength = dataLength;
            smbdDataTransfer.Padding = padding;
            smbdDataTransfer.Buffer = buffer;

            return SendDataTransferMessage(smbdDataTransfer);
        }
コード例 #5
0
 public NtStatus SmbdSendDataTransferMessage(
     ushort creditsRequested,
     ushort creditsGranted,
     SmbdDataTransfer_Flags flags,
     ushort reserved,
     uint remainingDataLength,
     uint dataOffset,
     uint dataLength,
     byte[] padding,
     byte[] buffer
     )
 {
     return this.client.SmbdSendDataTransferMessage(
         creditsRequested,
         creditsGranted,
         flags,
         reserved,
         remainingDataLength,
         dataOffset,
         dataLength,
         padding,
         buffer
         );
 }