硬盘读写方面的API? 我想写个程序测试当前硬盘读写速度,请教大家相关思路!以及相关API函数。谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 HANDLE hDev = CreateFile("\\\\.\\PHYSICALDRIVE0",.............)打开物理硬盘0ReadFile(hDev.........)读物理硬盘WriteFile(hDev........)写物理硬盘CloseHandle(hDev);关闭不能用在win9x下。 测试速度可能要写随机数,否则会有缓存的问题影响真实性,建议长时间读写硬盘来取平均数。楼上说的函数需要管理员权限。Win98下使用中断可以读取,CSDN上有可以读写的类 http://dev.csdn.net/develop/article/20/20550.shtm在Windows NT/2K/XP中,直接用CreateFile打开名称类似于"\\.\A:"的”文件”,就可以与设备驱动打交道,通过ReadFile/WriteFile以绝对地址方式访问磁盘了。但Windows 9X不支持这样的简单方法。本文介绍一种在Windows 9X中实现磁盘直接访问的方法:利用系统的vwin32.vxd,通过DeviceIoControl调用DOS INT21 7305H与440DH功能来完成。该调用支持FAT12、FAT16和FAT32,适用于Windows 95 SR2以及更高版本。 楼上说的通过DeviceIoControl调用DOS INT21 7305H与440DH功能只能来操作逻辑硬盘,就是说按分区操作,不能操作物理盘,9x操作物理盘的方法目前我知道的只能是自己来写vxd。9x下好象有一种可以通过vwin32.vxd操作物理盘的,具体的方法记不清了,但那只能操作软盘。 HANDLE hDev = CreateFile("\\\\.\\PHYSICALDRIVE0",.............)打开物理硬盘0ReadFile(hDev.........)读物理硬盘WriteFile(hDev........)写物理硬盘CloseHandle(hDev);关闭这种方法为什么在第4200000个绝对扇区之后取出来的数据就不对了啊是不是需要设置什么参数,请高手指点!!!!!!!!!! 主要是因为SetFilePointer这个函数在移动超过2G的偏移时,不能像平时那样做了,根据你的代码应该这样:m_start_sec = 4200000;LARGE_INTEGER offset; offset.u.HighPart = 0; offset.u.LowPart = m_start_sec; SetFilePointer( m_dev, offset.u.LowPart, &offset.u.HighPart, FILE_BEGIN );然后就可以了。 错了一点,是offset.u.LowPart = m_start_sec * 512; 出现 illegal call of non-static member function ?? 程序中Freelibrary dll时遇到异常,与所调用的dll里的函数有关么? 关于CEdit的问题 如何扫描UDP端口,请高手指教!!!! 文本文件,如何把它转换成二进制文件? 怎样一直都显示??? __CRTIMP unsigned long __cdecl _beginthreadex 帮忙把vb的Declare Function 翻译成vc的函数指针 新手问题 一个关于CString 的问题,请大家帮忙 关于位图显示的问题 sql语句小问题
ReadFile(hDev.........)读物理硬盘
WriteFile(hDev........)写物理硬盘
CloseHandle(hDev);关闭不能用在win9x下。
楼上说的函数需要管理员权限。Win98下使用中断可以读取,CSDN上有可以读写的类
在Windows NT/2K/XP中,直接用CreateFile打开名称类似于"\\.\A:"的”文件”,就可以与设备驱动打交道,通过ReadFile/WriteFile以绝对地址方式访问磁盘了。但Windows 9X不支持这样的简单方法。本文介绍一种在Windows 9X中实现磁盘直接访问的方法:利用系统的vwin32.vxd,通过DeviceIoControl调用DOS INT21 7305H与440DH功能来完成。该调用支持FAT12、FAT16和FAT32,适用于Windows 95 SR2以及更高版本。
9x下好象有一种可以通过vwin32.vxd操作物理盘的,具体的方法记不清了,但那只能操作软盘。
ReadFile(hDev.........)读物理硬盘
WriteFile(hDev........)写物理硬盘
CloseHandle(hDev);关闭这种方法为什么在第4200000个绝对扇区之后取出来的数据就不对了啊
是不是需要设置什么参数,请高手指点!!!!!!!!!!
m_start_sec = 4200000;LARGE_INTEGER offset;
offset.u.HighPart = 0;
offset.u.LowPart = m_start_sec;
SetFilePointer( m_dev, offset.u.LowPart, &offset.u.HighPart, FILE_BEGIN );
然后就可以了。
offset.u.LowPart = m_start_sec * 512;