2.2.9.3 Generic Send Data Message Packet

This packet contains data sent by the RDG client to the RDG server which is then sent to the target server. The data is sent by the RDG client for the TsProxySendToServer method call.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

PCHANNEL_CONTEXT_HANDLE_NOSERIALIZE_NR (20 bytes)

...

...

totalDataBytes

numBuffers

buffer1Length

buffer2Length (optional)

buffer3Length (optional)

buffer1 (variable)

...

buffer2 (variable)

...

buffer3 (variable)

...

PCHANNEL_CONTEXT_HANDLE_NOSERIALIZE_NR (20 bytes): This MUST be the network representation of the PCHANNEL_CONTEXT_HANDLE_NOSERIALIZE data type returned by the RDG server by using the TsProxyCreateChannel method call. Network representation of a context handle is described in [C706] Appendix N.

totalDataBytes (4 bytes): An unsigned long that specifies the total number of bytes to be sent to the target server. This MUST be in network order representation. It MUST be the sum of buffer1Length, buffer2Length, and buffer3Length and the size of the data, in bytes, for buffer1Length, buffer2Length, and buffer3Length. It MUST NOT be zero.

numBuffers (4 bytes): An unsigned long that specifies the total number of data buffers that follow this field. This MUST be in a network-order representation.

buffer1Length (4 bytes): An unsigned long specifying the length of the first buffer. This MUST be in a network-order representation and be nonzero.

buffer2Length (4 bytes): An unsigned long specifying the length of the second buffer. This MUST be in a network-order representation. This is optional and can be 0.

buffer3Length (4 bytes): An unsigned long specifying the length of the third buffer. This MUST be in a network-order representation. This is optional and can be 0.

buffer1 (variable): The buffer1 is an array of bytes. Its length is specified by buffer1Length. This MUST be non-NULL and contain the same number of bytes specified by buffer1Length. The contents of buffer1 are opaque to the Remote Desktop Gateway Server Protocol.

buffer2 (variable): The buffer2 is an array of bytes. Its length is specified by buffer2Length. This MUST be non-NULL if buffer2Length is nonzero and contain the same number of bytes specified by buffer2Length. If buffer2Length is 0, this SHOULD be NULL. If buffer2Length is zero and buffer2 is non-NULL, then buffer2 MUST be ignored. The contents of buffer2 are opaque to the Remote Desktop Gateway Server Protocol.

buffer3 (variable): The buffer3 is an array of bytes. Its length is specified by buffer3Length. This MUST be non-NULL if buffer3Length is nonzero and contain the same number of bytes specified by buffer3Length. If buffer3Length is 0, this SHOULD be NULL. If buffer3Length is zero and buffer3 is non-NULL, then buffer3 MUST be ignored. The contents of buffer3 are opaque to the Remote Desktop Gateway Server Protocol.