如何用 VolInfo 获取逻辑驱动器
2006-07-20 11:38:41 来源:WEB开发网核心提示:本文示例源代码或素材下载 1、如何用 VolInfo 获取逻辑驱动器?2、如何用C#编程修改系统菜单?我试图写一个能列出系统上的驱动器(C:,D:等)的MFC程序,如何用 VolInfo 获取逻辑驱动器,我也需要知道该驱动器是一个硬盘或是光驱,有这样的一个类来获得此信息吗? 没有提供这种信息的MFC类,或者是一
本文示例源代码或素材下载
1、如何用 VolInfo 获取逻辑驱动器?
2、如何用C#编程修改系统菜单?
我试图写一个能列出系统上的驱动器(C:,D:等)的MFC程序,我也需要知道该驱动器是一个硬盘或是光驱。有这样的一个类来获得此信息吗?
没有提供这种信息的MFC类,但Microsoft® Windows®有一组卷管理函数能实现这个目的。其中包括获取逻辑驱动器以及卷挂接点(mount points)信息的函数,高级的NTFS的特性不在此之列。对于你的要求,你只要处理逻辑驱动器信息即可。Figure 1显示了相关函数。有四个基本的函数:GetLogicalDrives, GetLogicalDriveStrings, GetDriveType 和 GetVolumeInformation。第五个是 SetVolumeLabel,如果你愿意,可以用它设置卷标。这些函数都相当简单易懂,为了使用方便起见,我把它们封装到了一个友好的MFC类中:CVolumeMaster,(参见 Figure 2),它可以让你处理CString而不是TCHAR数组。我还写了一个 例子程序:VolInfo.exe,示范了如何使用这个MFC类。你能从本文开始的超链接处下载源代码。Figure 3是VolInfo例子程序在我自己的计算机上运行时显示的详细信息。
Figure 3 详细的驱动器信息
第一个函数,GetLogicalDrives,返回一个DWORD的位掩码(bitmask)值,以告知驱动盘符。“0”表示是驱动器A,“1”表示驱动器B,依次类推。大家知道,英语字母表有26个字母,而DWORD有32位,你们中数学在行的人将快速地推算出:一个DWORD能提供足够大的空间来容纳所有,或者是一些可能的驱动器字母的组合。幸好微软(Redmond)不在西北利亚(古代斯拉夫语的字母有33个字母),CVolumeMaster有一个静态的方法FormatBitMask,它位掩码信息格式化为ASCII----VolInfo程序应用它来显示一条象下面这样的信息:
更多精彩
赞助商链接