使用dbt.h注意事项

本文介绍了解决在使用dbt.h头文件时出现的未声明常量错误的方法。通过定义Windows版本为Win2000及以上,可以有效避免此类问题。文章提供了具体的步骤指导。

在程序开头 #include <dbt.h>后,使用其中定义的常量, 编译时仍报错说未声明的常量。

原因是windows版本的问题,必须把版本定义为win2000及以上。

定义的办法:

1.先在程序中 #include <stdafx.h>

2.打开stdafx.h文件,在如下位置定义windows版本:

 

重点是 #define WINVER 0X0500

 

参考博客:http://blog.youkuaiyun.com/everettjf/article/details/5317132

 

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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值