实战DeviceIoControl系列之二:获取软盘/硬盘/光盘的参数
2010-01-10 09:37:32 来源:WEB开发网然后,在 Toolbar的 IDR_MAINFRAME上添加一个按钮,ID 为ID_GET_DISK_GEOMETRY。打开 ClassWizard,在 DiskGeometryView 中添加 ID_GET_DISK_GEOMETRY的映射函数OnGetDiskGeometry。打 开
DiskGeometryView.cpp,包含头文件 GetDiskGeometry.h。
在 OnGetDiskGeometry 中,添加以下代码
const char *szDevName[]=
{
".A:",
".B:",
".PhysicalDrive0",
".PhysicalDrive1",
".PhysicalDrive2",
".PhysicalDrive3",
".Cdrom0",
".Cdrom1",
};
DISK_GEOMETRY dg;
ULONGLONG DiskSize;
BOOL bResult; CString strMsg;
CString strTmp;
for (int i = 0; i < sizeof(szDevName)/sizeof(char*); i++)
{
bResult = GetDriveGeometry(szDevName[i], &dg);
strTmp.Format("rn%s result = %srn", szDevName[i], bResult ?
"success" : "failure");
strMsg+=strTmp;
if (!bResult) continue;
strTmp.Format(" Media Type = %drn", dg.MediaType);
strMsg+=strTmp;
strTmp.Format(" Cylinders = %I64drn", dg.Cylinders);
strMsg+=strTmp;
strTmp.Format(" Tracks per cylinder = %ldrn", (ULONG)
dg.TracksPerCylinder);
strMsg+=strTmp;
strTmp.Format (" Sectors per track = %ldrn", (ULONG)
dg.SectorsPerTrack);
strMsg+=strTmp;
strTmp.Format(" Bytes per sector = %ldrn", (ULONG)
dg.BytesPerSector); strMsg+=strTmp;
DiskSize = dg.Cylinders.QuadPart * (ULONG)dg.TracksPerCylinder
*
(ULONG) dg.SectorsPerTrack * (ULONG)dg.BytesPerSector;
strTmp.Format(" Disk size = %I64d (Bytes) = %I64d (Mb)rn",
DiskSize, DiskSize / (1024 * 1024));
strMsg+=strTmp;
}
CEdit& Edit = GetEditCtrl();
Edit.SetWindowText(strMsg);
最后,最后干什么呢?编译,运行......
Tags:实战 DeviceIoControl 系列
编辑录入:爽爽 [复制链接] [打 印]- ››实战案例分析:高质量软文对网站百度排名的影响
- ››实战经验浅谈网站搬家后的优化工作
- ››实战Active Directory站点部署与管理,Active Dir...
- ››实战操作主机角色转移,Active Directory系列之十...
- ››实战经验:巧用微博推广淘宝网店
- ››实战iPhone GPS定位系统
- ››实战Linux环境配置DBD:Oracle模块
- ››实战DeviceIoControl系列之一:通过API访问设备驱...
- ››实战DeviceIoControl系列之二:获取软盘/硬盘/光盘...
- ››实战DeviceIoControl系列之三:制作磁盘镜像文件
- ››实战DeviceIoControl系列之四:获取硬盘的详细信息...
- ››实战DeviceIoControl之五:列举已安装的存储设备
更多精彩
赞助商链接