当前目录结构(CDS)的格式说明
2008-08-28 08:08:05| 分类:
dos资料
| 标签:
|举报
|字号大中小 订阅
写这个东西和写那个DPB的文章一样,都属于不得已,如果不交代清楚,《从命令行加载设备驱动程序》的文章就写不出来,这里写了,那里就不用交代了。
其实这个东西也几乎用不到,要得到它,需要借助一个DOS未公开的调用,功能号52h,这个调用很有用,我们在《如何写DOS下的设备驱动程序(二)》这篇文章中用过一次,用这个调用获得了NUL设备的设备头,从而找到了DOS下的所有设备驱动程序,这次我们用它要得到CDS(Current Directory Structure)。
入口:ah=52h
int 21h
出口:ES:BX指向DOS重要数据清单表
其中在偏移16h处存放着CDS的指针,前两个字节是偏移,后两个字节是段地址
CDS的结构如下:
偏移 大小 描述
------------------------------------------------------------
00h 67bytes 当前路径名,以“x:\”或“\\机器名\”开头
43h word 标志:bit 15--网络驱动器或IFS
bit 14--物理驱动器(若15/14=00则驱动器无效,11则为可安装的文件系统)
bit 13--JOIN驱动器
bit 12--SUBST驱动器
45h dword 指向该驱动器的DPB
---本地驱动器
49h word 当前目录的起始簇号。0000h=根目录
4bh word 未知
4dh word 未知
---网络驱动器
49h dword 指向重定向器IFS记录,否则为0ffffffffh
4dh word int 21h功能5f03h中的参数
---本地或网络驱动器
4fh word 逻辑驱动器根目录在路径名中的偏移量(如果没有SUBST或JOIN,该值为2)
---DOS 4.x
51h byte 未知
52h dword 指向IFS驱动程序以寻找本驱动器指针,若为本机则为00000000h
56h word 未知
这个鬼东西没有什么实际用处,不过当我们变化目录时,最前面的67个字节会记录当前目录,同时,偏移49h的字段会填上这个目录的起始簇号,大家可以用debug观察一下,既然没什么用,我们就不多说了,我们在从命令行加载驱动程序时,如果不维护好它,DOS会工作会不正常,我们程序里会修改其中偏移在43h、45h的两个字段。
评论这张
转发至微博
转发至微博
评论