GetDriveType与GetVolumeInformation查询驱动器属性用法总结

[复制链接]
查看: 1521|回复: 31
发表于 2023-2-15 20:52:20 | 显示全部楼层 | 阅读模式
#include <stdio.h>
#include <Windows.h>
#include <stdlib.h>
#define BUFSIZE 1024

BOOL GetDriveInfo(LPSTR szDrive){
        UINT uDriveType;
        uDriveType=GetDriveType(szDrive);//返回一个数字表示磁盘类型,如下:
        
        //#define DRIVE_UNKNOWN     0 //未知
        //#define DRIVE_NO_ROOT_DIR 1 //传入的磁盘字符串非根目录
        //#define DRIVE_REMOVABLE   2 //移动硬盘
        //#define DRIVE_FIXED       3 //硬盘
        //#define DRIVE_REMOTE      4 //远程驱动器
        //#define DRIVE_CDROM       5 //光盘
        //#define DRIVE_RAMDISK     6 //U盘
        printf("%s\n",szDrive);
        switch(uDriveType){
                case DRIVE_UNKNOWN:
                        printf("未知磁盘\n");
                        break;
                case DRIVE_NO_ROOT_DIR:
                        printf("非根目录\n");
                        break;
                case DRIVE_REMOVABLE:
                        printf("移动硬盘\n");
                        break;
                case DRIVE_FIXED:
                        printf("硬盘\n");
                        break;
                case DRIVE_REMOTE:
                        printf("远程驱动器\n");
                        break;
                case DRIVE_CDROM:
                        printf("光盘\n");
                        break;
                case DRIVE_RAMDISK:
                        printf("U盘\n");
                        break;
        }

        

        //返回更对的磁盘属性信息
        CHAR dzDriveName[MAX_PATH];
        DWORD dwVolumeSerialNumber;
        DWORD dwMaximumComponentLength;
        DWORD dwFileSystemFlags;//得到一个数字,需要根据常量来判断
        CHAR szFileSystemNameBuffer[MAX_PATH];

        if(!GetVolumeInformation(szDrive,
                dzDriveName,//驱动器名
                MAX_PATH,//驱动器名长度
                &dwVolumeSerialNumber,//硬盘序列号
                &dwMaximumComponentLength,//允许的文件名最大长度
                &dwFileSystemFlags,//更多信息,需要根据常量来判断
                szFileSystemNameBuffer,//文件系统名称
                MAX_PATH//文件系统名称长度
                )){
        
                return FALSE;
        };
        if(0!=lstrlen(dzDriveName)){//如果有卷标则输出
                printf("%s\n",dzDriveName);
        }

        printf("硬盘序列号%u\n",dwVolumeSerialNumber);
        printf("允许的文件名最大长度%d\n",dwMaximumComponentLength);
        printf("文件系统名称%s\n",szFileSystemNameBuffer);
        printf("更多信息%d\n",dwFileSystemFlags);
        //更多信息的全部常量如下:
        //#define FILE_SHARE_READ                 0x00000001  
        //#define FILE_SHARE_WRITE                0x00000002  
        //#define FILE_SHARE_DELETE               0x00000004  
        //#define FILE_ATTRIBUTE_READONLY             0x00000001  
        //#define FILE_ATTRIBUTE_HIDDEN               0x00000002  
        //#define FILE_ATTRIBUTE_SYSTEM               0x00000004  
        //#define FILE_ATTRIBUTE_DIRECTORY            0x00000010  
        //#define FILE_ATTRIBUTE_ARCHIVE              0x00000020  
        //#define FILE_ATTRIBUTE_DEVICE               0x00000040  
        //#define FILE_ATTRIBUTE_NORMAL               0x00000080  
        //#define FILE_ATTRIBUTE_TEMPORARY            0x00000100  
        //#define FILE_ATTRIBUTE_SPARSE_FILE          0x00000200  
        //#define FILE_ATTRIBUTE_REPARSE_POINT        0x00000400  
        //#define FILE_ATTRIBUTE_COMPRESSED           0x00000800  
        //#define FILE_ATTRIBUTE_OFFLINE              0x00001000  
        //#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED  0x00002000  
        //#define FILE_ATTRIBUTE_ENCRYPTED            0x00004000  
        //#define FILE_ATTRIBUTE_VIRTUAL              0x00010000  
        //#define FILE_NOTIFY_CHANGE_FILE_NAME    0x00000001   
        //#define FILE_NOTIFY_CHANGE_DIR_NAME     0x00000002   
        //#define FILE_NOTIFY_CHANGE_ATTRIBUTES   0x00000004   
        //#define FILE_NOTIFY_CHANGE_SIZE         0x00000008   
        //#define FILE_NOTIFY_CHANGE_LAST_WRITE   0x00000010   
        //#define FILE_NOTIFY_CHANGE_LAST_ACCESS  0x00000020   
        //#define FILE_NOTIFY_CHANGE_CREATION     0x00000040   
        //#define FILE_NOTIFY_CHANGE_SECURITY     0x00000100   
        //#define FILE_ACTION_ADDED                   0x00000001   
        //#define FILE_ACTION_REMOVED                 0x00000002   
        //#define FILE_ACTION_MODIFIED                0x00000003   
        //#define FILE_ACTION_RENAMED_OLD_NAME        0x00000004   
        //#define FILE_ACTION_RENAMED_NEW_NAME        0x00000005   
        //#define MAILSLOT_NO_MESSAGE             ((DWORD)-1) 
        //#define MAILSLOT_WAIT_FOREVER           ((DWORD)-1) 
        //#define FILE_CASE_SENSITIVE_SEARCH          0x00000001  
        //#define FILE_CASE_PRESERVED_NAMES           0x00000002  
        //#define FILE_UNICODE_ON_DISK                0x00000004  
        //#define FILE_PERSISTENT_ACLS                0x00000008  
        //#define FILE_FILE_COMPRESSION               0x00000010  
        //#define FILE_VOLUME_QUOTAS                  0x00000020  
        //#define FILE_SUPPORTS_SPARSE_FILES          0x00000040  
        //#define FILE_SUPPORTS_REPARSE_POINTS        0x00000080  
        //#define FILE_SUPPORTS_REMOTE_STORAGE        0x00000100  
        //#define FILE_VOLUME_IS_COMPRESSED           0x00008000  
        //#define FILE_SUPPORTS_OBJECT_IDS            0x00010000  
        //#define FILE_SUPPORTS_ENCRYPTION            0x00020000  
        //#define FILE_NAMED_STREAMS                  0x00040000  
        //#define FILE_READ_ONLY_VOLUME               0x00080000  
        //#define FILE_SEQUENTIAL_WRITE_ONCE          0x00100000  
        //#define FILE_SUPPORTS_TRANSACTIONS          0x00200000  
        //#define FILE_SUPPORTS_HARD_LINKS            0x00400000  
        //#define FILE_SUPPORTS_EXTENDED_ATTRIBUTES   0x00800000  
        //#define FILE_SUPPORTS_OPEN_BY_FILE_ID       0x01000000  
        //#define FILE_SUPPORTS_USN_JOURNAL           0x02000000
        
        if(dwFileSystemFlags & FILE_VOLUME_QUOTAS){//是否启用了配额
                printf("支持配额\n");
        }

        return TRUE;

}

