我爱Aspx >> VC.Net >> 实战DeviceIoControl 之二:获取软盘/硬盘/光盘的参数然后,在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("\r\n%s result = %s\r\n", szDevName[i], bResult ? "success" : "failure"); strMsg+=strTmp; if (!bResult) continue; strTmp.Format(" Media Type = %d\r\n", dg.MediaType); strMsg+=strTmp; strTmp.Format(" Cylinders = %I64d\r\n", dg.Cylinders); strMsg+=strTmp; strTmp.Format(" Tracks per cylinder = %ld\r\n", (ULONG) dg.TracksPerCylinder); strMsg+=strTmp; strTmp.Format(" Sectors per track = %ld\r\n", (ULONG) dg.SectorsPerTrack); strMsg+=strTmp; strTmp.Format(" Bytes per sector = %ld\r\n", (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)\r\n", DiskSize, DiskSize / (1024 * 1024)); strMsg+=strTmp; } CEdit& Edit = GetEditCtrl(); Edit.SetWindowText(strMsg);
最后,最后干什么呢?编译,运行......
首次发布:2003-02-18
最后修订:2003-05-20
【我对这篇文章有话说?】
非议MFC(三)库代码的质量问题[05-21]
从WEB服务器下载文件的简单方法。[05-21]
非议MFC(二)逻辑上的不完备[05-21]
实战DeviceIoControl 之一:通过..[05-21]
Windows中文输入法的实现[05-21]
用Delphi 6开发ASP上传组件详解[05-21]
”新快乐时光“再解[05-21]
Notes中有关C++API的注意事项[05-21]
Domino SMTP设置[05-21]
游戏修改器[05-21]