C# 访问USB(HID)设备方法 (转)

依次使用一下函数:

1、static public extern void HidD_GetHidGuid (ref System.Guid HidGuid);

获取HID的全局GUID

2、static public extern IntPtr SetupDiGetClassDevs(ref System.Guid ClassGuid,

    string Enumerator,

    int hwndParent,

    int Flags);

获取所有hid句柄

3、static public extern int SetupDiEnumDeviceInterfaces(IntPtr DeviceInfoSet,

    int DeviceInfoData,

    ref System.Guid InterfaceClassGuid,

    int MemberIndex,

    ref SP_DEVICE_INTERFACE_DATA DeviceInterfaceData);

  检测集合每个接口,成功返回true

4、 static public extern bool SetupDiGetDeviceInterfaceDetail(IntPtr DeviceInfoSet,

    ref SP_DEVICE_INTERFACE_DATA DeviceInterfaceData,

    IntPtr DeviceInterfaceDetailData,

    int DeviceInterfaceDetailDataSize,

    ref int RequiredSize,

    IntPtr DeviceInfoData);

  获取接口信息,第一次失败 但可获得信息缓冲区大小

5、 static public extern bool SetupDiGetDeviceInterfaceDetail(IntPtr DeviceInfoSet,

    ref SP_DEVICE_INTERFACE_DATA DeviceInterfaceData,

    IntPtr DeviceInterfaceDetailData,

    int DeviceInterfaceDetailDataSize,

    ref int RequiredSize,

    IntPtr DeviceInfoData);

  第二次获取

循环 3、4、5把所有的设备读取,把所有设备路径名存放在一个数组里devicePathName

6、 CreateFile(string lpFileName,

    uint dwDesiredAccess,

    uint dwShareMode,

    ref SECURITY_ATTRIBUTES lpSecurityAttributes,

    int dwCreationDisposition,

    uint dwFlagsAndAttributes,

    int hTemplateFile);

  根据devicePathName链接文件

以上步骤成功就可以读写USB了

时间: 2024-10-10 07:54:55

C# 访问USB(HID)设备方法 (转)的相关文章

C# 访问USB(HID)设备

原文:C# 访问USB(HID)设备 二话不说,直接给代码,如果您真想做这方面的东西,还是稍微研究下,没有现成的好类用,就需要自己了解其原理 //引用空间 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using S

Windows与自定义USB HID设备通信说明.

1 .   所使用的典型 Windows API CreateFile ReadFile WriteFile 以下函数是 DDK 的内容: HidD_SetFeature HidD_GetFeature HidD_SetOutputReport HidD_GetInputReport 其中, CreateFile 用于打开设备: ReadFile . HidD_GetFeature . HidD_GetInputReport 用于设备到主机方向的数据通信: WriteFile . HidD_Se

stm32 USB hid设备与PC进行双向数据传输时PC不识别USB设备

stm32 USB hid设备与PC进行双向数据传输时PC不识别USB设备,或者开始时识别,拔出后再插入就没有反应了,就连鼠标U盘也没有反应. 我的问题是,我安装了VMware虚拟机,并进行USB设备的分配,使得虚拟机系统也识别USB设备. 所以,解决问题的办法如下: 在<属性>中选择禁用. 然后把下面的VMware Workstation Server 也禁用了.重启电脑就OK了.

[BLE--HID]USB HID设备类定义

简述 HID设备,即人机交互设备,常见的有鼠标,键盘,游戏手柄,等等.一般有线方式都是通过USB连线连接到机器设备,作为用户输入设备.在蓝牙技术中,HID设备的接入就是无线的了.不过HID的相关定义当然还是一样的,不然设备驱动,兼容等问题都会有很多麻烦了.蓝牙中有HID, HOGP profile,但是只是在蓝牙数据通信上做的规范,HID具体含义相关,还是需要看USB相关的HID文档. USB设备类? USB设备可以在启动时,或者是在之后的连接状态下,都能够被主机进行配置.USB设备种类是非常多

转 关于USB HID报告描述符

原文地址 USB HID报告及报告描述符简介 在USB中,USBHOST是通过各种描述符来识别设备的,有设备描述符,配置描述符,接口描述符,端点描述符,字符串描述符,报告描述符等等.USB报 告描述符(ReportDescriptor)是HID设备中的一个描述符,它是比较复杂的一个描述符.USBHID设备是通过报告来给传送数据的,报告 有输入报告和输出报告.输入报告是USB设备发送给主机的,例如USB鼠标将鼠标移动和鼠标点击等信息返回给电脑,键盘将按键数据数据返回给电脑等:输出 报告是主机发送在

USB HID报告及报告描述符简介

在USB中,USB HOST是通过各种描述符来识别设备的,有设备描述符,配置描述符,接口描述符,端点描述符,字符串描述符,报告描述符等等.USB报告描述符(Report Descriptor)是HID设备中的一个描述符,它是比较复杂的一个描述符.        USB HID设备是通过报告来给传送数据的,报告有输入报告和输出报告.输入报告是USB设备发送给主机的,例如USB鼠标将鼠标移动和鼠标点击等信息返回给电脑,键盘将按键数据数据返回给电脑等:输出报告是主机发送给USB设备的,例如键盘上的数字

Java访问USB设备

最近在用Java访问RDing设备,使用的是Java HID API.使用过程中发现一个问题,由于是嵌入式小白,不知道如何向USB设备发送report.于是想到可以看看自带的软件如何访问USB的.找到了一个叫做Bus Hound的软件.非常小,但是功能很全,可以看到电脑上所有USB设备的通信信息.如下图所示.这样就可以看到控制信息和读入读出信息.

控制器没有足够的带宽可利用为USB大容量存储设备的解决方法

伴随网盘时代的没落,最近刚入手了一个移动硬盘.现在的移动硬盘都是USB3.0,传输速度比USB2.0要快很多.但是链接笔记本电脑后发现传输速度在20MB/s左右,跟USB2.0速度差不多,并不能达到传说中70-80MB/s.而且刚插入电脑的时候会弹出提示“控制器没有足够的带宽可利用为USB大容量存储设备”. 其实这样可以看出,硬件是支持USB3.0的,那么问题肯定是在软件方面,所以自然而然就想到了驱动的问题,网上百度的USB3.0万能驱动貌似没有效果,后来使用了笔记本官网的USB3.0驱动就ok

ubuntu下virtualbox 虚拟xp 访问USB设备

 Ubuntu安装虚拟机,实现文件和USB的共享 Ubuntu下virtualbox 虚拟xp 访问USB设备