java父系调用子系,获取usb设备父系或子代
///
/// 獲取設備父系
///
///
///
private static bool TryGetDriverIdParent(string driver, out string resultDeviceID)
{
resultDeviceID = "";
try
{
int CM_LOCATE_DEVNODE_NORMAL = 0x00000000;
int CR_SUCCESS = 0x00000000;
UInt32 parentInst;
;
;
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;
}
];
//獲取設備id字符串地址
apiResult = Win32.CM_Get_Device_ID(parentInst, ptrInstanceBuf, pLen, );
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)]
);
[DllImport("setupapi.dll", CharSet = CharSet.Unicode)]
public static extern int CM_Get_Device_ID(UInt32 dnDevInst, char[] buffer, int bufferLen, int flags);
總結
以上是生活随笔為你收集整理的java父系调用子系,获取usb设备父系或子代的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 链表删除头结点,删除链表的倒数
- 下一篇: matlab编程数学基础,数学软件 Ma