2.2 Common Data Types

In addition to the remote procedure call (RPC) base types and definitions that are specified in [C706] and [MS-DTYP], additional data types are defined in this section.

The Print System Asynchronous Remote Protocol MUST indicate to the RPC runtime that it is to support both the NDR and NDR64 transfer syntaxes and provide a negotiation mechanism for determining which transfer syntax is used, as specified in [MS-RPCE] section 3.

This protocol MUST enable the ms_union extension, as specified in [MS-RPCE] section 2.2.4.

The Print System Asynchronous Remote Protocol employs a combination of the following data representations:

  • Interface Definition Language (IDL) data structures that are used with RPC methods, including structures used as containers for custom C data, as specified in [MS-RPRN] section 2.2.1.

  • Custom C data structures and their wire formats as used in custom-marshaled data streams, as specified in [MS-RPRN] section 2.2.2.

The following statements apply to the entire specification, unless noted otherwise:

  • All strings that are defined in this protocol consist of characters encoded in Unicode UTF-16LE, and MUST be null terminated. Each UTF-16 code point in a string, including null terminating characters, occupies 16 bits. The details of these strings are as specified in [RFC2781] section 2.1.

  • A list of strings is referred to as a multisz structure, in which the characters making up the string N+1 directly follow the terminating null character of string N. The last string in a multisz structure MUST be terminated by two null-terminated characters.

  • All method parameters and structure members that specify the number of characters in a string or multisz structure include the number of terminating null characters.

  • The term "NULL" means "a NULL pointer", and "zero" means the number 0.

  • All method parameters and structure members that specify the size of a buffer that is pointed to by another parameter or member MUST be zero if the pointer parameter or member is NULL.

  • The term "empty string" means a "string" containing only the terminating null character.