• 您的位置我爱Aspx >> VC.Net >> 实战DeviceIoControl 之二:获取软盘/硬盘/光盘的参数
  • 实战DeviceIoControl 之二:获取软盘/硬盘/光盘的参数

  • 作者:aspxer  来源:internet  日期:2007-5-21 23:49:39  关键字:
  • 然后,在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);

    最后,最后干什么呢?编译,运行......

    [相关资源]

  • 本文Demo源码: (21KB)
  • bhw98的专栏:

    首次发布:2003-02-18

    最后修订:2003-05-20

    我对这篇文章有话说?
  • 广告位招租,广告代号:content_468_15
  • 上一篇:关联自己的应用程序到右键菜单中
    下一篇:非议MFC(三)库代码的质量问题
  • 相关文章