添加dbt.h头文件,DEV_BROADCAST_DEVICEINTERFACE

本文介绍如何在项目中配置支持Windows 2000及以上版本的API,通过在StdAfx.h文件中定义宏WINVER为0x0500,确保应用程序能使用这些版本特有的API和常量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在StdAfx.h添加       

    #define       WINVER       0x0500  

指Win2000以上。有些API或常数只有在Win2000以上才支持。

bool TpUsbTest::nativeEventFilter(const QByteArray& eventType, void* message, long* result) { Q_UNUSED(eventType); MSG* msg = static_cast<MSG*>(message); if (msg->message == WM_DEVICECHANGE) { PDEV_BROADCAST_HDR broadcastHeader = reinterpret_cast<PDEV_BROADCAST_HDR>(msg->lParam); switch (msg->wParam) { case DBT_DEVICEARRIVAL: if (broadcastHeader && broadcastHeader->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE) { PDEV_BROADCAST_DEVICEINTERFACE deviceInterface = reinterpret_cast<PDEV_BROADCAST_DEVICEINTERFACE>(broadcastHeader); QString devicePath = QString::fromWCharArray(deviceInterface->dbcc_name).toUpper(); // 检查是否为目标设备 if (devicePath.contains(QString("%1&%2").arg(TARGET_VID, 4, 16, QChar('0')) .arg(TARGET_PID, 4, 16, QChar('0')))) { UsbDeviceInfo device; device.devicePath = devicePath; device.connected = true; // 提取端口信息 extractPortInfo(device); m_devices[device.devicePath] = device; //emit deviceConnected(devicePath); //emit statusMessage(QString("Device connected: %1 (Port: %2)") // .arg(devicePath).arg(device.port)); //// 如果是测试模式,执行测试 //if (m_isTesting && !m_testedPortsList.contains(device.port)) { // performTest(device.port); //} } } break; case DBT_DEVICEREMOVECOMPLETE: if (broadcastHeader && broadcastHeader->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE) { PDEV_BROADCAST_DEVICEINTERFACE deviceInterface = reinterpret_cast<PDEV_BROADCAST_DEVICEINTERFACE>(broadcastHeader); QString devicePath = QString::fromWCharArray(deviceInterface->dbcc_name).toUpper(); if (m_devices.contains(devicePath)) { UsbDeviceInfo device = m_devices[devicePath]; device.connected = false; m_devices[devicePath] = device; //emit deviceDisconnected(devicePath); //emit statusMessage(QString("Device disconnected: %1 (Port: %2)") // .arg(devicePath).arg(device.port)); } } break; } *result = TRUE; return true; } return false; }修改该监听事件,本想监听插拔事件分别进行处理(拔出时记录某设备,插入后判断是否是该设备,并判断插入端口是否发生变化)但是wParam在插拔都是一样的7
最新发布
08-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值