2008-11-09 26 views
14

En rpc.h, la estructura GUID se declara como sigue:¿Por qué la estructura GUID se declara tal como es?

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

entiendo Datos1, Data 2 y Dato3. Definen el primer, segundo y tercer conjunto de dígitos hexadecimales al escribir un GUID (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX).

Lo que nunca entendí fue por qué los dos últimos grupos se declararon juntos en la misma matriz de bytes. ¿No hubiera tenido más sentido (y hubiera sido más fácil codificar en contra)?

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

¿Alguien sabe por qué se declara de esta manera?

+1

supongo que está declarado como '4,2,2,8' en lugar de' 4,2,2,2,6' para que se pueda acceder a los últimos 8 bytes como una variable de 64 bits, si se desea. –

+0

Parece importante distinguir las dos estructuras especialmente en el caso de la serialización en un flujo de bytes dado que los datos [8] de la primera definición pueden parecer diferentes en la secuencia que la combinación Data4 Data5 [6] de la segunda definición por razones de endianidad. – bvj

Respuesta

12

es porque un GUID es un caso especial de un UUID. Para obtener información sobre lo que significan todos los campos, puede mirar RFC 4122.

Cuestiones relacionadas