两个函数检查系统是否有可移动盘

GetLogicalDriveStrings函数

原形:
DWORD GetLogicalDriveStrings(
  DWORD nBufferLength,  // size of buffer
  LPTSTR lpBuffer       // drive strings buffer
);

说明:GetLogicalDriveStrings函数将一个缓冲区lpBuffer填入在计算机上存在的硬盘盘符.

参数说明:
nBufferLength是缓冲区lpBuffer的大小,以字节为单位.它的大小不包含最后的空字符.如果它的值为零,缓冲区不可用.

lpBuffer指向一个接收各种以零结尾的字符串缓冲区,一个空字符用来区分各个可用硬盘的,最后在末尾有再以空字符结尾,假如
你的电脑上有C,D两个硬盘盘符,则它能得到一个字符串是:
'C',':','/',' ','D',':','/',' ',' '
即:C:/<null>D:/<null><null>

返回值:
如果函数成功结束,返回值是获得的字符串长度,以字节为单位,不包括最后的一个空字符,好像上面的字符串获得的长度就是8;

此处不能够调用strlen来检测字符长度,否则返回的就只有一个C:/盘了。

GetDriveType 头文件在“winbase.h”

  UINT GetDriveType(

  LPCTSTR lpRootPathName // root directory

  );

  函数功能

  判断磁盘类型

  参数说明

  lpRootPathName 包含了根目录路径的字符串指针

  返回值

  DRIVE_UNKNOWN 未知的磁盘类型

  DRIVE_NO_ROOT_DIR 说明lpRootPathName是无效的

  DRIVE_REMOVABLE 可移动磁盘

  DRIVE_FIXED 固定磁盘

  DRIVE_REMOTE 网络磁盘

  DRIVE_CDROM 光驱

  DRIVE_RAMDISK 为RAM

 

下面是通过GetLogicalDriveStrings和GetDriveType来判断系统中是否有移动盘:


BOOL CMyList::CheckRemoveAbleDisk()
{
   TCHAR szDriverName[512];
   CString strDriverName;
   BOOL fFound=FALSE;;
   DWORD nLength=GetLogicalDriveStrings(sizeof(szDriverName),szDriverName);
    int i;
 for(i=0;i<(int)nLength;i++){
  if(szDriverName[i]!='/0')
   strDriverName+=szDriverName[i];//读取盘符
  else{
   strDriverName=strDriverName.Left(strDriverName.GetLength()-1);
   if(GetDriveType((LPCTSTR)strDriverName)==DRIVE_REMOVABLE){//判断是否是移动,也可以用来判断其他盘
               strRemoveAbleDisk=strDriverName;
      fFound=TRUE;
      break;
   }
   strDriverName="";
  }
 }
  
 return fFound;//返回是否找到
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值