首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何快速地将原始内存转储到结构中?

如何快速地将原始内存转储到结构中?
EN

Stack Overflow用户
提问于 2016-09-09 08:57:01
回答 3查看 534关注 0票数 0

我在一个身份映射内存上下文中( x86_64平台上的UEFI),我想将一些连续的内存内容转储到一个结构中。假设我的结构有这样的形状:

代码语言:javascript
复制
typedef struct _mystr {
    char char_arr[7];
    uint32_t u_d;
    uint8_t u_b;
} __attribute__((packed)) mystr;

假设我在mem_ptr中有地址到请求内存的偏移量0,那么将其内容复制到mystr实例的最佳方法是什么?有没有一种方法可以做到这一点,而不用循环遍历内存(这似乎非常无聊)?

编辑:Nicolas建议使用memcpy,但不幸的是,在EFI开发环境中,使用C标准库没有什么意义。然而,来自CopyMem(IN VOID * dst, IN CONST VOID * src, IN UINTN len)efilib.h拥有执行相同任务的gnu-efi

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-09-09 09:16:26

使用memcpy复制内存内容可能就是您要寻找的内容。

代码语言:javascript
复制
mystr mystr_instance;
memcpy(&mystr_instance, mem_ptr, sizeof(mystr_instance));
票数 2
EN

Stack Overflow用户

发布于 2016-09-09 23:18:47

正如您正确识别的那样,memcpy实际上并不存在于UEFI环境中,但是如果用于编译到固件映像中的东西,CopyMem工作得很好。

对于驱动程序或应用程序,最好使用gBS->CopyMem()引导服务。

票数 2
EN

Stack Overflow用户

发布于 2016-09-09 09:06:10

假设内存格式正确,则可以将指向地址的指针强制转换,也可以将数据转换为结构。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39407644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档