Почему структура GUID объявлена ​​так, как она есть?

В rpc.h структура GUID объявляется следующим образом:

typedef struct _GUID 
{  
   DWORD Data1;  
   WORD Data2;  
   WORD Data3;  
   BYTE Data[8];
} GUID;

Я понимаю Data1, Data2 и Data3. Они определяют первый, второй и третий набор шестнадцатеричных цифр при записи GUID (XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX).

Я никогда не понимал, почему последние две группы были объединены в один и тот же массив байтов. Разве это не имело бы смысла (и было легче процитировать)?

typedef struct _GUID 
{  
   DWORD Data1;  
   WORD Data2;  
   WORD Data3;  
   WORD Data4;  
   BYTE Data5[6]; 
} GUID;

Кто-нибудь знает, почему это объявлено таким образом?

Ответы

Ответ 1

Это потому, что GUID является частным случаем UUID. Для получения информации о том, что означают все поля, вы можете посмотреть RFC 4122.