zoukankan      html  css  js  c++  java
  • 使用CreateFile, ReadFile, WriteFile在Windows NT/2000/XP下读写绝对扇区的方法 分类: 磁盘的扇区读写 2015-04-29 10:50 358人阅读 评论(0) 收藏

    也就是在CreateFile的时候打开文件名指定: “\.Device”就可以了.
      因为代码比较短, 所以我不做注释, 相信大家看代码就能明白意思了.
      另外这里读写的都是软盘A盘第0扇区, 如果想读写其他的扇区, 那么可以使用API SetFilePointer.
      读扇区的方法(下面的代码演示从A盘的第0扇区读出数据, 写入到文件BOOT.BIN中):
     
     #include <windows.h>
      #include <assert.h>
      #include <stdio.h>
      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 <windows.h>
      #include <assert.h>
      #include <stdio.h>
      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);
       CloseHandle(hFile);
       free(pBuffer);
      }

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    jquery 查找 新建元素
    sphinx中,直接取主键ID
    把一个文件夹下的多个csv文件合并到一个excel的多个sheet
    学习XOR
    数据结构C++,线性表的实现(数组方式)
    确定主机字节序
    TCP打开文件传输(客户端code)
    使用两个管道的客户服务器模型
    数据结构C++,栈的实现
    TCP打开文件传输(服务器端并发code)
  • 原文地址:https://www.cnblogs.com/mao0504/p/4706431.html
Copyright © 2011-2022 走看看