//声明:GetLogicalDrives: DWORD; {无参数}
//返回值:
返回值的二进制右边第一位为 1 表示驱动器 A: 存在;
返回值的二进制右边第二位为 1 表示驱动器 B: 存在...以次类推./
例如:DWORD dwDrives = GetLogicalDrives();
在我的电脑中他返回了 dwDrives = 1020;
首先将 dwDrives = 1020 转化成 二进制 dwDrives = 1111111100;
‘1’代表该驱动器存在;
‘0’代表该驱动器不存在;
从右边开始逐个对应:
1 1 1 1 1 1 1 1 0 0
J I H G F E D C B A
可以看出 我的电脑上有 J I H G F E D C 八个盘(包括光驱),
可以通过以下方法获取盘符:
dwMask = 1;
for (int i = 0; i < 26; i++)
{
if (dwDrives & dwMask) //dwDrives 和 dwMask 进行与运算判断该盘是否存在
{
CString strDriveLetter = (TCHAR) (i + _T('A'));
}
dwMask << = 1; //dwMask 左移一位,例如:dwMask = 00000001,左移后为00000010
}
PS:与与运算举例:
判断A盘是否存在
dwDrives = 1 1 1 1 1 1 1 1 0 0
dwMask = 0 0 0 0 0 0 0 0 0 1
与运算后 = 0 0 0 0 0 0 0 0 0 0 //为假
判断C盘是否存在
dwDrives = 1 1 1 1 1 1 1 1 0 0
dwMask = 0 0 0 0 0 0 0 1 0 0 //左移了两次后的值
与运算后 = 0 0 0 0 0 0 0 1 0 0 //为真 该驱动存在