DOS功能调用一览表 3.docx
《DOS功能调用一览表 3.docx》由会员分享,可在线阅读,更多相关《DOS功能调用一览表 3.docx(17页珍藏版)》请在冰豆网上搜索。
![DOS功能调用一览表 3.docx](https://file1.bdocx.com/fileroot1/2023-1/21/cb1ff133-b5a1-42ee-9dae-54b15ca25e67/cb1ff133-b5a1-42ee-9dae-54b15ca25e671.gif)
DOS功能调用一览表3
40H
写文件
入口
AH=40HBX=文件句柄
CX=写的字节数
DX=文件数据缓冲区地址
出口
若CF=1,DK=出错代码
若CF=O,DK=实际写的字节数
41H
删除文件
入口
AH=41H
DS:
DX=ASCIl-Z串的文件名地址
出口
若CF=l则AX=出错代码
42H
移动文件指针
入口
AH=42HAL=移动方式
BX=文件句柄
CX:
DX=指针移动的字节数
出口
若CF=1,AX=出错代码
若CF=l,AX=实际移动字节数
注释
若AL=00H移动方式使得指针从文件开始位置移动,AL=0lH从当前位置移动,AL=02H从文件尾移动。
字节数的低有效16位放在DX中,高有效16位放在CX或AX中。
43H
读/写文件属性
入口
AH=4
AL=OOH读属性AL=OlH写属性
CX=属性字(可参看3CH功能的介绍)
DS:
DX=ASCII-Z串文件名地址
出口
若CF=1AX=出错代码
若CF=0AX=属性字
44H
I/0设备控制(IOTCL)
入口
AH=44H
AL=子功能码(参看注释)
出口
若CF=l,AX=出错代码(可参看59H功能)
注释
AL中的子功能码如下
00H=读设备状态(状态在图14-2中说明)
入口:
BX=文件句柄
出口:
DX=状态
O1H=写设备状态
入口:
BX=文件句柄,DH=O,DL=设备信息
出口:
若CF=l,AX=出错代码
O2H=从字符设备读控制信息
入口:
BX=文件句柄,CX=字节数,DS:
DX=I/O缓冲区地址
出口:
实际读的字节数
03H=向字符设备写控制数据
入口:
BX=文件句柄CX=字节数,DS:
DX=I/0缓冲区地址
出口:
实际写的字节数
04H=从块设备读取控制信息
入口:
BL=驱动器号(0=缺省,l=A驱,2=B驱等等),CX=字节数,
DS:
DX=I/0缓冲区地址
出口:
AX=实际读的字节数
O5H=向块设备写控制信息
入口:
BL=驱动器号,CX=字节数,DS:
DX=I/O缓冲区地址
出口:
AX=实际写的字节数
06H=检查输入状态
入口:
BX=文件句柄
出口:
AL=OOH表示准备好,AL=FFH表示末准备好
07H=检查输出状态
入口:
BX=文件句柄
出口:
AL=OOH表示准备好,AL=FFH表示未准备好
08H=是可移动的介质吗?
入口:
BL=驱动器号
出口:
AL=OOH可移动,AL=O1H固定
O9H=是网络块设备吗?
入口:
BL=驱动器号
出口:
DX的第12位为1表示网络块设备
OAH=本地还是网络字符设备
入口:
BX=文件句柄
出口:
DX寄存器的第15位为1表示网络字符设备
OBH=改变入口的计数(SHARE·EXE必须已装入)
入口:
CX=延迟循环计数,DX=重试计数
出口:
若CF=l,AX=出错代码
OCH=通用字符设备I/0控制
入口:
BX=文件句柄,CH=种类,CL=功能
种类:
OOH=未知,OlH=COM口,O2H=CON,O5H=LPT口功能:
CL=45H:
设置重复计数
CL=4AH:
选择代码页
CL=4CH:
起动代码页准备
CL=4DH:
结束代码页准备
CL=5FH:
设置显示信息
CL=65H:
得到重复次数
CL=6AH查询被选代码页
CL=6BH:
查询准备清单
CL=7FH:
得到显示信息
ODH=块设备的通用I/0控制
入口:
BL=驱动器号,CH=种类,CL=功能,DS:
DX=参数块地址
种类:
08H=磁盘驱动器
功能:
CL=40H:
设置设备参数
CL=4lH写磁道
CL=42H:
格式化并且校验磁道
CL=46H设置介质ID码
CL=47H:
设置访问标志
CL=60H:
得到设备参数
CL=61H:
读磁道
CL=62H:
校验磁道
CL=66H:
得到介质识别符码
CL=67H:
得到访问代码
OEH=返回逻辑设备映像
入口:
BL=驱动器号
出口:
AL=最后驱动器的号数
OFH=改变逻辑设备映像
入口:
BL=驱动器号
出□:
AL=最后驱动号
45H
复制文件句柄
入口
AH=45H
BX=当前文件句柄
出口
若CF=l,AX=出错代码
否则,AX=复制文件句柄
46H
强制复制文件句柄
入口
AH=46H
BX=当前文件句柄
CX=新文件句柄
出口
若CF=l,AX=出错代码
注释
此功能很象功能45H,只是45H功能允许DOS去选择新的文件句柄,而本功能让用户去选择新的文件句柄
47H
读当前目录
入口
AH=7H
AL=驱动器号
DS:
S1=64字节长的目录名缓冲区地址
出口
若CF=O,DS:
SI=当前目录名的地址
注释
A驱动器号为00,B驱动器号为0l,依此类推。
48H
分配内存块
入口
AH=48H
BX=申请的内存段的节数(一节=16字节)
CX=新文件何柄
出口
若CF=O,则BX=最大可用的内存空间
49H
释放已分配的内存块
入口
AH=49H
ES=待释放内存块的段地址
CX=新文件句柄
出口
若CF=l,则说明有错
4AH
修改已分配的内存块
入口
AH=4AHBX=新请求块的大小
ES=要修改块的段地址
出口
若CF=0,则BX=最大可用的内存字节数
4BH
装载或运行一个程序
入口
AH=4BHAL=功能号
ES:
BX=参数块地址
DS:
DX=ASCII-Z串命令地址
出口
若CF=l,指示错误
注释
功能块的含义:
AL=00H装入并执行程序;AL=0lH装入程序,但不执行;AL=03H装入程序覆盖;AL=05H进入EXEC状态。
图A-6显示了此功能所用的参数块的情况
4CH
终结程序
入口
AH=4CHAL=错误代码
出口
返回到DOS
注释
本功能带错误代码返回到DOS,此错误码可通过DOSERRORLEVEL批处理系统得到通常使用错误码00H返回DOS。
4DH
读取返回码
入口
AH=4DHAX二返回的错误码
出口
若CF=1表示文件未找到
注释
此功能被用来获取由DOS4BH功能执行的程序的返回状态码。
返回码为AX=0000H表示正常无错误的结束;AX=0001H表示由control-Break结束;AX=0002H表示关键设备错误;AX=0003H表示用中断INT3lH结束。
4EH
寻找第一个匹配文件
入口
AH=4EHCX=文件属性
DSDX=ASCII-Z串表示的文件名地址
出口
若CF=l表示文件末找到
注释
此功能在当前或指定目录下寻找第一个匹配的文件。
返回时,DTA包含有此文件信息。
磁盘传输区(DTA)见图A-7。
4FH
寻找下一个匹配文件
入口
AH=4FH
出口
若CF=l表示未找到文件
注释
用4EH功能找到第一个文件后,用此功能寻找后续的文件。
50H
设置程序段前缀(PSP)地址
入口
AH=5OHBX=新PSP偏移地址
注释
使用此功能要小心,因为没有出错恢复的可能性。
51H
获得PSP地址
入口
AH=5lH
出口
BX=当前PSP段地址
54H
读磁盘校验状态
入口
AH=54H
出口
AL=OOH表示校验关闭
AL=0lH表示校验开启
56H
更改文件名
入口
AH=56H
ES:
DI=ASCII-Z串表示的新文件名地址
DS:
DX=ASCII-Z串表的待改文件名地址
出口
若CF=l说明出错
57H
读取文件的日期和时间
入口
AH=57HAL=功能号
BX=文件句柄CX=新时间
DX=新日期
出口
若CF=l表示出错
若CF=表示成功CX=时间DX=日期
注释
AL=00H表示读口期和时间,AL=0lH表写入新的日期和时间。
59H
得到扩展的错误信息
入口
AH=59H
对于DOS3.x版本,BX=0000H
出口
AX=扩展的错误码
BH=错误类别
BL=推荐处理方法
CH=出错设备代码
注释
Ax中返回的错误代码
0001H=无效的功能代号
0002H=文件末找到
0003H=路径末找到
0004H=没有可利用的文件句柄
0005H=禁止访问
0006H=文件句柄无效
0007H=内存管理块(MCB)出错
0008H=内存不够
0009H=内存块地址无效
0OOAH=环境错误
0OOBH=格式无效
0OOCH=访问代码无效
0OODH=数据无效
0OOEH=未知单元
0OOFH=磁盘驱动器无效
0010H=企图抹除当前目录
0011H=非相同设备
0012H=没有更多的文件
0013H=磁盘写保护
0014H=未知单元
0015H=驱动器末准备好
0016H=未知的命令
0017H=数据错(CRC校验错)
0018H=所要求的结构长度非法
0019H=寻找错误
0OlAH=未知的介质类型
0OlBH=未发现扇区
0OlCH=打印机缺低
0OlDH=写错误
0OlEH=读错误
0OlFH=通常错误
0020H=共享妨碍
0021H=加锁妨碍
0022H=无效的磁盘改变
0023H=FCB不可利用
0024H=共享缓冲区溢出
0025H=代码页不匹配
0026H=文件结束句柄操作不相容
0027H=磁盘满
0028H=0031H保留
0032H=不支持络请求
0033H=远程机器末列出
0034H=网络上的名字重复
0035H=网络名未找到
0036H=网络忙
0037H=设备在网上已不存在
0038H=超出NetBIOS命令限制
0039H=网络适配器硬件中的错误
003AH=从网络来的响应不正确
003BH=未预料的网络错误
003CH=远程适配器不相容
003DH=打印机队列满
003EH=没有足够的地方打印文件
003FH=打印文件被删除
0040H=网络名被删除
0041H=网络拒绝存取
0042H=网络设备型号不正确
0043H=网络名没有找到
0044H=网络名超过了极限
0045H=超过了NetBIOS时间限制
0046H=暂时中止
0047H=网络请求末被接收
0048H=打印机或者磁盘重定向暂停
0049H=004FH保留
0050H=文件已经存在
005lH=重复的FCB
0052H=不能创建目录
0053H=INT24H错(严重错误)
0054H=重定向太多
0055H=重复的重定向
0056H=无效的口令
0057H=无效的参数
0058H=网络写失败
0059H=此功能不为网络所支持
0O5AH=所要求的系统部件未安装
0065H=设置未选择
以下为BH中的错误代码类别
1H=没有可用的资源
2H=暂时错误
3H=授权错误
4H=内部软件错误
5H=硬件错误
OH=系统错误
7H=应用软件错误
8H=项目未找到
9H=无效的格式
AH=项目已加锁
BH=介质错误
CH=已存在
DH=未知的错误
下列在BL中起推荐作用
1H=重试
2H=等待再重试
3H=用户重试
4H=放弃处理
5H=立即退出
6H=忽略错误
7H=用户干预下的重试
下列是在CH中的清单
1H=未知的源
2H=块设笛错误
3H=网络区域
4H=串行设置错误
5H=内存错误
5AH
创建唯一名字的文件
入口
AH=5AHCX=属性字
DS:
DX=ASCII-Z串路径名的地址
出口
如果CF=l出错
如果CF=OAX=文件句柄
DS:
DX=扩展的目录名的地址
注释
ASCII-Z串表示的文件目录路径必须以反斜线"\"结尾,退出时此目录名附上唯一的文件名。
5BH
创建一个DOS文件
入口
AH=5BHCX=属性字
DS:
DX=包含文件名的ASCIIZ串地址
出口
如果CF=l表示失败
如果CF=0则AX=文件句柄
注释
只在DOS3.X或以上版本的才能使用。
它与功能3CH等同。
只不过3CH功在文件存在时,会删除此文件,而5BH功能在删除时报告文件存在。
5CH
文件内容加锁/开锁
入口
AH=5CHBX=文件句柄
CX:
DX=加锁/开锁区城的偏移地址
SI:
DI=在相对偏移处开始的加锁或开锁的字节数
出口
如果CF=l表示失败
5DH
设置扩展的错误信息
入口
AH=5DHAL=OAH
DS:
DX=扩展的错误数据结构地址
注释
此功能由DOS3.1版本或更高版本提供,用来装入扩展的错误信息。
5EH
网络/打印机
入口
AH=5EHAL=OOH(得到网络名)
DS:
DX=包含网络名称的ASClI-Z串地址
出口
若CF=l,表示出错
若CF=O,CL=NetBIOS名称号
入口
AH=5EHAL=O2H(定义网络打印机)
BX=重定向列表CX=设置串的长度
DS:
DX=打印机设置的缓冲区的地址
出口
CF=l表示出错
入口
AH=5EH
AL=03H(读网络打印机设置串)
BX=重定向列表
DS:
DX=打印机设置缓冲区地址
出口
若CF=l表示出错
若CF=O,CX=设置串长度
ES:
Dl=打印机打印缓冲区地址
62H
得到PSP地址
入口
AH=62H
出口
BX=当前程序段地址
注释
DOS3·0或以上版本才提供本功能
65H
得到扩展的国别信息
入口
AH=65HAL=功能代码
ES:
DI=接受信息的缓冲区地址
出口
CF=1表示出错
CX=国别信息长度
注释
DOS3.3或更高版本才提供本功能。
66H
得到/设置代码页
入口
AH=66HAL=功能码
BX=代码页号
出口
CF=l表示出错
BX=活动的代码页号
DX=缺省代码页号
注释
功能码:
AL=01H为得到代码页号,AL=02H为设置代码页号。
67H
设置句柄计数
入口
AH=67H
BX=请求的句柄数
出口
若CF=l表示出错误
注释
DOS3.3或更高版本号提供本功能。
68H
提交文件
入口
AH=68HBX=句柄号
出口
若CF=l表示出错;否则日期、时间标记写到日录上
注释
DOS3.3或更高版本号提供本功能。
6CH
扩充的打开文件
入口
AH=6CHAL=OOH
BX=打开模式CX=属性
DX=打开标志
DS:
Sl=ASCII-Z串文件名地址
出口
若CF=l,AX=出错代码
若CF=O,AX=句柄
CX=O0OlH文件存在并已被打开
CX=0002H文件不存在,但已创建
注释
这个功能只用于DOS4.0及以上的版本