阅读:1282回复:3
关于21h号中断的44Dh号功能
最近学习PGP的原代码时看到一段代码:
VxdIntRegs regs; regs.eax = 0x440D; // function 440D regs.ebx = drive + 1; // decrement lock level regs.ecx = 0x086A; // code 6A (Unlock Volume) regs.flags = 0x0001; // carry flag set on error Exec_VxD_Int(0x21, regs); 其大致功能是对要\"unmount\"的虚拟磁盘进行解锁。 我对dos调用很不熟息 :(,翻了上学时的汇编课本。INT21中 AH=44h是对设备文件的I/O控制,但找不到AL=0Dh的子功能。 那位大虾愿意指点一下 :D [编辑 - 6/24/03 by RED_spring] |
|
沙发#
发布于:2003-06-25 15:52
INT 21,44,D / IOCTL,D - Generic I/O for Block Devices
AH = 44h AL = 0D BL = drive number (0=default, 1=A:, 2=B:, 3=C:, ...) CH = device type = 08 for disk drive (block device) CL = minor function code = 40 set device parameters = 41 write track on logical device = 42 format/verify track on logical drive = 47 set access flag (DOS 4.x) = 60 get device parameters = 61 read track on logical device = 62 verify track on logical drive = 67 get access flag (DOS 4.x) DS:DX = pointer to parameter block on return AX = error code if CF set (see DOS ERROR CODES) - provides device independent primitive control operations - implemented from DOS 3.2 - see IBM DOS Technical Reference Manual for more details |
|
板凳#
发布于:2003-06-25 18:21
谢谢了。俺也刚找到,是在《DOS中断大全》上找到的。不过还是谢谢了!
我还有一点不太清楚: 上面(《DOS中断大全》)说ecx = 0x086A 这个功能是DOS7.0上才有的,但Windows为什么不直接实现,而是交给一个中断来处理? 是不是与INT13有关? |
|
|
地板#
发布于:2003-06-29 21:12
还没有找到答案,迷茫中。。。
|
|