这个C结构的定义是"{DWORD id, DWORD hwnd, DWORD pid, ULONG_PTR add, ULONG_PTR post, ULONG_PTR func,ULONG_PTR get,ULONG_PTR set, ULONG_PTR find, ULONG_PTR lib}",在64位上大小是72.
我在rust定义对应的结构,sizeof()大小也是72
struct dll_info {
id:u32,hwnd:u32,pid:u32,add:usize,post:usize,func:usize,get:usize,set:usize,find:usize,lib:usize
}
然后,获得C结构的地址后,将其映射到rust结构
let ms = &*(ptr as *const dll_info);
但不知道为什么,获得的数值总是错误的。
正常的数值是:
{
"id" : 4,
"hwnd" : 530132,
"pid" : 6140,
"add" : 2607591002992,
"post" : 2607591000992,
"func" : 2607591005456,
"get" : 2607590999744,
"set" : 2607591000480,
"find" : 2607590999648,
"lib" : 2607536358160
}
而得到的是:
{ id: 1759774304, hwnd: 557, pid: 1720217424, add: 1995416035917827, post: 2060, func: 2394056561520, get: 2394056559520, set: 2394056563984, find: 2394056558272, lib: 2394056559008 }
请问是哪里出错了? 我尝试了所有可能,比如把所有数值格式都试过一遍,都没有得到过正确数值。
1
共 2 条评论, 1 页
评论区
写评论谢谢!
--
👇
Grobycn: ``` #[repr(C)]