/// <summary> ///获取设备父系 /// </summary> /// <param name="driver"></param> /// <returns></returns> private static bool TryGetDriverIdParent(string driver, out stringresultDeviceID) { 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(refcurInst, driver, CM_LOCATE_DEVNODE_NORMAL); if (apiResult !=CR_SUCCESS) { return false; } apiResult = Win32.CM_Get_Parent(outparentInst, (UInt32)curInst, CM_LOCATE_DEVNODE_NORMAL); if (apiResult !=CR_SUCCESS) { return false; } apiResult = Win32.CM_Get_Device_ID_Size(outpLen, 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, intulFlags); [DllImport("setupapi.dll")] public static extern int CM_Get_Parent(out UInt32 pdnDevInst, UInt32 dnDevInst, intulFlags); [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设备父系或子代
免责声明:文章转载自《获取usb设备父系或子代》仅用于学习参考。如对内容有疑问,请及时联系本站处理。
上篇Jquery delegate的理解【算法】滑动窗口三步走下篇
宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=