2.2.2 REG_UNICODE_STRING

This REG_UNICODE_STRING structure represents a counted string of Unicode (UTF-16) characters.

 typedef struct _REG_UNICODE_STRING {
   unsigned short Length;
   unsigned short MaximumLength;
   [size_is(MaximumLength/2), length_is(Length/2)] 
     unsigned short* Buffer;
 } REG_UNICODE_STRING,
  *PREG_UNICODE_STRING;

Length: The number of bytes actually used by the string. Because all UTF-16 characters occupy 2 bytes, this MUST be an even number in the range [0...65534]. The behavior for odd values is unspecified.

MaximumLength: The number of bytes allocated for the string. This MUST be an even number in the range [Length...65534].

Buffer: The Unicode UTF-16 characters comprising the string described by the structure. Note that counted strings might be terminated by a 0x0000 character, by convention; if such a terminator is present, it SHOULD NOT count toward the Length (but MUST, of course, be included in the MaximumLength).