使用CreateFile, ReadFile, WriteFile在Windows NT/2000/XP下读写绝对扇区的方法

导读:
  关键字 使用CreateFile, ReadFile, WriteFile在Windows NT/2000/XP下读写绝对扇区的方法
  出处
  也就是在CreateFile的时候打开文件名指定: “//./Device”就可以了.
  因为代码比较短, 所以我不做注释, 相信大家看代码就能明白意思了.
  另外这里读写的都是软盘A盘第0扇区, 如果想读写其他的扇区, 那么可以使用API SetFilePointer.
  读扇区的方法(下面的代码演示从A盘的第0扇区读出数据, 写入到文件BOOT.BIN中):
  #include
  #include
  #include
  void main()
  {
  HANDLE hFile;
  hFile = CreateFile(".//A:",
  GENERIC_READ,
  FILE_SHARE_READ,
  NULL,
  OPEN_EXISTING,
  0,
  NULL);
  assert(hFile &&"CreateFile failed!");
  PBYTE pBuffer = (PBYTE)malloc(512);
  assert(pBuffer &&"Allocate memory failed!");
  DWORD dwLen;
  ReadFile(hFile, pBuffer, 512, &dwLen, NULL);
  
  FILE * fp;
  fp = fopen("boot.bin", "wb");
  assert(fp &&"Open file failed!");
  fwrite(pBuffer, 512, 1, fp);
  fclose(fp);
  CloseHandle(hFile);
  free(pBuffer);
  }
  那么相应的, 写扇区的方法的就是这样的咯(以下代码演示从BOOT.BIN中读出数据写入到A盘第0扇区):
  #include
  #include
  #include
  void main()
  {
  HANDLE hFile;
  hFile = CreateFile(".//A:",
  GENERIC_WRITE,
  FILE_SHARE_WRITE,
  NULL,
  OPEN_EXISTING,
  0,
  NULL);
  assert(hFile &&"CreateFile failed!");
  PBYTE pBuffer = (PBYTE)malloc(512);
  assert(pBuffer &&"Allocate memory failed!");
  
  FILE * fp;
  fp = fopen("boot.bin", "rb");
  assert(fp &&"Open file failed!");
  fread(pBuffer, 512, 1, fp);
  fclose(fp);
  
  DWORD dwLen;
  WriteFile(hFile, pBuffer, 512, &dwLen, NULL);

本文转自
http://dev.csdn.net/article/33/33426.shtm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值