CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他开发语言 >  汇编语言

win2k下用DeviceIoControl读取任意物理扇区

楼主AwakeinAlone(轻盈无眠)2001-10-01 20:21:39 在 其他开发语言 / 汇编语言 提问

有办法吗?  
  我看了sdk   msdn,没有提到  
  难道win2k没有提供方法吗   ? 问题点数:20、回复次数:3Top

1 楼vBin(彬)回复于 2001-10-01 23:03:48 得分 20

;*****************************  
  ;AbsDiskNT.asm                           *    
  ;功能:Windows   NT中绝对             *  
  ;             磁盘读写             *  
  ;*****************************  
  .386p  
  .model   flat,stdcall ;平坦内存模式  
  ;外部过程声明  
  extrn   MessageBoxA:proc  
  extrn   ExitProcess:proc  
  extrn   CreateFileA:proc  
  extrn   ReadFile:proc  
  extrn   CloseHandle:proc  
   
  ;常量定义  
  NULL     =   0  
  MB_OK   =   0  
  INVALID_HANDLE_VALUE   =   -1  
  GENERIC_READ     =   80000000H  
  GENERIC_WRITE   =   40000000H  
  FILE_SHARE_READ       =   1  
  FILE_SHARE_WRITE     =   2  
  FILE_SHARE_DELETE   =   4  
  OPEN_EXISTING =   3  
   
   
  .data    
  FileName   db   '\\.\C:',0  
  align   4 ;双字对齐  
  readed dd   0  
  Buffer     db   4096   dup   (0)  
  hFile dd   0  
   
  Caption db   'NT中绝对磁盘读写',0  
  ErrCreate db   '建文件错!',0  
  ErrRead db   '读盘错误!',0  
   
  ShowText db   4096*3   dup   (0)  
  Digit db   '0123456789ABCDEF'  
   
  .code  
  main:  
  ;建立文件  
  call   CreateFileA,offset   FileName,GENERIC_READ,FILE_SHARE_READ   OR   FILE_SHARE_WRITE,NULL,OPEN_EXISTING,NULL,NULL  
  mov     [hFile],eax  
  cmp     eax,INVALID_HANDLE_VALUE  
  jnz     read  
  ;显示错误信息  
  call   ShowError,offset   ErrCreate  
  read: ;读数据  
  call   ReadFile,eax,offset   Buffer,512,offset   readed,NULL  
  cmp     eax,0  
  jnz     show  
  ;显示错误信息  
  call   ShowError,offset   ErrRead  
  show: ;显示读出的内容  
  call   ShowBuffer  
  ;关闭文件句柄  
  call   CloseHandle   ,[hFile]  
  ;退出  
  call   ExitProcess,0  
   
  ShowError   proc   ,MESSAGE:DWORD ;显示出错信息并退出  
  call   MessageBoxA,NULL,MESSAGE,offset   Caption,MB_OK  
  cmp     [hFile],0  
  jz       endShowErr  
  call   CloseHandle   ,[hFile] ;关闭句柄  
  endShowErr:  
  call   ExitProcess,0 ;退出  
  ShowError   endp  
   
  ShowBuffer   proc ;显示所读出的信息  
  ;把数据转换成16进制的形式  
  mov     esi,offset   Buffer ;数据  
  mov     edi,offset   ShowText   ;转换后的数据  
  mov     ebx,offset   Digit  
  mov     ecx,0  
  xor     eax,eax  
  computeAgain:  
  cmp     [readed],0  
  jz       endCompute  
  dec     [readed]  
  mov     al,[esi]  
  push   eax  
  shr     eax,4 ;高4位  
  mov     al,[ebx+eax]  
  mov     byte   ptr[edi],al  
  inc     edi  
  pop     eax  
  and     eax,0fH ;低4位  
  mov     al,[ebx+eax]  
  mov     byte   ptr[edi],al  
  inc     edi  
  mov     byte   ptr[edi],'   ' ;空格  
  inc     edi  
  inc     esi  
  inc     ecx  
  cmp     ecx,16  
  jnz     computeAgain  
  xor     ecx,ecx  
  mov     byte   ptr[edi-1],13 ;回车  
  jmp     computeAgain  
   
  endCompute:  
  ;显示  
  call   MessageBoxA,NULL,offset   ShowText,offset   Caption,MB_OK  
  ret  
  ShowBuffer   endp  
  end   main  
  Top

2 楼AwakeinAlone(轻盈无眠)回复于 2001-10-02 13:54:14 得分 0

谢谢vBin,加20分  
  再问,怎么找这方面资料  
  另外,你这个程序自己写的还是网上的,如果是后者,在哪里?Top

3 楼AwakeinAlone(轻盈无眠)回复于 2001-10-02 15:49:38 得分 0

不对阿,你这是读c区的前512,怎么读0面0磁道0扇区?Top

相关问题

  • (初学着高分求助)如何在vxd中实现对硬盘任意扇区的读写????
  • 如何使用DeviceIoControl对硬盘的绝对扇区进行读或写?
  • 扇区失踪案...
  • 坏扇区的问题?
  • 读写U盘的扇区
  • 物理扇区与逻辑扇区如果转换???MailTo:sonsj@263.net
  • 谁知道WinXP的引导扇区的第一扇区信息?
  • 扇区问题:扇区分配表的数据结构,扇区的数据结构?
  • 求任意排序
  • 读0头0道0扇区

关键词

  • win2k
  • 数据
  • 文件
  • 信息
  • null
  • procextrn
  • showerror
  • offset
  • hfile
  • exitprocess

得分解答快速导航

  • 帖主:AwakeinAlone
  • vBin

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo