- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1.获取所有的驱动器
利用函数
GetLogicalDriveStrings
The GetLogicalDriveStrings function fills a buffer with strings that specify valid drives in the system.
DWORD GetLogicalDriveStrings(
DWORD nBufferLength, // size of buffer
LPTSTR lpBuffer // drive strings buffer
);
很简单的一个函数,msdn有详细的说明
需要注意的一点是
lpBuffer中最后获得的数据是这样c:\nulld:\nullnull,每两个路径之间都间隔一个 null-terminated,
所以,如果你直接coutlpBuffer 的话,那么得到的是C:\,很是令人郁闷,于是要想办法把这些路径一个一个取得
所以,有了如下代码
TCHAR szBuf[100];
memset(szBuf,0,100);
DWORD len = GetLogicalDriveStrings(sizeof(szBuf)/sizeof(TCHAR),szBuf);
for (TCHAR* s = szBuf; *s; s += _tcslen(s)+1)
{
LPCTSTR sDrivePath = s;
coutsDrivePath
}
那么这个sDrivePath 就是一个一个的类似于C:\,D:\那样的字符窜
2.获取驱动器类型
现在获得了驱动器的路径了,如C:\,D:\
那么如何区分他们呢,
有这个函数
GetDriveType
The GetDriveType function determines whether a disk drive is a removable, fixed, CD-ROM, RAM disk, or network drive.
UINT GetDriveType(
LPCTSTR lpRootPathName // root directory
);
UINT uDriveType = GetDriveType(sDrivePath);
调用以后,这个函数的返回值有
Value Meaning
DRIVE_UNKNOWN The drive type cannot be determined.
DRIVE_NO_ROOT_DIR The root path is invalid. For example, no volume is mounted at the path.
DRIVE_REMOVABLE The disk can be removed from the drive.
DRIVE_FIXED The disk cannot be removed from the drive.
DRIVE_REMOTE The drive is a remote (network) drive.
DRIVE_CDROM The drive is a CD-ROM drive.
DRIVE_RAMDISK The drive is a RAM disk.
但是,靠这个函数,很多东西,都是区分不了了,比如软驱,和插入的U盘,都是DRIVE_REMOVABLE ,而硬盘和插入的移动硬盘,都是DRIVE_FIXED
靠:(
我们一个一个来试试吧
3.获取光驱
先捏软柿子:)
UINT uDriveType = GetDriveType(sDrivePath);
if (uDriveType == DRIVE_CDROM)
{
这个就是咯
}
要注意的是,虽然写的是DRIVE_CDROM
但是dvd 光驱也能获得(这不废话吗),另外,虚拟光驱也能获得,比如俺机器上安装了Alcohol 120%,设置的虚拟光驱也获得了
4.区分软驱和U盘
先把代码贴出来吧
#define MEDIA_INFO_SIZE sizeof(GET_MEDIA_TYPES)+15*sizeof(DEVICE_MEDIA_INFO)
BOOL GetDriveGeometry(const TCHAR * filename, DISK_GEOMETRY * pdg)
{
HANDLE hDevice; // 设备句柄
BOOL bResult;
您可能关注的文档
- Pt、Sn催化剂电化学制备及催化性能的研究.pdf
- Pt_CexZr1-xO2催化剂在含硫合成气中催化水煤气变换反应活性.pdf
- pvc—u双壁波纹管施工方案.doc
- Rational流程和项目组合管理解决方案.doc
- RFID技术在国内图书馆应用.pdf
- RISC嵌入式系统存储器管理软件优化.pdf
- RTK定位理论及应用的研究.doc
- RTP-RTCP实时传输协议实现课程设计.doc
- S4分布式流计算平台.pdf
- S7-300 PLC和VC NET在电力监控系统中应用.doc
- DB23T - 美洲朴育苗技术规程.docx
- DB23T - 森林防火警示旗设置要求.docx
- DB53_T 1358.4-2025 党政机关办公用房管理规范 第4部分:使用管理.docx
- DB5305T72-2022 清香木园林绿化苗木培育技术规程.docx
- DB5301T 41-2019 城镇污水处理厂污泥处置 土地利用技术规范.docx
- DB5301∕T 36-2019 滇池湖滨湿地 监测规程.docx
- 保山市信息惠民工程综合标准 第46部分:信息惠民工程项目运维管理标准(DB5305-T 19.46-2019).docx
- DB53T 784-2016 地理标志产品 墨江紫米.docx
- DB5301T21-2019居住区绿地设计规范.docx
- DB6106_T200—2022 洛川苹果标准综合体 第11部分 免套袋生产技术规程.docx
文档评论(0)