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。