(如何)我可以使用 `hSource` 句柄获取有关 `TOUCHINPUT` 源设备的附加信息?

(How) can I obtain additional information about `TOUCHINPUT` source device using `hSource` handle?

我正在我的 c# windows 应用程序上挂接 windows 触摸事件,以允许来自多个触摸屏的输入。我的问题是,我不仅希望能够在运行时区分不同的设备,我还想知道设备在以前的系统启动会话中提供了什么输入。问题是系统似乎在启动时为每个设备提供了唯一的 hSource 句柄。

hSource

said in Microsoft docs

A device handle for the source input device. Each device is given a unique provider at run time by the touch input provider.

这激发了一种想法,即 hSource 只不过是唯一标识符。但我仍然想知道是否有一种方法可以获取有关具有给定 id 的设备的附加信息,最好是每个设备都是唯一的,并且在不同的系统启动会话中是一致的。

我已经尝试将此句柄视为文件句柄并使用 GetFileInformationByHandle,但令人惊讶的是(这是自我讽刺)没有成功。

感谢任何帮助,尤其是负面的(即你是对的,没办法,至少 windows touch api)。

can I obtain additional information about TOUCHINPUT source device using hSource handle?

您可以使用 GetRawInputDeviceInfo 获取额外信息,如下所示:

RID_DEVICE_INFO info;
ZeroMemory(&info, sizeof(RID_DEVICE_INFO));
UINT size = 0;
if (GetRawInputDeviceInfo(touchInput.hSource, RIDI_DEVICEINFO, &info, &size)) {
}
else {
    DWORD err = GetLastError();
}

参考TOUCHINPUT structure and GetRawInputDeviceInfo.