2.2.5.3.4.5 Pipes

In NDR64, a pipe element can be of any NDR primitive or constructed type except the following:

  • Pipes

  • Pointers

  • Either conformant or varying arrays or both conformant and varying arrays

  • Structures that contain either conformant or varying arrays or that contain both conformant and varying arrays

NDR64 represents a pipe as a sequence of chunks. Each chunk is represented as an ordered sequence of representations of the elements in the chunk. The sequence MUST be preceded by a 64-bit unsigned integer that specifies the number of elements in the chunk and MUST be followed by a 64-bit unsigned integer that specifies the arithmetic negate of the value of the number of elements in the chunk, treated as a signed 64-bit integer. The final chunk MUST contain no elements and MUST consist only of two unsigned 64-bit integers with the value 0 (zero). A chunk MUST contain, at most 231-1 elements of the pipe (as opposed to 232-1, as supported in NDR as specified in [C706]).

A pipe as a sequence of chunks

Figure 14: A pipe as a sequence of chunks