C++ WMI的Win32#U键盘类未在C+中检测到PS/2键盘+;
我在为设备监控编写的C++ WMI的Win32#U键盘类未在C+中检测到PS/2键盘+;,c++,keyboard,wmi,wql,C++,Keyboard,Wmi,Wql,我在为设备监控编写的C++程序(在VS2010中)中使用了以下代码 hres = pSvc->ExecNotificationQueryAsync( _bstr_t("WQL"), _bstr_t("select * from __InstanceOperationEvent within 1 " "where (TargetInstance ISA 'Win32_Keyboard') "),
C++
程序(在VS2010
中)中使用了以下代码
hres = pSvc->ExecNotificationQueryAsync(
_bstr_t("WQL"),
_bstr_t("select * from __InstanceOperationEvent within 1 "
"where (TargetInstance ISA 'Win32_Keyboard') "),
WBEM_FLAG_SEND_STATUS,
NULL,
pStubSink);
如果连接的键盘是USB键盘,则此查询工作正常并返回预期值。如果查询是PS/2键盘
,则查询甚至不会被激发。我尝试在查询中使用Win32\u端口连接器
和Win32\u并行端口
而不是Win32\u键盘
。但结果是一样的
有人能告诉我,当PS/2键盘连接到我的系统时,如何获取通知。上次我检查时,PS/2不允许在计算机已经打开时检测到被插入。@chris:你确定吗?Win32\u PortConnector
的文档说明Win32\u PortConnector WMI类表示物理连接端口,如DB-25插脚公端口、Centronics或PS/2。
无法说明。我很长一段时间没有使用PS/2了,我也从来没有为它编写过代码,但我清楚地记得需要重新启动计算机才能让键盘工作。@chris:是的。。当键盘第一次插上电源时,我需要这样做。但在那之后,我可以在系统打开时轻松地拔下设备插头,而无需重新启动。仍然无法使用WMI
查询检测到它。据我所知,这是可能的-PS/2既不是即插即用的,也不是可交换的,因此没有插入它的通知。如果你拔掉插头再插回去,它就可以继续工作,这并不意味着Windows从一开始就知道你拔掉了它——它只能继续工作,因为你的硬件(主板)可以处理它。谷歌提供PS/2热插拔、热插拔和pnp。