Descriptors are supplied in two variants:
the 16 bit variant for handling Unicode strings and double byte valued data
the 8 bit variant for handling non-Unicode strings and single byte valued data (binary data).
Descriptors are also supplied as build independent types. These are used whenever descriptors are used to represent text strings. By using build independent types, the appropriate variant, either 16 bit or 8 bit, is selected at build time depending on whether the _UNICODE
macro has been defined or not.
Binary data always requires the 8 bit variant, regardless of the build, and this should be explicitly used in program code.
Explicit use of the 16 bit variant is rare.
With a few exceptions, the behaviour of both 8 bit and 16 bit variants is the same.