⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 extint13.c

📁 13中断
💻 C
字号:

/* 扩展13中断,可读写大硬盘 */
#include <dos.h>
int extInt13(unsigned int cmd,
			 unsigned int driveNum,
			 unsigned long startSector,
			 unsigned int sectorToDo,
			 char *buf)
{
	union REGS in,out;
	struct SREGS sregs;
	struct DiskAddressPacket
	{
		unsigned char PacketSize; /* 数据包尺寸(16字节) */
		unsigned char Reserved; /* ==0 */
		unsigned int BlockCount; /* 要传输的数据块个数(以扇区为单位) */
		unsigned int BufferAddrOFF; /* 缓冲地址偏移 */
		unsigned int BufferAddrSEG; /* 缓冲地址段地址 */
		unsigned long BlockNumLow; /* 磁盘起始绝对块地址低位,支持4G的扇区数,就是2048G字节 */
		unsigned long BlockNumHigh; /* 磁盘起始绝对块地址高位,可支持天文数字的GB,本程序未用,置0 */
	}dap;
	dap.PacketSize=16;
	dap.Reserved=0;
	dap.BlockCount=sectorToDo;
	dap.BufferAddrOFF=FP_OFF(buf);
	dap.BufferAddrSEG=FP_SEG(buf);
	dap.BlockNumLow=startSector;
	dap.BlockNumHigh=0;
	
	in.h.ah = cmd;
	in.h.dl = driveNum;
	in.h.al = 0; /* 0 为无写校验,1为有 */
	in.x.si = FP_OFF(&dap);
	sregs.ds =  FP_SEG(&dap);
	
	int86x(0x13,&in,&out,&sregs);
	return out.h.ah;
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -