Windows API一日一练(61)GetDriveType函数

经常碰到这样的需求,比如你需要保存一个文件到一个目录里去,这个目录或许是用户指定的目录,那么你就需要确保这个目录是否有效的,这样就需要去测试这个目录是否允许写文件?这个目录是否存在?这个目录是否可写的?或者这个目录是否网络上的目录?要完成这个任务,就得使用函数 GetDriveType 来完成。 GetDriveType 函数可以获取目录和盘号的属性。
函数 GetDriveType 声明如下:
WINBASEAPI
UINT
WINAPI
GetDriveTypeA(
__in_opt LPCSTR lpRootPathName
);
WINBASEAPI
UINT
WINAPI
GetDriveTypeW(
__in_opt LPCWSTR lpRootPathName
);
#ifdef UNICODE
#define GetDriveTypeGetDriveTypeW
#else
#define GetDriveTypeGetDriveTypeA
#endif // !UNICODE
lpRootPathName 是目录或盘号的名称。
返回值是目录的属性,有如下值:
DRIVE_UNKNOWN
DRIVE_NO_ROOT_DIR
DRIVE_REMOVABLE
DRIVE_FIXED
DRIVE_REMOTE
DRIVE_CDROM
DRIVE_RAMDISK
调用函数的例子如下:
#001// 获取目录或磁盘的属性。
#002// 蔡军生 2007/10/30 QQ:9073204 深圳
#003void Disk(void)
#004{
#005 // 获取 C: 目录的属性。
#006 std::wstring strTest(_T("C://WINDOWS//"));
#007 UINT nRes = ::GetDriveType(strTest.c_str());
#008 switch(nRes)
#009 {
#010 case DRIVE_UNKNOWN:
#011 OutputDebugString(_T("DRIVE_UNKNOWN/r/n"));
#012 break;
#013 case DRIVE_NO_ROOT_DIR:
#014 OutputDebugString(_T("DRIVE_NO_ROOT_DIR/r/n"));
#015 break;
#016 case DRIVE_REMOVABLE:
#017 OutputDebugString(_T("DRIVE_REMOVABLE/r/n"));
#018 break;
#019 case DRIVE_FIXED:
#020 OutputDebugString(_T("DRIVE_FIXED/r/n"));
#021 break;
#022 case DRIVE_REMOTE:
#023 OutputDebugString(_T("DRIVE_REMOTE/r/n"));
#024 break;
#025 case DRIVE_CDROM:
#026 OutputDebugString(_T("DRIVE_CDROM/r/n"));
#027 break;
#028 case DRIVE_RAMDISK:
#029 OutputDebugString(_T("DRIVE_RAMDISK/r/n"));
#030 break;
#031 default:
#032 break;
#033 }
#034
#035 // 判断盘号是否光驱。
#036 strTest = _T("d://");
#037 nRes = ::GetDriveType(strTest.c_str());
#038 switch(nRes)
#039 {
#040 case DRIVE_UNKNOWN:
#041 OutputDebugString(_T("DRIVE_UNKNOWN/r/n"));
#042 break;
#043 case DRIVE_NO_ROOT_DIR:
#044 OutputDebugString(_T("DRIVE_NO_ROOT_DIR/r/n"));
#045 break;
#046 case DRIVE_REMOVABLE:
#047 OutputDebugString(_T("DRIVE_REMOVABLE/r/n"));
#048 break;
#049 case DRIVE_FIXED:
#050 OutputDebugString(_T("DRIVE_FIXED/r/n"));
#051 break;
#052 case DRIVE_REMOTE:
#053 OutputDebugString(_T("DRIVE_REMOTE/r/n"));
#054 break;
#055 case DRIVE_CDROM:
#056 OutputDebugString(_T("DRIVE_CDROM/r/n"));
#057 break;
#058 case DRIVE_RAMDISK:
#059 OutputDebugString(_T("DRIVE_RAMDISK/r/n"));
#060 break;
#061 default:
#062 break;
#063 }
#064}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值