阅读:1615回复:3
Win98(VXD)改变文件请求方法(源代码)
终于试验出来可以异盘转移了!
条件:两个硬盘类型相同,如都是固定磁盘或者都是网络驱动器 例子是从C盘转移到D盘。 目前存在问题: 1)VXD中无法建立目录 2)同盘同目录怎么转移? 首先定义全局变量 HANDLE g_fh=NULL; 关键代码如下: if( origir->ir_options & ACTION_CREATENEW ){ if (Drive==4){ if (g_fh==NULL){//保存某个盘的ir_rh g_fh=pir->ir_rh; } } if (Drive==3){ if (g_fh!=NULL){ Drive=4; pir->ir_rh=g_fh; } } |
|
沙发#
发布于:2003-10-18 15:32
参考win95 文件系统那本书来做其实很简单
主要是修改这个函数里面的参数了。 FilemonHookProc( pIFSFunc pfn, int fn, int Drive, int ResType, int CodePage, pioreq pir ) pfn表示的是处理这个fn请求函数的地址,如果两个磁盘上的文件系统不相同,这个东西也得变。 pir里面的参数ir_rh表示所要操作的文件在那个分区,所以如果不是在同一个分区,这个参数肯定要替换掉。 如果还要修改路径则还要修改pir参数里面和路径相关的一些信息 创建目录可以用int21 7139 function 或者用 PrevIFSHookProc( pfnDir, IFSFN_DIR, Drive, ResType, CodePage, pir ) 这种方法来创建,好处是不会有重入 |
|
板凳#
发布于:2003-10-18 20:42
谢谢!偶刚刚开始接触DDK,所以比较弱。
能具体说说怎么建立目录么? 第一个函数地址应该用什么啊,还有我得目录是不是应该放到pir里面去啊? |
|
地板#
发布于:2003-10-20 16:35
参考DDK
FS_Dir FS_Dir( PIOREQ pir ) Directory operations (change, make, and remove) are performed through FS_Dir. This routine handles the Win32 functions: CreateDirectory(), RemoveDirectory(), and SetCurrentDirectory(); and INT 21h functions: 39h, 3Ah, and 3Bh 在里面对FS_DIR的pir各个参数都有详细的介绍. |
|