首页 > 代码库 > 获取usb设备父系或子代
获取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);
获取usb设备父系或子代
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。