2008-11-09 59 views
14

在rpc.h的GUID結構聲明如下:爲什麼GUID結構是這樣聲明的?

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

我明白數據1,數據2和數據3。當寫出GUID(XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX)時,它們定義第一,第二和第三組十六進制數字。

我從來不明白的是爲什麼最後2個組在同一個字節數組中被一起聲明。這不是更有意義嗎(並且更容易編碼)?

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

任何人都知道爲什麼這樣聲明?

+1

我會假設它被聲明爲'4,2,2,8'而不是'4,2,2,2,6',這樣最終的8個字節可以作爲64位變量被訪問,如果需要的話。 – 2012-05-03 19:02:01

回答

12

這是因爲一個GUID是UUID的一個特例。有關所有字段的含義的信息,您可以查看RFC 4122