最近在做一个NSE,把RAR文件虚拟成一个folder,所有前期准备工作做完后,突然发现SHITEMID的结构要变一变,让它能更好地对齐,从:
bool bFolder;
wchar_t parent[var_len];
UINT size;
wchar_t name[var_len];
改为:
BOOL bFolder;
UINT size;
wchar_t parent[var_len];
wchar_t name[var_len];
噩梦从此开始,改完之后,BOOL bFolder的sizeof还是1 (==sizeof(bool)),后续的所有域的值就都不对了。
折腾了几个小时回家睡觉,早上起来重启机器,突然发现CompareIDs用一个昨天临时创建、今天根本不存在的目录和其它目录做比较。OMG!难道是这厮把PIDL给cache住了?!
马上把rar文件改个名重试,一切正常。。。。。。。。。。。。。。