也就是在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);
  }

使用CreateFile, ReadFile, WriteFile在Windows NT/2000/XP下读写绝对扇区的方法的更多相关文章

  1. 用Windows API函数(CreateFile/ReadFile/WriteFile/CloseHandle)完成文件拷贝程序(初级版)

    文件拷贝程序 程序类型:Console 参数:源文件名   目的文件名 要求:1.只能使用Windows API函数(CreateFile/ReadFile/WriteFile/CloseHandle ...

  2. UWP 使用Windows.Web.Http命名空间下的HttpClient使用post方法,上传图片服务器

    1.从相册里面选取图片 /// <summary> /// 1.1 从相册里面选取图片 /// </summary> /// <param name="send ...

  3. 使用API进行文件读写——CreateFile,ReadFile,WriteFile等

    看了这个帖子:  http://www.vbgood.com/thread-99249-1-1.html  就写了一个使用API读写文件的简单类,苦力活.  演示代码在附件里.  '********* ...

  4. CreateFile,ReadFile等API详解(或者说MSDN的翻译)

    一.*****CreateFile***** 这个函数可以创建或打开一个对象的句柄,凭借此句柄就可以控制这些对象:控制台对象.通信资源对象.目录对象(只能打开).磁盘设备对象.文件对象.邮槽对象.管道 ...

  5. 不同WINDOWS平台下磁盘逻辑扇区的直接读写

    不同WINDOWS平台下磁盘逻辑扇区的直接读写 关键字:VWIN32.中断.DeviceIoControl 一.概述 在DOS操作系统下,通过BIOS的INT13.DOS的INT25(绝对读).INT ...

  6. 有关WINDOWS XP登录密码的几种方法

    网上关于破解WINDOWS XP登录密码的几种方法很多,但许多根本不行.我现在总结自己试过几种,这几种方法其实均比较菜的,但可行的.WINDOWS XP登录是由SAM 文件管理的,总体来说“山姆大叔” ...

  7. Linux和windows 查看程序、进程的依赖库的方法

    Linux: 1. 利用ldd查看可执行程序的依赖库   [root@~]# ldd /usr/local/php/bin/php   linux-vdso.so.1 => (0x00007ff ...

  8. [原创]使用GCC创建 Windows NT 下的内核DLL

    原文链接:使用GCC创建 Windows NT 下的内核DLL 在温习<<Windows 2000 Driving>>分层驱动程序一章的时候,看到了关于紧耦合驱动连接方式,这种 ...

  9. Windows NT 之父 - David Cutler

    David Cutler,大卫·卡特勒,一位传奇程序员,1988年去微软前号称硅谷最牛的内核开发人员,是VMS和Windows NT的首席设计师,被人们成为“操作系统天神”.他曾供职于杜邦.DEC等公 ...

随机推荐

  1. Core Animation 文档翻译 (第八篇)—提高动画的性能

    前言 核心动画是提高基于APP动画帧率的好方式,但是核心动画的使用不代表性能的提升的保证.尤其在OSX,当使用核心动画时,我们仍需选择最有效的方式.和所有的性能相关的问题一样,我们应该使用工具时时的评 ...

  2. 解决AspNet Zero Core 5.0.1无法运行的问题

    最近在研究AspNet Zero Core 5.0.1时发现VS点击调试后就自动退出了,从ABP QQ群里得知作者加入了licensecode校验.经过一个周左右断断续续的折腾,算是破解了吧.原本想把 ...

  3. Python基础篇(八)

    key words:私有变量,类静态变量,生成器,导入Python模块,r查看模块可以使用的函数,查看帮助信息,启动外部程序,集合,堆,时间模块,random模块,shelve模块,文件读取等 > ...

  4. 洛谷 P3672 小清新签到题 [DP 排列]

    传送门 题意:给定自然数n.k.x,你要求出第k小的长度为n的逆序对对数为x的1~n的排列 $n \le 300, k \le 10^13$ 一下子想到hzc讲过的DP 从小到大插入,后插入不会对前插 ...

  5. Bootstrap+Vue.js 练习入门一

    一. 效果如下图所示,输入用户名和年龄,点击添加,数据会自动添加到下面的用户信息表内.当没有数据时,用户信息表显示:暂无数据……,当有数据时,显示 删除全部 按钮,这里为了方便快捷,我没有做删除按钮的 ...

  6. php+redis 学习 三 乐观锁

    <?php header('content-type:text/html;chaeset=utf-8'); /** * redis实战 * * 实现乐观锁机制 * * @example php ...

  7. yii2 源码分析Event类分析 (三)

    转载请注明链接:http://www.cnblogs.com/liuwanqiu/p/6739880.html Event是所有事件的基类,它继承Object类 Event类上面的注释的大致意思: * ...

  8. Git 如何 clone 非 master 分支的代码

    问题描述 我们每次使用命令 git clone git@gitlab.xxx.com:xxxxx.git 默认 clone 的是这个仓库的 master 分支.如果最新的代码不在 master 分支上 ...

  9. python学习:递归列出目录里的文件

    #!/usr/bin/python   import os import sys   def print_files(path):     lsdir = os.listdir(path)     d ...

  10. Java经典编程题50道之十六

    输出九九乘法表. public class Example16 {    public static void main(String[] args) {        table(9);    } ...