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

📄 extint13.h

📁 DOS下迷你硬盘读写器终于完工了! 可读写绝对扇区
💻 H
字号:
//#include <dos.h>
//#include <stdio.h>
void extint13(unsigned int cmd,
	      unsigned int driveNum,
	      unsigned long startSector,
	      unsigned int sectorToDo,
	      char *buf)
{
//char buf[512];

//FILE *f;
//unsigned int i=0;
//union REGS checkin,checkout;
union REGS in,out;

struct DiskAddressPacket
{
unsigned char PacketSize; // 数据包尺寸(16字节)
unsigned char Reserved; // ==0
unsigned int BlockCount; // 要传输的数据块个数(以扇区为单位)
unsigned long BufferAddr;// 传输缓冲地址(segment:offset)
unsigned long BlockNum;// 磁盘起始绝对块地址
//unsigned long ab;
}dap;
dap.PacketSize=16;
dap.Reserved=0;
dap.BlockCount=sectorToDo;
dap.BufferAddr=(unsigned long)buf;
dap.BlockNum=startSector;

//checkin.h.ah=0x41;
//checkin.h.dl=driveNum;
//checkin.x.bx=0x55AA;

//int86(0x13,&checkin,&checkout);
//if(checkout.h.ah==1 || checkout.x.bx!=0xAA55) {printf("extended int13 not supported."); return;}
//printf("Major version of extended int13: %02x\nAPI set 1 supported,",checkout.h.ah);
//return;
in.h.ah = cmd;
in.h.dl = driveNum;
in.x.si = &dap;
//磁盘地址数据包(Disk Address Packet)

//f=fopen("ext13usb","wb");
//fclose(f);


//for(;i<251;i++)
//{
int86(0x13,&in,&out);

//f=fopen("extint13","ab+");
//fwrite(buf,512,1,f);
//fclose(f);

//dap.BlockNum++;
//printf("%u sectors read.\n",i);


}
/*
int main(void)
{
   char filename[80];
   union REGS inregs, outregs;
   struct SREGS segregs;

   printf("Enter filename: ");
   gets(filename);
   inregs.h.ah = 0x43;
   inregs.h.al = 0x21;
   inregs.x.dx = FP_OFF(filename);
   segregs.ds = FP_SEG(filename);
   int86x(0x21, &inregs, &outregs, &segregs);
   printf("File attribute: %X\n", outregs.x.cx);
   return 0;
}
*/

⌨️ 快捷键说明

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