私は次のような構造を持っています:
//GUID structure
typedef struct {
var8 octet[16];
} GPTGUID_t;
そして長い#defineas:
#define PTYPE_MRP_UPPER 0x4db80b5ce3c9e316ULL
#define PTYPE_MRP_LOWER 0xae1502f02df97d81ULL
オクテット0から7でUPPER部分をコピーし、8から15でLOWERをコピーしたいと思います。残念ながら、memcpyを含むすべての試行が失敗し、セグメンテーション違反が発生しました。
私は次のように何かを試しました:
strcpy(guid.octet[0], PTYPE_MRP_UPPER);
strcpy(guid.octet[8], PTYPE_MRP_LOWER);
そしてまた、
memcpy(guid.octet[0], PTYPE_MRP_UPPER, sizeof(PTYPE_MRP_UPPER));
memcpy(guid.octet[8], PTYPE_MRP_LOWER, sizeof(PTYPE_MRP_LOWER));
両方とも失敗しました。
補足として:
typedef unsigned char var8;
typedef unsigned short var16;
typedef unsigned int var32;
ただし、個々のオクテットを次のように抽出できます。
memcpy( guid.octet, pHdr->partTypeGUID, sizeof(GPTGUID_t));//copy the partitionTypeGUID
p1 = getvar64(guid.octet[0]);
p2 = getvar64(guid.octet[8]);
どこ、#define getvar64(x) (*(var64*)(&x))