获取usb设备父系或子代

/// <summary>
        /// 获取设备父系
        /// </summary>
        /// <param name="driver"></param>
        /// <returns></returns>
        private static bool TryGetDriverIdParent(string driver, out string resultDeviceID)
        {
            resultDeviceID = "";
            try
            {
                int CM_LOCATE_DEVNODE_NORMAL = 0x00000000;
                int CR_SUCCESS = 0x00000000;
                UInt32 parentInst;
                int curInst = 0;
                int pLen = 0;
                int apiResult = Win32.CM_Locate_DevNodeA(ref curInst, driver, CM_LOCATE_DEVNODE_NORMAL);
                if (apiResult != CR_SUCCESS)
                {
                    return false;
                }
                apiResult = Win32.CM_Get_Parent(out parentInst, (UInt32)curInst, CM_LOCATE_DEVNODE_NORMAL);
                if (apiResult != CR_SUCCESS)
                {
                    return false;
                }
                apiResult = Win32.CM_Get_Device_ID_Size(out pLen, parentInst, CM_LOCATE_DEVNODE_NORMAL);
                if (apiResult != CR_SUCCESS)
                {
                    return false;
                }
                char[] ptrInstanceBuf = new char[33];
                //获取设备id字符串地址
                apiResult = Win32.CM_Get_Device_ID(parentInst, ptrInstanceBuf, pLen, 0);
                if (apiResult != CR_SUCCESS)
                {
                    return false;
                }
                resultDeviceID = new string(ptrInstanceBuf);
                return true;
            }
            catch (Exception ecException)
            {
                LogHelper.WriteErrorLog("获取父代" + ecException.Message, ecException);
                return false;
            }
        }

 [DllImport("setupapi.dll", SetLastError = true)]
        public static extern int CM_Locate_DevNodeA(ref int pdnDevInst, string pDeviceID, int ulFlags);
        [DllImport("setupapi.dll")]
        public static extern int CM_Get_Parent(out UInt32 pdnDevInst, UInt32 dnDevInst, int ulFlags);
        [DllImport("setupapi.dll", SetLastError = true)]
        public static extern int CM_Get_Device_ID_Size(out int pulLen, UInt32 dnDevInst, int flags = 0);
        [DllImport("setupapi.dll", CharSet = CharSet.Unicode)]
        public static extern int CM_Get_Device_ID(UInt32 dnDevInst, char[] buffer, int bufferLen, int flags);
时间: 2024-08-05 22:56:39

获取usb设备父系或子代的相关文章

C# 获取USB设备信息

WMI方式 using System; using System.Management; using System.Text.RegularExpressions; using System.Collections.Generic; namespace Splash.IO.PORTS { /// <summary> /// 即插即用设备信息结构 /// </summary> public struct PnPEntityInfo { public String PNPDeviceI

windows平台下获取USB设备&ldquo;身份证&rdquo;

当我们将U盘插入windows主机时,会提示安装驱动,那么windows是如何判断应该安装哪个版本的驱动的呢?在这里将用到设备的身份信息,包括厂商.型号.序列号等.大概半年前做了一个关于设备检测的小工程,看了很多资料和帖子,将获取设备身份信息的方法在此记录,方便以后使用. 0x01 USB设备有哪些身份信息 根据USB规范中的说明USB规范官方文档,供应商ID(VID)/产品识别码(PID)唯一标识一个设备,VID和PID都是两个字节长,其中,供应商ID(VID)由供应商向USB执行论坛申请,每

android获取USB设备的名称

1.注释内 .是三星设备可能不支持,需要更换的代码. 2.mUsbManager.是getSystemService(Context.USB_SERVICE)获的. 3. 从stackoverflow摘过来的.源地址找不到咧. protected static final int STD_USB_REQUEST_GET_DESCRIPTOR = 0x06;        // http://libusb.sourceforge.net/api-1.0/group__desc.html      

C#:基于WMI查询USB设备

来源:http://blog.csdn.net/jhqin/article/details/6734673 /* ---------------------------------------------------------- 文件名称:WMIUsbQuery.cs 作者:秦建辉 MSN:[email protected] QQ:36748897 博客:http://blog.csdn.net/jhqin 开发环境: Visual Studio V2010 .NET Framework 4

USB设备驱动开发之远程访问USB设备(二 USB设备虚拟端)

By Fanxiushu 2016-05-22 转载或引用请注明原始作者 接上文, 在处理好USB数据采集端的问题之后,接下来进入核心的部分,虚拟USB设备端的开发工作. 上文简单介绍过,需要开发虚拟总线驱动来模拟USB设备. 所谓虚拟总线驱动,就是安装于System系统设备下的一个驱动,由PnP管理器创建出一个虚拟的总线PDO设备, 我们的虚拟总线驱动Attach到这个PDO上,形成一个FDO功能设备驱动, 然后在我们的驱动中,根据需要创建出若干个 Child PDO设备, 这些 Child

C# 实现自定义的USB设备与上位机进行通信(上位机部分)

因为以前没用过USB,对USB也不了解,于是上网查了很多资料,不过网上的资料都是零零散散,不清不楚的,于是我自己总结了一下,下面几个链接是网上这么多零散资料里,我觉得比较有参考意义的. USB设备连接思路参考:https://www.cnblogs.com/xyzyx/articles/2959610.html#undefined 代码参考:http://www.cnblogs.com/xidongs/archive/2011/11/28/2266100.html# 收发数据参考:https:/

Linux下 USB设备驱动分析(原创)

之前做过STM32的usb HID复合设备,闲来看看linux下USB设备驱动是怎么一回事, 参考资料基于韦东山JZ2440开发板,以下,有错误欢迎指出. 1.准备知识 1.1USB相关概念: USB枚举过程:https://blog.csdn.net/go_str/article/details/80802452 USB其它概念: (1)usb是主从结构,usb的传输都是主机发起: (2)usb右四种传输类型:控制.批量.中断.实时传输. (3)usb数据是通过端点进行通讯的,0端点既能输入也

从linux usb设备节点来认识usb linux usb认识

首先从dmesg来认识usb: <6>[   19.610046] msm_hsic_host msm_hsic_host: Qualcomm EHCI Host Controller using HSIC <6>[   19.620391] msm_hsic_host msm_hsic_host: new USB bus registered, assigned bus number 1 <6>[   19.659942] msm_hsic_host msm_hsic

android 安卓APP获取手机设备信息和手机号码的代码示例

下面我从安卓开发的角度,简单写一下如何获取手机设备信息和手机号码 准备条件:一部安卓手机.手机SIM卡确保插入手机里.eclipse ADT和android-sdk开发环境 第一步:新建一个android工程(JinshanTest), 并需要在工程的AndroidManifest.xml文件中,添加权限 <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 图例: 第二步:新建一个工具类