首页
社区
课程
招聘
[求助]关于windows驱动中系统结构体的计算有点疑问,还请各位指教
发表于: 2018-6-15 11:39 3773

[求助]关于windows驱动中系统结构体的计算有点疑问,还请各位指教

2018-6-15 11:39
3773
比如说一个结构体FILE_ID_BOTH_DIR_INFORMATION,这种内部包含Filenamelen与一个包含一个unicode字符的数组,这种结构体的长度大小计算到底怎么计算才是准确的,在调试过程中,发现如果用sizeof(结构体)+filenamelen-sizeof(wchar)去计算的话,系统中对于该结构体内存的存储是小于这个值的,有时候甚至会小0x10字节,是什么导致这种计算失误,是我没考虑那种情形吗

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 11716
活跃值: (133)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
sizeof(FILE_ID_BOTH_DIR_INFORMATION)  +  FileNameLen  *  sizeof(WCHAR)    -    sizeof(WCHAR) 

我觉得是这样,  FileNameLen  是宽字符的长度
2018-6-15 12:02
0
雪    币: 16
活跃值: (527)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不是的,filenamelen就是字节数,不是字符数
2018-6-15 13:42
0
雪    币: 5734
活跃值: (1737)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4

typedef struct _FILE_ID_BOTH_DIR_INFORMATION {
    ULONG NextEntryOffset;
    ULONG FileIndex;
    LARGE_INTEGER CreationTime;
    LARGE_INTEGER LastAccessTime;
    LARGE_INTEGER LastWriteTime;
    LARGE_INTEGER ChangeTime;
    LARGE_INTEGER EndOfFile;
    LARGE_INTEGER AllocationSize;
    ULONG FileAttributes;
    ULONG FileNameLength;
    ULONG EaSize;
    CCHAR ShortNameLength;
    WCHAR ShortName[12];
    LARGE_INTEGER FileId;
    WCHAR FileName[1];
} FILE_ID_BOTH_DIR_INFORMATION, *PFILE_ID_BOTH_DIR_INFORMATION;


FIELD_OFFSET(FILE_ID_BOTH_DIR_INFORMATION, FileName) + FileNameLength * sizeof(WCHAR)
2018-7-26 02:41
0
游客
登录 | 注册 方可回帖
返回
//