国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

讀磁片磁區

2019-09-06 23:33:50
字體:
來源:轉載
供稿:網友

                   
一、以前的dos版要讀、寫、格式化第0軌的第1個磁區,程式大致如下:

char buffer[512];

reg.x.dx=0 ;   /* for drive a *
reg.x.cx=0x0001  /* for boot sector */
reg.x.bx=fp_off(buffer);
sreg.es=fp_seg(buffer);
resg.x.ax=0x0201;   /*  02 for read, 03 for write ,05 for format */
int86x(0x13,®,®,&sreg);

   那麼在windows 下轉換為呼叫 deviceiocontrol 以便格式化、讀取、寫入該磁軌,dioc_registers 這struct 在套上 dos 下 int21對hdd或fdd 的各項參數如要格式化是int21也是有, 但windows下也另有提供。

l#pragma pack(push, 1)
struct dioc_registers {
   dword reg_ebx;
   dword reg_edx;
   dword reg_ecx;
   dword reg_eax;
   dword reg_edi;
   dword reg_esi;
   dword reg_flags;
};
#pragma pack(pop)

sdiskimageinfo->hdevice = ::createfile("http://./vwin32", 0, 0, null, 0, file_flag_delete_on_close, null);
if( sdiskimageinfo->hdevice == invalid_handle_value)
 brunnext = false;

// reset floppy disk
 reg.reg_ebx = 0;
 reg.reg_eax = 0x0000;       // ioctl for block devices
 reg.reg_edx = sdiskimageinfo->driver;
 reg.reg_edi = 0; reg.reg_esi= 0;
 reg.reg_flags = 0x0001;     // assume error (carry flag is set)
 dwresult = ::deviceiocontrol( sdiskimageinfo->hdevice, vwin32_dioc_dos_int13, ®, sizeof(dioc_registers), ®,
sizeof(dioc_registers), &cb, 0);

// seek floppy
     reg.reg_ebx = 0;
     reg.reg_eax = 0x0c00;       // ioctl for block devices
     reg.reg_ecx = ( sdiskimageinfo->nc << 8) | sdiskimageinfo->ns;
     reg.reg_edx = ( sdiskimageinfo->nh << 8) | sdiskimageinfo->driver;
     reg.reg_edi = 0;
reg.reg_esi= 0;
     reg.reg_flags = 0x0001;     // assume error (carry flag is set)
     dwresult = ::deviceiocontrol( sdiskimageinfo->hdevice,
vwin32_dioc_dos_int13,
/t/t/t/t   ®, sizeof(dioc_registers), ®,
sizeof(dioc_registers), &cb, 0);

// read floppy
r_creatediskimagefile:
     reg.reg_ebx = 0;
     reg.reg_eax = 0x0200 | 0x01;       // ioctl for block devices
     reg.reg_ecx = ( sdiskimageinfo->nc << 8) | sdiskimageinfo->ns;
     reg.reg_edx = ( sdiskimageinfo->nh << 8) | sdiskimageinfo->driver;
     reg.reg_ebx = (dword) &m_buf;
     reg.reg_edi = 0;
reg.reg_esi= 0;
     reg.reg_flags = 0x0001;     // assume error (carry flag is set)
     dwresult = ::deviceiocontrol( hdevice, vwin32_dioc_dos_int13,
/t/t/t/t   ®, sizeof(dioc_registers), ®,
sizeof(dioc_registers), &cb, 0);
     if (!dwresult || (reg.reg_flags & 0x0001))
     {
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 遂平县| 保山市| 轮台县| 文化| 滨海县| 临澧县| 沭阳县| 楚雄市| 沈阳市| 阳春市| 罗江县| 始兴县| 会同县| 景德镇市| 寿阳县| 建平县| 高雄县| 金塔县| 馆陶县| 大厂| 岱山县| 宁夏| 大悟县| 衡南县| 察隅县| 陈巴尔虎旗| 达拉特旗| 津南区| 射阳县| 京山县| 南溪县| 新源县| 普洱| 普兰县| 石台县| 黔西| 寻乌县| 濉溪县| 保德县| 三原县| 通州区|