windows API InjectTouchInput导致蓝屏

硬件背景

客户硬件设备:windows触屏+触屏笔+鼠标
问题描述:收到外部客户的反馈,使用软件时会蓝屏。但是没有找到重现的步骤,不清楚是硬件还是软件导致的且这个问题遇到的客户越来越多。

软件需求

需求一:windows 全局触摸手势,使用指定手势时,软件需要进行一些不同的设置
需求二:如果有多屏的情况,如果在主屏触摸输入需要把触摸点偏移到副屏。抽象点来说就是,主屏的触摸输入点偏移到副屏的对应坐标。(场景:副屏打开一个windows 自带的画图工具,用手在主屏能操作副屏的画图软件)

线上触摸监听技术方案

使用RegisterPointerInputTarget对系统输入的点截取,然后进行判断手势和是否需要偏移左边的操作。然后使用InjectTouchInput模拟一个触摸到指定的坐标点。

问题排查和重现

经过一周多排查和问题重现,蓝屏的必现场景如下:
1:使用笔先操作一下屏幕(随便点下什么都就行)
2:启动触摸监听程序(这个程序的主要是RegisterPointerInputTarget截取输入的坐标点,然后在使用了InjectTouchInput模拟了一个触摸点。),然后在笔操作后一分钟内,使用手指在电脑的屏幕底部外侧,向上方快速反复滑动。必现蓝屏

* 这里注意:在笔操1分钟后就不会重现这个问题,不确定是不是windows  系统使用笔操作后1分钟内有什么操作,使用InjectTouchInput会导致蓝屏。如果有知道的朋友,给我普及下。

3:用windbg蓝屏日志工具分析了蓝屏日志,确定是模拟触摸出现了问题。

最新方案

需求一:对全局手势触摸,更换了新的技术方案,不使用RegisterPointerInputTarget和InjectTouchInput。其实想做一个全局手势触摸监听软件,无非就是想得到多点触摸的坐标值。新的技术方案,改用了GetRawInputDeviceInfo+HidP_GetScaledUsageValue来获取触摸设备输入的坐标点。

需求二:只能保持原有方案。未能解决。不过这个功能使用的人数不多,只能忍忍。

使用到的一些东西

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值