阅读:1337回复:11
在IFS_钩子中调用RO_XXX会不会有问题?
我已经用一个全局变量区分自己的R0_XXX操作和应用程序的文件操作,
请问各位高手,这样做有没有问题啊? IFS manager有没有重入问题? |
|
|
沙发#
发布于:2004-06-09 17:36
显然有问题,会重入
|
|
板凳#
发布于:2004-06-10 14:36
我给做R0_xxx的函数做了标记,对于没做标记的通通放过,怎么还是出现了page fault? :)
|
|
|
地板#
发布于:2004-06-10 14:38
说错了,是对做R0_xxx的线程做了标记,
凡是标记过的线程直接调用下一个钩子,这样就避免了第归重入了, 但是还是出现错误,不过比以前用全局变量来标志好多了! :) 哪位高手能够指点一下吗 |
|
|
地下室#
发布于:2004-06-10 14:58
应该行的通。
还有什么错误? |
|
5楼#
发布于:2004-06-10 15:02
应该行的通。 我装了softice,它捕获了这个错误,我不知道怎么分析? 都是汇编码。 打印一句"page fault" |
|
|
6楼#
发布于:2004-06-10 15:37
哈哈,恭喜你,内存访问出错。 多半是你的代码哪个部分弄错了。不过出错的部分不在你的程序里面。(如果你加载了符号表的话)
用stack命令看一下调用堆栈。 在你的程序程序里跟一下,看哪一步出错了。看看调用的参数是否正确,指针是否有问题,是不是把 _asm call写成_asm jmp了,是不是把mov al [edx]写成mov eax [edx]了。如此之类的。。。。 上述纯属推测哈。 :D :D |
|
7楼#
发布于:2004-06-10 16:31
哈哈,恭喜你,内存访问出错。 多半是你的代码哪个部分弄错了。不过出错的部分不在你的程序里面。(如果你加载了符号表的话) 我在钩子里调用ifs manager提供的函数,不会出错吧? 还有一点,我在盏里定义了比较大的局部变量,比如char path[MAX_PATH]之类,会不会导致堆栈不够啊? 还有就是stack出来: IFSMGR_XXX!0x26 后面那个"!0x26"代表什么意思? :) |
|
|
8楼#
发布于:2004-06-10 18:15
"IFSMGR_XXX" 代表段名,0x26代表出错指令在段中的偏移。看softice帮助文档会有不少收获。
如果可能的话,你最好在程序里跟踪一下,哪一步过后蓝了。 我估计可能是你调用传入的参数有问题,或者是破坏了系统的什么数据结构。唉~~ 不好说。 |
|
9楼#
发布于:2004-06-10 20:20
"IFSMGR_XXX" 代表段名,0x26代表出错指令在段中的偏移。看softice帮助文档会有不少收获。 应该没有啊,用了int21用来产生目录和删除目录,但是这个不应该是什么大问题啊? :) |
|
|
10楼#
发布于:2004-06-11 09:31
[quote]"IFSMGR_XXX" 代表段名,0x26代表出错指令在段中的偏移。看softice帮助文档会有不少收获。 应该没有啊,用了int21用来产生目录和删除目录,但是这个不应该是什么大问题啊? :) [/quote] Int 21/AX=7160h/CL=02h - Windows95 - LONG FILENAME - GET CANONICAL LONG FILENAME OR PATH 就是调用这个功能的时候出错 |
|
|
11楼#
发布于:2004-06-11 09:38
[quote][quote]"IFSMGR_XXX" 代表段名,0x26代表出错指令在段中的偏移。看softice帮助文档会有不少收获。 应该没有啊,用了int21用来产生目录和删除目录,但是这个不应该是什么大问题啊? :) [/quote] Int 21/AX=7160h/CL=02h - Windows95 - LONG FILENAME - GET CANONICAL LONG FILENAME OR PATH 就是调用这个功能的时候出错 [/quote] Win95中断有没有重入问题啊? 重入不会导致错误吧? |
|
|