驱动器属性

# include<stdio.h>
# include<windows.h>
# include<stdlib.h>

/*
  要获取一些关于驱动器的属性,可以调用这些函数:

    1:  UINT GetDriveType(
        LPCTSTR lpRootPathName
        );

  函数有一个参数,比如"c:\\"(\是转义字符,所以要两个\,比如”\"“就是表示“)
  函数返回值是无符号整型。
  该函数获得的是驱动器的类型:
  #define DRIVE_UNKNOWN     0   //未知的
  #define DRIVE_NO_ROOT_DIR 1   //非根目录,比如”c:\\windows"
  #define DRIVE_REMOVABLE   2   //可移动的,比如软盘
  #define DRIVE_FIXED       3   //固定的驱动器即硬盘,比如"c:\\"
  #define DRIVE_REMOTE      4   //远程驱动器,比如通过网络共享的
  #define DRIVE_CDROM       5   //光盘
  #define DRIVE_RAMDISK     6   //u盘
  函数返回的值与这些宏对应

     2:  BOOL GetVolumeInformation(
            LPCTSTR lpRootPathName,     //驱动器的根目录
            LPTSTR lpVolumeNameBuffer,  //字符数组(驱动器的名称)
            DWORD nVolumeNameSize,      //数组大小

            LPDWORD lpVolumeSerialNumber,   //驱动器的序列号的地址,
            //每个驱动器(卷)都有一个序列号,一般叫做"硬盘号"
            //每个驱动器都有唯一的序列号,经常会用到序列号加密

            LPDWORD lpMaximumComponentLength,  //文件名的最大长度

            LPDWORD lpFileSystemFlags,  //该变量与一些属性做位
            //运算,就可以判断是否具有该属性
            LPTSTR lpFileSystemNameBuffer,      
            //驱动器的文件系统名称,比如"NTFS“
            DWORD nFileSystemNameSize       //数组大小
            );

*/
int main()
{
    UINT uDriveType = GetDriveType(TEXT("c:\\windows"));//注意要写两个\ 
    switch (uDriveType)
    {
    case  DRIVE_UNKNOWN:
        printf("DRIVE_UNKNOWN\n");
        break;
    case  DRIVE_NO_ROOT_DIR:
        printf("DRIVE_NO_ROOT_DIR\n");
        break;
    case DRIVE_REMOVABLE:
        printf("DRIVE_REMOVABLE\n");
        break;
    case DRIVE_FIXED:
        printf("DRIVE_FIXED\n");
        break;
    case DRIVE_REMOTE:
        printf("DRIVE_REMOTE\n");
        break;
    case DRIVE_CDROM:
        printf("DRIVE_CDROM\n");
        break;
    case DRIVE_RAMDISK:
        printf("DRIVE_RAMDISK\n");
        break;
    default:
        break;
    }

    TCHAR szDriveName[MAX_PATH];
    DWORD dwVolumeSerialNumber;
    DWORD dwMaximumCompoentLength;
    DWORD dwFileSystemFlags;
    TCHAR szFileSystemNameBuffer[MAX_PATH];
    if (!GetVolumeInformation(//该函数调用可能会失败
        TEXT("c:\\"),//驱动器的根目录
        szDriveName,
        MAX_PATH,
        &dwVolumeSerialNumber,
        &dwMaximumCompoentLength,
        &dwFileSystemFlags,
        szFileSystemNameBuffer,
        MAX_PATH
        ))
    {
        return -1;
    }

    if (dwFileSystemFlags&FILE_VOLUME_QUOTAS)//磁盘配额
    {
        printf("The file system supports disk quota.\n");
    }

    if (dwFileSystemFlags*FILE_SUPPORTS_ENCRYPTION)//是否允许加密
    {
        printf("The file system supports encryption.\n");
    }
    //还有很多属性,就不一 一列举了


    system("pause");
    return 0;
}

这里写图片描述
这里写图片描述

这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值