头文件:
#include <Windows.h> // 包含 Windows API 头文件
#include <Dbt.h> // 包含设备通知相关的头文件
识别U盘:
//.h
bool nativeEvent(const QByteArray &eventType,
void *message,
long *result) override;
bool nativeEvent(const QByteArray &eventType,
void *message,
long *result)
{
Q_UNUSED(eventType)
MSG* msg = (MSG*)message;
if (msg->message == WM_DEVICECHANGE)
{
if (msg->wParam == DBT_DEVICEARRIVAL)
{
PDEV_BROADCAST_HDR devHdr = (PDEV_BROADCAST_HDR)msg->lParam;
if (devHdr->dbch_devicetype == DBT_DEVTYP_VOLUME)
{
//U盘插入, 更新驱动器列表
}
*result = 0;
}
else if (msg->wParam == DBT_DEVICEREMOVECOMPLETE)
{
PDEV_BROADCAST_HDR devHdr = (PDEV_BROADCAST_HDR)msg->lParam;
if (devHdr->dbch_devicetype == DBT_DEVTYP_VOLUME)
{
//U盘拔出