天!GetFullPathName() 竟然对 DF 位有要求
zara 2010-11-22 02:30:32 写了个小程序,用到了 GetFullPathName() 这个系统函数。开始时用得都好好的,后来有改动,运行到这个函数就出错了,Ollydbg 时提示是 ntdll 内 int3 中断;将 EIP 重设下再运行这个函数,似又正常了;如果将错误交回,在该函数是返回 0, GetLastError() 提示 ERROR_NOT_ENOUGH_MEMORY。
对着这个问题,真是百思不得其解啊。左看,右看,上看,下看,终还是很茫然。网上搜索了下,也无结果。
再仔细瞪着这个语句看了半天,一闪念间,想想修改的有上面反向检索个字符串 std 设置了递减方向标记位。于是,在 GetFullPathName() 语句之前加上了个 cld 指令,再运行,竟然就正常了!
很少写东西的,用到什么函数,也就是查下 Win32API.HLP。一直都没看到有对 DF 标记位有要求的啊!这个,算怎么回事儿呢?
我的系统是 xp/sp3,GetFullPathName() 函数所在的 kernel32.dll 版本为 5.1.2600.5512