阅读:1699回复:4
在WINXP下,硬盘的扇区怎样读写?
请问在WINXP下,硬盘的扇区怎样读写?谁有例子提供给我吗?
|
|
沙发#
发布于:2004-12-09 20:35
进入RING0,IO或修改IOPL来IO当然如果你是听话的孩子,还可以用标准的函数来读写硬盘驱动.
|
|
|
板凳#
发布于:2004-12-10 13:07
我就是没有在MSDN中找到读写硬盘驱动的API函数。您知道是那些吗
|
|
地板#
发布于:2004-12-10 17:06
;*****************************
;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 |
|
|
地下室#
发布于:2004-12-16 14:51
CreateFile("//.//C:",...)
Read |
|