获取硬盘、U盘数量和名称
来源:互联网 发布:china战歌网络歌手 编辑:程序博客网 时间:2024/06/04 23:23
获取硬盘、U盘数量和名称,使用 SetupDiEnumDeviceInfo 枚举磁盘设备,再通过 SetupDiGetDeviceRegistryProperty 获取 SPDRP_REMOVAL_POLICY 属性,确认是不是可移动设备,然后再获取名字就好了。
#include "SetupAPI.h"#pragma comment(lib,"Setupapi.lib")INT GetHardDiskNum(BOOL bReMov = FALSE){ GUID objGuid = {0}; DWORD dwSize = 0; if(SetupDiClassGuidsFromName("DiskDrive",&objGuid,1,&dwSize) == FALSE) return 0; HDEVINFO hDevInfo = SetupDiGetClassDevs(&objGuid,0,0,DIGCF_PRESENT | DIGCF_PROFILE);//'根据串口GUID获取设备句柄 if(INVALID_HANDLE_VALUE == hDevInfo) return 0; int count = 0; for(int i = 0;;++i) { SP_DEVINFO_DATA objSpdd = {0};//'根据设备句柄检举包含的设备 objSpdd.cbSize = sizeof(objSpdd); if(!SetupDiEnumDeviceInfo(hDevInfo,i,&objSpdd)) break; BYTE PropertyBuffer[MAX_PATH] = {0};//获取SPDRP_REMOVAL_POLICY属性 3是可移动设备。。 if(!SetupDiGetDeviceRegistryProperty(hDevInfo,&objSpdd,SPDRP_REMOVAL_POLICY,0,PropertyBuffer,MAX_PATH,&dwSize)) break; if(bReMov ? PropertyBuffer[0] != 3 : PropertyBuffer[0] == 3) //用这个判断是不是可移动的,3是可移动 continue; else { ZeroMemory(PropertyBuffer,MAX_PATH); if(!SetupDiGetDeviceRegistryProperty(hDevInfo,&objSpdd,SPDRP_FRIENDLYNAME,0,PropertyBuffer,MAX_PATH,&dwSize)) // 根据dwIndex设备句柄请求FRIENDLYNAME访问 break; ++count; OutputDebugString((bReMov ? CString("可移动:") : CString("不可移动:")) + CString(PropertyBuffer)); } } return count;}
使用:
CString s; s.Format("可移动数量:%d\n不可移动数量:%d",GetHardDiskNum(TRUE),GetHardDiskNum()); AfxMessageBox(s);
效果:
阅读全文
0 0
- 获取硬盘、U盘数量和名称
- 获取文件夹内某一类文件的数量和名称
- 获取分区类型(U盘、硬盘)
- 使用U盘和USB硬盘
- 免费网络硬盘和网络U盘
- ubuntu挂载U盘和硬盘
- linux下挂载硬盘光驱和U盘
- ubuntu挂载U盘和硬盘
- linux下挂载硬盘光驱和U盘
- linux下挂载硬盘光驱和U盘
- U盘和硬盘的存储原理
- SATA硬盘和U盘能否热插拨
- 改变硬盘和U盘背景
- linux下挂载硬盘光驱和U盘
- linux下挂载硬盘和u盘
- 如何区分U盘和硬盘
- 根据/proc/partitions获取插入的U盘设备名称
- C#获取系统硬盘唯一ID,排除U盘
- 编写函数,将一维数组(array[10])的元素从小到大排序,在主函数中读入数组的元素
- strtus2里的struts.xml的配置
- html css 右侧固定 左边自适应样式
- 【Work Like Alibaba线下沙龙】“业务为王”时代, DevOps怎么玩?
- 只能输入数字和小数js
- 获取硬盘、U盘数量和名称
- Android经典开源项目
- tomcat允许跨域
- 设计模式之禅10
- 使用阿里邮箱发送邮件,邮件被反垃圾系统认定为垃圾邮件,导致邮件被系统退回。
- 第一次开通博客,暂时随便侃侃
- JZOJ 5473. 【NOIP2017提高组正式赛】小凯的疑惑
- 超详细Retrofit源码解析(一)
- 基于RISC-V架构的开源处理器及SoC研究综述(一)