您现在的位置: 北亚数据恢复实验室 >> 数据恢复文章 >> 相关编程资料 >> 文章正文 报修电话:010-51280825

提示:可按上面表单检索本站
所有文章及下载资源,
也可通过下面菜单进入文章、
下载及其他类别!

最新动态
文章中心
下载中心
网络日志
咨询留言
交流论坛
北亚数据恢复中心服务承诺:
· 免费检测
· 免费提供3天备份
· 专业数据恢复工程师提供服务
· 数据恢复前报价,客户确认后工程师开始数据 修复
· 数据恢复不成功不收费
· 与客户签订保密协议,对客户的数据严格保密
· 整个恢复过程不会对客户的原盘有任何的写操作,以确保原盘的数据完全。
关于INT13H EXT操作的 C 源程序
关于INT13H EXT操作的 C 源程序
更新时间:2004-04-20 【字体:

关于INT13H EXT的数据结构及操作见:
http://zli.webspace4free.biz/page5.html

/**
 * 硬盘操作:"读"操作(0x42),"写"操作(0x43),\n 
 * "cmd" must be Diskread(0x42) or Diskwrite(0x43).
 * @return >=0: 成功,读写的数据块数;
 * @return -1: 失败.
 */
short _diskop (unsigned char drv, unsigned char cmd,
     unsigned char * buffer, unsigned long startlow, unsigned short copyblks)
{
 /* 磁盘存取数据包结构 */
 struct disk_address_packet {
  unsigned char size_of_packet;
  unsigned char reserved;
  unsigned short number_of_blocks_to_transfer;
  unsigned short transfer_buffer_offset;
  unsigned short transfer_buffer_segment;
  unsigned long starting_absolute_block_low;
  unsigned long starting_absolute_block_high;
 };
 struct disk_address_packet dap;
 unsigned char av;

 unsigned char * pt = (unsigned char *) &dap;

 dap.size_of_packet = sizeof (dap);
 dap.reserved = 0;
 dap.number_of_blocks_to_transfer = copyblks;
 dap.transfer_buffer_offset = FP_OFF(buffer);
 dap.transfer_buffer_segment = FP_SEG(buffer);
 dap.starting_absolute_block_low = startlow;
 dap.starting_absolute_block_high = 0; /* 忽略高位 */

 asm {
  push ds
  push si
  mov ah, cmd
  mov dl, drv
  lds  si, DWORD PTR pt
  int  13h
  pop si
  pop ds
  mov av, ah
  jc  error
 }
 return (dap.number_of_blocks_to_transfer);

error:
 ErrorNum = av;
 return (-1);
}

  • 上一篇文章:

  • 下一篇文章:
  • 关闭窗口
    ©2001-2006 北京
    北亚数据恢复中心
    站内文章搜索

    首页 联系我们 加入收藏 版权申明 文章地图 下载地图 RSS生成 XML生成 友情链接

    北京北亚数据恢复中心
    全国统一客服电话:4006-505-808 或 800-810-5880
    公司地址:北京市海淀区学院南路68号吉安大厦C座(汇智楼)528室
    京ICP备05011939号