5 Common Data Types, Variables, and Procedures
This section contains types that are used by two or more drsuapi or dsaop methods, or types that are used in this specification but normatively specified in other specifications. It also contains types and procedures used only within the specification. This section is arranged in order by type or procedure name.
The specification of message syntax in this section is normative for syntax only. The behavior descriptions for types representing messages are informative. Consult the behavior description for each method that uses a type for the normative specification of behavior related to that type.
"Hand-marshaled" types are types passed as BLOBs through RPC and types stored as BLOBs in the directory. Any type that is "hand-marshaled" is specified pictorially in this section to emphasize the layout of any multibyte quantities it contains. The layout is always little-endian. If a type is both "hand-marshaled" and marshaled by RPC, then an IDL specification of the type is given in addition to the pictorial specification.
This specification uses the definitions of RPC base types. Additional data types used in this protocol are specified in this section.
Note that values of some types are marshaled by RPC as structures in some cases and as little-endian byte arrays in other cases. An example is DSName, which may be marshaled as a DSName *pObject field of an ENTINF, or as a UCHAR *pVal field of an ATTRVAL. Where such cases exist, the structure is defined both in MIDL syntax and in a byte diagram, and the byte array cases are clearly identified so that big-endian architectures can perform the necessary byte swapping. (For example, see ATTRVAL conversions.)