PC6下载站

分类分类

Win2K下如何直接读写磁盘扇区

关注+2004-10-15作者:蓝点

Win2000下直接读写磁盘扇区 不少朋友来信问在2000如何写磁盘;我把自已常用的方法告诉大家;如果您不知道我在说什么;您赶快按ALT+F4 别浪费时间。


  本文介绍在NT和2000下,通过CreateFile来打开需要读写的驱动器,ReadFile、WriteFile来进行磁盘读写。



  下面的代码演示了,如何读写A驱/* -----------------------------------------------------


  Read Floppy Disk Sector for win NT/2000


  reads [numsec] sectors from [head] [track] [sector]


  -------------------------------------------------------*/


  char* ReadSectors(int head, int sector, int track, int numsec){


  // getting logical sector from absolute head/track/sector ...//计算扇区位置int LogicalSector = (sector-1) +


  (head*SECTORSPERTRACK) +


  (track*SECTORSPERTRACK*NUMOFHEADS) ;


  char *buffer ; HANDLE hDevice ;


  HANDLE hDevice; char* buffer = (char*)malloc (512*numsec);strset ( buffer , );DWORD bytesread ;


  // getting a handle to the drive a: using // CreateFile () function ....//打开驱动器 .A:hDevice = CreateFile("\.A:",


  GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,


  NULL, OPEN_EXISTING, 0, NULL);


  if (hDevice == NULL) {


  MessageBox ("Failed !");


  return NULL;}


  // setting the file pointer to the start of the // sector we want to read . //移动文件指针到需要读取位置SetFilePointer (hDevice,


  (LogicalSector*512),


  NULL,


  FILE_BEGIN);


  // reading sector(s) ...//读数据if (!ReadFile ( hDevice,


  buffer,


  512*numsec,


  &bytesread,


  NULL) ){


  /*


  int err;


  char error[10];


  err=GetLastError ();


  itoa (err, error, 10);


  MessageBox (error, "Reading sectors ...Failed ");


  return NULL ;


  */}//关闭CloseHandle(hDevice);


  return buffer ;}


    
    
     
    
    
展开全部

相关文章

更多+相同厂商

热门推荐

  • 最新排行
  • 最热排行
  • 评分最高
排行榜

    点击查看更多

      点击查看更多

        点击查看更多

        说两句网友评论

          我要评论...
          取消