登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

DOS编程技术

讨论在纯DOS下的编程技术

 
 
 

日志

 
 
关于我

1984年大学毕业,1985年底有机会开始接触PC机,1986年开始在PC机上做开发工作,曾接触过MS-DOS、CP/M、UNIX、VMS、LINUX、iRMX等众多的操作系统并在上面从事技术开发,擅长做底层与硬件相关的软件开发,目前主要在DOS和LINUX平台下工作,主要从事软件,在硬件开发上也有一定造诣,亦有在8051系列、6502系列(凌阳)、z80系列、ARM、X86等各类平台下开发软硬件的经历。更详细情况可以参考http://resume.whowin.net

当前目录结构(CDS)的格式说明  

2008-08-28 08:08:05|  分类: dos资料 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
     写这个东西和写那个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的两个字段。
   




  评论这张
 
阅读(1802)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018