DBT_DEVICEARIVAL消息正在发送无法识别的类GUID
DBT_DEVICEARRIVAL Message is sending unrecognisable Class GUIDs
我正在尝试确定已连接到计算机的设备的类别类型。如果是显示器(例如电视或投影仪(,我想执行特定的操作,如更改计算机的显示设置。
我确定设备类别类型的方法包括以下步骤:
- 注册设备通知
- 检测WM_DEVICECHANGE事件:如果wParam值=DBT_DEVICEARIVAL:
- 我将lParam值转换为PDEV_BROADCAT_DEVICEINTERFACE变量,并检查该变量dbcc_classguid属性
- 如果dbcc_classguid属性=="{4d36e96e-e325-11ce-bfc1-08002be10318}",则我找到了一个监视器设备
我的问题:每当我将LG宽屏电视连接到电脑时,它都会发送一个无法识别的dbcc_classguid。
出于某种原因,在连接电视时,我收到2条DBT_DEVICEARIVAL消息。lParam包含以下GUID。这是什么类型的设备类别?:
{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}
{866519b5-3f07-4c97-b7df-24c5d8a8ccb8}
有趣的是,如果我检查Windows设备管理器应用程序(在连接电视后(,我可以看到电视存储在监视器下,并且它的类GUID确实是监视器类GUID,即{4d36e96e-e325-11ce-bfc1-08002be10318}。所以这真的很奇怪。此外,我把一个普通的电脑显示屏连接到我的笔记本电脑上,它发送了完全相同的GUID,还发送了2条到达信息。
这是我的密码。为什么我在将电视连接到电脑时会收到奇怪的类GUID?那两个GUID是什么设备的?也许我收到的是硬件GUID,而不是类GUID 我的应用程序的输出是: 消息DBT_DEVICEARIVAL: 设备数据:\?\显示器#GSM3AD7#5&20a3f50d&0&UID513#{866519b5-3f07-4c97-b7df-24c5d8a8ccb8}5 {866519b5-3f07-4c97-b7df-24c5d8a8ccb8}不是监控设备!!! 消息DBT_DEVICEARIVAL: 设备数据:\?\显示器#GSM3AD7#5&20a3f50d&0&UID513#{e6f07b5f-ee97-4a90-b076-33f57bf4ea7}5 {e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}不是监控设备!!! case DBT_DEVICEARRIVAL:
{
PDEV_BROADCAST_HDR pBroad = (PDEV_BROADCAST_HDR) lParam;
if (pBroad->dbch_devicetype != DBT_DEVTYP_DEVICEINTERFACE) {
debug_print("pBroad->dbch_devicetype != DBT_DEVTYP_DEVICEINTERFACEn");
break;
}
PDEV_BROADCAST_DEVICEINTERFACE pInter = (PDEV_BROADCAST_DEVICEINTERFACE) pBroad;
_tprintf(_T("Device Data: %sn %xnn"), pInter->dbcc_name, pInter->dbcc_devicetype);
debug_print("Printing Device Data");
outputDeviceData(toString(pInter->dbcc_classguid), SPDRP_CLASSGUID);
if (isMonitorDevice(pInter->dbcc_classguid)) {
// TODO: change display mode and etc.
debug_print("is MonitorDevice!!!");
}
else debug_print("is NOT MonitorDevice!!!");
}
break;
{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}
是GUID_DEVINTERFACE_MONITOR
MSDN页面在这里。你的isMonitorDevice()
函数一定出了问题,我从这里看不出来。使用IsEqualGUID((比较guid值。
- 提升 ASIO 无法识别计时器对象
- 从udp接收帧对于人脸识别来说太慢
- 模板类无法识别友元运算符
- std::visit无法识别类型
- 无法识别模板功能
- 我有两个类需要在同一 cpp 文件中相互引用,但第一个类无法识别第二个类类型的对象
- 如何在LLVM中dyn_cast以识别StoreInst?
- 从不同的附加依赖项中识别等同命名的函数
- C++出现控制台错误.我无法识别源代码的问题
- 从 GUID 获取 USB 卷路径
- VSCode IntelliSense无法识别SDL框架的SDL_image扩展库
- Qt:"Q3DScatter"即使包含在内也无法识别
- 使用指针的类识别
- 如何静态识别动态堆分配?
- 为什么C++无法识别我的对象实例化?
- C++ 无法识别创建进程'telnet'
- 识别 2D 矢量C++中的位置
- 如何识别项目是 QT 中的文件还是文件夹
- ESP32 无法识别任何设备已连接到其接入点
- 无法识别 Mac c++ 文件系统库