社区
硬件/系统
帖子详情
Windows XP下的硬盘读写
wyvernwhite
2004-07-19 05:48:42
在WinXP下面有哪些API可以读写硬盘(最好是对硬盘的直接读写)
...全文
134
9
打赏
收藏
Windows XP下的硬盘读写
在WinXP下面有哪些API可以读写硬盘(最好是对硬盘的直接读写)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wyvernwhite
2004-07-23
打赏
举报
回复
已经全部搞定了,多谢
wyvernwhite
2004-07-20
打赏
举报
回复
......我发出回复以后想起来这可能是你自己写的了,但是好象不能改帖子.....
再次表示衷心的感谢,有什么疑问我再问你吧^^
会思考的草
2004-07-20
打赏
举报
回复
m_hDrive就不用多说了吧,至于这个m_DiskInfo么……
BOOL CLogicalPartition::GetDiskGeometry()
{
char szPath[255] = {0};
BOOL bResult = FALSE;
DWORD dwOutBytes = 0;
if(m_hDrive == INVALID_HANDLE_VALUE)
{
return FALSE;
}
sprintf(szPath, "%c:\\", m_chDriveLetter);
ZeroMemory(&m_DiskInfo, sizeof(DISK_GEOMETRY));
if(GetDriveType(szPath)== DRIVE_CDROM)
{
bResult = DeviceIoControl(
m_hDrive,
IOCTL_CDROM_GET_DRIVE_GEOMETRY,
NULL,
0,
&m_DiskInfo,
sizeof(DISK_GEOMETRY),
&dwOutBytes,
NULL
);
}
else
{
bResult = DeviceIoControl(
m_hDrive,
IOCTL_DISK_GET_DRIVE_GEOMETRY,
NULL,
0,
&m_DiskInfo,
sizeof(DISK_GEOMETRY),
&dwOutBytes,
NULL
);
}
return bResult;
}
会思考的草
2004-07-20
打赏
举报
回复
这个……咳,是俺写的一个类,汗……
wyvernwhite
2004-07-20
打赏
举报
回复
谢谢楼上,不过......这个CLogicalPartition我怎么在MSDN里查不到啊,能不能再麻烦你一下把缺失的部分补上^^(比如m_hDrive, m_DiskInfo 这些成员变量的值怎么得到)
会思考的草
2004-07-20
打赏
举报
回复
2000/XP下,先打开卷:
HANDLE CLogicalPartition::GetDriveHandle
{
char szDevice[255] = {0};
sprintf(szDevice, "\\\\.\\%c:", m_chDriveLetter);
return CreateFile(szDevice,GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL);
}
然后读取扇区:
//从第dwStart个扇区开始,连续读取包括起始扇区在内的dwSecCount个扇区.dwBufSz是m_pFat大小(以字节计)
//扇区起始号均是从0开始计算
BOOL CLogicalPartition::ReadSectors(LPBYTE lpBuf, DWORD dwBufSz, DWORD dwStartSec, DWORD dwSecCount)
{
DWORD dwResult = 0;
LARGE_INTEGER qDistance;
//入口参数合法性校验
if(lpBuf == NULL)
{
return FALSE;
}
if(dwBufSz < (dwSecCount*m_DiskInfo.BytesPerSector))
{
MessageBox(NULL,"缓冲区不够!数据会被截断!","警告",MB_OK|MB_ICONWARNING);
}
if(m_hDrive == INVALID_HANDLE_VALUE)
{
return FALSE;
}
//移动文件指针到起始位置
ZeroMemory(&qDistance, sizeof(LARGE_INTEGER));
qDistance.QuadPart = dwStartSec*m_DiskInfo.BytesPerSector;//计算移动距离
if(qDistance.u.HighPart==0 && qDistance.u.LowPart==0)
{
dwResult = SetFilePointer(m_hDrive, 0, NULL, FILE_BEGIN);
}
else if(qDistance.u.HighPart==0)//高32位为0
{
dwResult = SetFilePointer(m_hDrive, qDistance.u.LowPart, NULL, FILE_BEGIN);
}
else
{
dwResult = SetFilePointer(m_hDrive,qDistance.u.LowPart,&qDistance.u.HighPart,FILE_BEGIN);
}
if(dwResult== -1 && GetLastError()!= NO_ERROR)
{
CString strErrorMsg = _T("");
strErrorMsg.Format("磁盘读取错误,错误号:%x",GetLastError());
MessageBox(NULL,strErrorMsg, "错误", MB_OK|MB_ICONERROR);
return FALSE;
}
dwResult = 0;
//读取磁盘扇区
if(ReadFile(m_hDrive, lpBuf, dwSecCount*m_DiskInfo.BytesPerSector, &dwResult, NULL)== 0)
{
CString strErrorMsg = _T("");
strErrorMsg.Format("磁盘读取错误,错误号:%x",GetLastError());
MessageBox(NULL,strErrorMsg, "错误", MB_OK|MB_ICONERROR);
return FALSE;
}
if(dwResult == 0)
{
return FALSE;
}
return TRUE;
}
wyvernwhite
2004-07-19
打赏
举报
回复
那有什么办法能在硬盘里找到指定的数据(也要需要用直接对硬盘操作来实现)
名牌大灰狼
2004-07-19
打赏
举报
回复
BOOL DeviceIoControl(
HANDLE hDevice,
DWORD dwIoControlCode,
LPVOID lpInBuffer,
DWORD nInBufferSize,
LPVOID lpOutBuffer,
DWORD nOutBufferSize,
LPDWORD lpBytesReturned,
LPOVERLAPPED lpOverlapped
);
liotion
2004-07-19
打赏
举报
回复
DeviceIoControl
MaxScale 实现 MySQL
读写
分离与负载均衡
Re: MaxScale 实现 MySQL
读写
分离与负载均衡 ==================================== # MaxScale作用 配置好了MySQL的主从复制结构后,能够实现
读写
分离,把读操作分散到slave服务器中,并且对多个slave服务器能...
XP
硬盘
读写
速度很慢的解决方法
今日检测了
硬盘
读写
速度还不到2m/s,实在令人难以接受。一查之下,
硬盘
被置为PIO模式了,难怪。用以下方法得以解决:1、对桌面“我的电脑”右键选择“属性”,选择“硬件”->“设备管理器”。2、展开“IDE ATA/ATAPI...
3t
硬盘
xp
_解决方案:如何在
Windows
XP
SP3 32位系统下识别3T容量GPT格式的
硬盘
...
随着
硬盘
驱动器容量的增加,大于3TB的大型
硬盘
驱动器变得越来越普遍,但是
XP
仅支持2.0TB以内的
硬盘
驱动器,超过该容量则无法读取。在
Windows
操作系统环境中,如果要标识,访问和创建容量超过2.2TB的分区/
硬盘
驱动器...
windows
xp
系统老电脑支持3TB
硬盘
的方法
使用3TB
硬盘
的局限性 使用
Windows
XP
系统的电脑一般都是比较老的配置,其中的老主板BIOS支持MBR分区...然而用户常用的32位
Windows
XP
并不支持对GPT分区的
读写
,如果用户要在3TB
硬盘
作为数据从盘,就必须使用Window...
安装
windows
XP
系统时系统找不到
硬盘
及蓝屏的解决方案
有时候我们安装GHOST版
XP
时,系统总是蓝屏,或安装原版
XP
...由于SATA接口在近年才推出,现在的新
硬盘
基本上都是串口
硬盘
,默认采用的
硬盘
接口模式是SATA,而
Windows
XP
推出较早,因此
XP
系统中没有支持SATA接口的程序...
硬件/系统
2,640
社区成员
17,239
社区内容
发帖
与我相关
我的任务
硬件/系统
VC/MFC 硬件/系统
复制链接
扫一扫
分享
社区描述
VC/MFC 硬件/系统
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章