int main(){
        GetDriveInfo(TEXT("C:\\"));
        system("pause");
        return 0;
}



GetDriveType与GetVolumeInformation查询驱动器属性用法总结

易博软件介绍

0

主题

18

帖子

10

积分

营销入门

Rank: 2

积分
10
发表于 2023-2-17 16:12:22 | 显示全部楼层
受益非浅,相见恨晚!  首先,祝楼主和所有论坛的朋友新年快乐!!!  其次,谢谢楼主和我们分享你的经验!!!  其实经验也是一种财富!!!  谢谢你把你的财富与我们共享!!!  看了这篇文章感触颇多!!!  其中两点最为深刻!!!  1.应聘不成功,只能说明我们不够好!!  正应为我们不够好,所以我们必须更加努力!!  2.要正视自己,端正自己的目的,  不断从自身寻找问题,解决问题!!!  我也觉得还是应该学会写,然后才去解决优化的问题  顶,学习永远都是无止境的,看来大家都要努力了!!
发表于 2023-2-18 15:26:02 | 显示全部楼层
我所说的姐姐是指月无边得罪了!不过你确实太不认真看了

0

主题

25

帖子

14

积分

营销入门

Rank: 2

积分
14
发表于 2023-2-19 10:31:47 | 显示全部楼层
我感到一种力量的存在。我是一名刚学VB的学生,看过之后感触很大。我会好好学习这门语言的,谢谢你对我的启发。

0

主题

14

帖子

8

积分

营销入门

Rank: 2

积分
8
发表于 2023-2-19 23:36:46 | 显示全部楼层
就是这个道理!
发表于 2023-2-21 00:49:33 | 显示全部楼层
^好极了

0

主题

22

帖子

12

积分

营销入门

Rank: 2

积分
12
发表于 2023-2-22 09:02:28 | 显示全部楼层
谢谢你们的留言 ,我看过深感领悟,想不到能在网上看到一些原本上书本看不到的东西。。。。

0

主题

9

帖子

5

积分

营销入门

Rank: 2

积分
5
发表于 2023-2-23 05:12:00 | 显示全部楼层
  楼主的一篇文章让我深受到编程不是那么简单,而是要人理化!  高见,这也就是学无止尽吧,能干其实很简单,真正能干得好,干出名堂来却是相当不容易的。要不然为何中国就出不了闻名于世的软件呢?

0

主题

15

帖子

8

积分

营销入门

Rank: 2

积分
8
发表于 2023-2-25 02:27:14 | 显示全部楼层
我是新手,希望大家多多指教!谢谢!我爱VB!

0

主题

18

帖子

10

积分

营销入门

Rank: 2

积分
10
发表于 2023-2-26 02:38:52 | 显示全部楼层
^你好!我想问你一道题:试分别以顺序表和单链表作存储结构,各写一个实现线性表的就地(既使用尽可能少的附加空间)逆置的算法,在原表的存储空间内将线性表(a1,a2,.....an)逆置为(an,.....,a2,a1).
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1、请认真发帖,禁止回复纯表情,纯数字等无意义的内容!帖子内容不要太简单!
2、提倡文明上网,净化网络环境!抵制低俗不良违法有害信息。
3、如果你对主帖作者的帖子不屑一顾的话,请勿回帖。谢谢合作!
3、问答求助区发帖求助后,如有其他用户热心帮您解决问题后,请自觉点击设为最佳答案按钮。

 
 
QQ在线客服
QQ技术支持
工作时间:
8:00-18:00
软著登字:
1361266号
官方微信扫一扫
weixin

QQ|小黑屋|慈众营销 ( 粤ICP备15049986号 )|网站地图

自动发帖软件 | 自动发帖器 | 营销推广软件 | 网络营销工具 | 网络营销软件 | 网站推广工具 | 网络推广软件 | 网络推广工具 | 网页推广软件 | 信息发布软件 | 网站推广工具 | 网页推广软件

Powered by Discuz! X3.4   © 2012-2020 Comsenz Inc.  慈众科技 - Collect from 深圳吉宝泰佛文化有限公司 公司地址:罗湖区黄贝街道深南东路集浩大厦A1403

返回顶部 返回列表