本文共 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/