阅读:1182回复:3
VXD中无法读取文件!
平台:Windows98
目标:检测到某个文件读取时将此拷贝到另外一个目录 手段:采用R0_ReadFile,经过设置R0_SWAPPER_CALL标志防止IFS重入。但是在成功打开文件以后,使用R0_ReadFile函数不能读取文件,返回代码为5,就是禁止访问! 经过试验,即使是新建一个文件,然后写入部分信息后(写入正常),也无法读取,返回代码也是5,禁止访问。 请问有谁知道如何读取文件内容。 附:相关源代码: BYTE pAction; WORD pError; HANDLE hSource=NULL; HANDLE hTarget=NULL; hSource=R0_OpenCreateFile( TRUE,SourceName, OPEN_ACCESS_READONLY||OPEN_SHARE_DENYNONE, ATTR_NORMAL, ACTION_IFEXISTS_OPEN||ACTION_IFNOTEXISTS_FAIL, FLAG_R0_SWAPPER_CALL, &pError, &pAction); if (pError==0) {//打开源文件成功 hTarget=R0_OpenCreateFile( FALSE,TargetName, OPEN_ACCESS_WRITEONLY, ATTR_NORMAL, ACTION_IFNOTEXISTS_CREATE|ACTION_IFEXISTS_TRUNCATE, R0_NO_CACHE, &pError, &pAction); if (pError==0) {//打开目标文件成功,开始拷贝 //以1024为单位开始拷贝 BYTE pBuffer[Read_BLOCK]; DWORD Copyed=0; DWORD Writed=0; DWORD Readed=Read_BLOCK; DWORD ToRead=Read_BLOCK; while(Readed==ToRead) { Readed=R0_ReadFile( FALSE,hSource, (void*)pBuffer,ToRead, Copyed,&pError); _wd(\"Read Error:\",pError); _wd(\"Readed :\",Readed); if (Readed>0) {//写入 Writed=R0_WriteFile( FALSE,hTarget, (void*)pBuffer,Readed, Copyed,&pError); _wd(\"Write Error:\",pError); _wd(\"Writed :\",Writed); } Copyed+=Readed; } Success=true; } } |
|
沙发#
发布于:2003-10-31 19:25
用户被禁言,该主题自动屏蔽! |
|
板凳#
发布于:2003-10-26 14:32
又自己搞定了啊?
|
|
|
地板#
发布于:2003-10-25 21:47
搞定了,呵呵
原来源文件也必须用R0_NO_CACHE,而且读取只能1024字节读取 |
|