gpt4 book ai didi

c - 使用C读取内存中的特定地址

转载 作者:太空宇宙 更新时间:2023-11-04 07:28:14 24 4
gpt4 key购买 nike

谁能解释一下如何从内存中的特定地址读取 C 中的 DWORD、WORD、BYTE?
例如,使用 MapViewOfFile() 函数返回的基地址,如何使用 C 读取连续的 BYTE、WORD 或 DWORD?
谢谢。

最佳答案

MapViewOfFile() 返回 LPVOID,它是 void* 的类型定义。你需要类型转换。

最简单的做法是一次读取一个字节。你没有在这里指定是否有任何类型的性能要求(你也没有指定你的平台、arch 等),所以我假设“一次一个字节”是可以的。

注意:WORD 被定义为 short,在 Win32 中应该是 16 位。 DWORD 是一个 int,在 Win32 中应该是 32 位。

LPVOID pvAddr= MapViewOfFile(...);

BYTE* pBytes= (BYTE*)pvAddr;

BYTE firstByte= pBytes[0]; /* copy first byte */

WORD w;
memcpy(&w, pBytes+1, 2); /* copy the next two bytes */

DWORD dw;
memcpy(&dw, pBytes+3, 4); /* copy the next 4 bytes */

希望对您有所帮助。

关于c - 使用C读取内存中的特定地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16310267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com