博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
windows开发--QT主动监测U盘是否插入
阅读量:3624 次
发布时间:2019-05-21

本文共 1158 字,大约阅读时间需要 3 分钟。

关于U盘的监测有两种方式,一种是主动监测,另一种是U盘插拔时被动接收事件并处理,两种不同的方式使用场景不同。本文主要介绍在windows系统下主动监测U盘的方法。

接口介绍

该方法主要调用Windows.h头文件中的相应接口函数:

1、GetLogicalDriveStrings() 获取相关磁盘的磁盘号原型: WINBASEAPI DWORD WINAPI GetLogicalDriveStringsW (DWORD nBufferLength, LPWSTR lpBuffer);其中lpBuffer的数据格式为: A:\NULLB:\NULLC:\NULL 每个磁盘名称占用4个字节2、GetDriveType() 根据磁盘名判断磁盘类型,用来区分是否是U盘原型:  WINBASEAPI UINT WINAPI GetDriveTypeW (LPCWSTR lpRootPathName);

实现原理

获取所有的磁盘名称,针对每个磁盘获取对应的类型,判断是否是U盘。

代码

#include 
#include
#include
void diskDetect(){
// 获取磁盘字符串总长度 stringLen size_t stringLen = GetLogicalDriveStrings(0, NULL); size_t diskNameLen = 4; size_t diskNum = stringLen / diskNameLen; char *drvString = new char[stringLen]; // 获取磁盘字符串并保存到 drvString GetLogicalDriveStrings(stringLen, (LPTSTR)drvString); // drvString内部保存的数据是A:\NULLB:\NULLC:\NULL for (size_t i = 0; i < diskNum ; ++i) {
char dir[] = {
drvString[i * diskNameLen],':','\\' }; size_t diskType = GetDriveType((LPCWSTR)(drvString + i * diskNameLen)); if (diskType == DRIVE_REMOVABLE) {
qDebug()<<"find disk is :"<
<

相关链接

[1]

转载地址:http://pxuun.baihongyu.com/

你可能感兴趣的文章
TypeScript从入门到精通(二)静态类型
查看>>
TypeScript从入门到精通(三)基础静态类型和对象静态类型
查看>>
TypeScript从入门到精通(四)类型注释和类型推断
查看>>
TypeScript从入门到精通(五)函数参数和返回类型定义
查看>>
用户态和内核态(转载)
查看>>
说线程和进程的区别
查看>>
springmvc常用的一些注解
查看>>
Spring注解Resource和Autowired区别对比
查看>>
TCP和UDP区别
查看>>
TCP协议如何保证可靠传输
查看>>
浅谈单链表与双链表的区别
查看>>
十大经典排序算法最强总结
查看>>
Map集合类——LinkedHashMap
查看>>
session的生命周期
查看>>
Redis 为什么是单线程?
查看>>
Linux常用命令(足以应付面试)
查看>>
Redis主从复制
查看>>
Redis 常见的性能问题和解决方法
查看>>
RabbitMQ基础概念详解
查看>>
RabbitMQ系列(二)--基础组件
查看>>