2008-11-09 29 views
14

Trong rpc.h, cấu trúc GUID được khai báo như sau:Tại sao cấu trúc GUID lại tuyên bố nó như thế nào?

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

Tôi hiểu Data1, Data2, và Data3. Chúng xác định nhóm chữ số thập phân thứ nhất, thứ hai và thứ ba khi viết GUID (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX).

Điều tôi chưa bao giờ hiểu là lý do tại sao 2 nhóm cuối cùng được khai báo cùng nhau trong cùng một mảng byte. Nó sẽ không có ý nghĩa hơn (và dễ dàng hơn để chống lại mã)?

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

Bất kỳ ai biết tại sao nó được khai báo theo cách này?

+1

tôi giả định nó được khai báo là '4,2,2,8' thay vì' 4,2,2,2,6' để 8 byte cuối cùng có thể được truy cập dưới dạng biến 64 bit nếu muốn. –

+0

Có vẻ quan trọng để phân biệt hai cấu trúc đặc biệt trong trường hợp tuần tự hóa thành luồng byte cho rằng Dữ liệu [8] từ định nghĩa đầu tiên có thể khác trên luồng so với kết hợp Data4 Data5 [6] từ định nghĩa thứ hai. endianness. – bvj

Trả lời

12

Đó là bởi vì một GUID là một trường hợp đặc biệt của một UUID. Để biết thông tin về tất cả các trường có nghĩa là gì, bạn có thể xem RFC 4122.

Các vấn đề liên quan