国产探花免费观看_亚洲丰满少妇自慰呻吟_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))
     {
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 买车| 镇雄县| 疏附县| 海阳市| 确山县| 云安县| 宜昌市| 增城市| 墨玉县| 永州市| 喀什市| 木兰县| 昭通市| 乌拉特后旗| 青川县| 吉隆县| 余庆县| 河东区| 宿松县| 和静县| 大埔县| 浦东新区| 弥渡县| 阜南县| 蒙自县| 元氏县| 浦东新区| 苏尼特右旗| 江口县| 南京市| 鄄城县| 额尔古纳市| 芜湖县| 北辰区| 木兰县| 都江堰市| 招远市| 繁峙县| 疏附县| 新安县| 新巴尔虎右旗|