看到一篇文章,转贴一下。<br><br>--------------------------------------------------------------------------------<br>95/98下历遍打开的文件句柄 <br><br>95DDK已经公开了一个FSD函数叫FS_EnumerateHandle来提供历遍已打开的文件句柄.<br>但是普通情况下大家并没兴趣为了历遍文件句柄就写个VXD.所以在RING3还是需要一<br>些未公开的东西来配合工作才够SMART.
这个技巧对于写杀毒软件应该有用得很哩.
<br>我们在DDK文档里可以看到 <br>INT21H,FUNC 440DH, SUB FUNC 486DH 是该服务的客户端.但是DDK本身并没有486DH的<br>说明.现在就是揭密的时候了. <br>ECX = 0x486D, <br>EAX = 0x440D, <br>EBX,想历遍句柄的驱动器(0-Default drive,A-1,B-2,C-3,...), <br>EDX,接收已经打开文件的路径的地址, <br>EDI,0=历遍所有打开文件,1=历遍不可删除文件, <br>ESI,从0开始,每次调用INT21后加1,直到CY被置位. <br>返回值: <br>EAX=文件打开模式 <br>ECX=文件类型. <br> 1=普通文件 <br> 2=内存映射文件 <br> 3=不可移动文件 <br> 4=交换文件 <br>在DOS窗下,直接调用INT21H就可.在GUI下,需要调用VWIN32的VWIN32_DIOC_DOS_IOCTL服<br>务.具体的VWIN32服务在PLATFORM SDK里有详细说明,这里并不准备详细讲解,相信看这里<br>文章的朋友应该有一定的基础,不需要多余的指点的.