佛来寺 2021-07-02 15:16 采纳率: 0%
浏览 143

怎么用HidLibrary打开扫描枪,试了一下只能打开写,不能打开读功能,无法读取扫描的码?

        private static IntPtr OpenDeviceIO(string devicePath, DeviceMode deviceMode, uint deviceAccess, ShareMode shareMode)
        {
            var security = new NativeMethods.SECURITY_ATTRIBUTES();
            var flags = 0;
 
            if (deviceMode == DeviceMode.Overlapped) flags = NativeMethods.FILE_FLAG_OVERLAPPED;
 
            security.lpSecurityDescriptor = IntPtr.Zero;
            security.bInheritHandle = true;
            security.nLength = Marshal.SizeOf(security);
 
            return NativeMethods.CreateFile(devicePath, deviceAccess, (int)shareMode, ref security, NativeMethods.OPEN_EXISTING, flags, hTemplateFile: IntPtr.Zero);
        }

参数:deviceMode=HidLibrary.DeviceMode.NonOverlapped, deviceAccess=2147483648(GENERIC_READ), shareMode=HidLibrary.ShareMode.ShareRead | HidLibrary.ShareMode.ShareWrite

return返回的CreateFile值不对。

  • 写回答

1条回答 默认 最新

  • stoee 2022-06-20 16:05
    关注

    按微软官方文档的说法,其实只能shareMode=0,因为Windows对HID鼠标键盘设备独占,USB扫码枪属于HID键盘

    评论

报告相同问题?

悬赏问题

  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑
  • ¥15 上传图片时提交的存储类型
  • ¥15 VB.NET如何绘制倾斜的椭圆
  • ¥15 arbotix没有/cmd_vel话题
  • ¥15 odoo17的分包重新供应路线如何设置?可从销售订单中实时直接触发采购订单或相关单据
  • ¥15 用C语言怎么判断字符串的输入是否符合设定?