Win API学习笔记——文件系统(一·)

文件系统用到的API:

  • GetLogicalDrives    获取主机中所有的逻辑驱动器,一Bit Map的形式返回
  • GetDriveType   获取驱动器类型
  • GetVolumeInformation()   获取驱动器信息

获取驱动器根路径:

  • 创建一个数组  CHAR szLogicalDriveStrings[BUFSIZE]
  • 创建一个指针  PCHAR szDrive
  • 获取驱动器根路径GetLogicalDriveStrings(BUFSIZE - 1, szLogicalDriveStrings);
  • 创建一个函数,获取驱动器信息:GetDirverInfo();
    •   用GetDriveType(szDrive)获取驱动器类型。
    •   调用函数 GetVolumeInformation(szDrive, szDirverName, MAX_PATH, &dwVolumeSerialNumber, &dwMaximumComponentLength,
        &dwFileSystemFlags, szFileSystemNameBuffer, BUFSIZE))
BOOL GetDirverInfo(LPSTR szDrive) {
    UINT uDriveType;   //驱动器类型
    DWORD dwVolumeSerialNumber;     //卷序列号
    DWORD dwMaximumComponentLength;  //最大组件长度
    DWORD dwFileSystemFlags;   //文件系统标识
    CHAR szFileSystemNameBuffer[BUFSIZE];  //文件系统名称缓冲
    CHAR szDirverName[MAX_PATH]; //驱动器名称
                                 //最大字符长度的路径。

    std::cout << "\n" << szDrive << std::endl;
    uDriveType = GetDriveType(szDrive);  //获取驱动器的物理类型  该函数返回驱动器类型

    switch (uDriveType) {
    case DRIVE_UNKNOWN: //驱动器类型不确定
        std::cout << "The drive type cannot be determined.";
        break;

    case DRIVE_NO_ROOT_DIR:   //根目录无效,
        std::cout << "The root path is invalid,for example,no volume is mounted at the path";
        break;

    case DRIVE_REMOVABLE: //可移动设备, 比如U盘
        std::cout << "The drive is a type that has removable media,for example,a floppy drive or removable hard disk.";
        break;

    case DRIVE_FIXED: //固定的驱动;例如,一个硬盘或闪存驱动器
        std::cout << "The drive is a type that cannot be removed,for example,a fixed hard drive.";
        break;

    case DRIVE_REMOTE://远程(网络)驱动器
        std::cout << "The drive is a remote (network) drive.";
        break;

    case DRIVE_CDROM:  //cd - rom驱动器
        std::cout << "The drive is a CD-ROM drive.";
        break;

    case DRIVE_RAMDISK: //RAM磁盘
        std::cout << "The drive is a RAM disk.";
        break;
    } 
  if (!GetVolumeInformation(szDrive, szDirverName, MAX_PATH, &dwVolumeSerialNumber, &dwMaximumComponentLength,
        &dwFileSystemFlags, szFileSystemNameBuffer, BUFSIZE)) {                 //获取驱动器的相关属性
        return FALSE;
    }
 
 

猜你喜欢

转载自www.cnblogs.com/Lan-ZC0803/p/9467554.html
今日推荐