private String GetDeviceId() { String deviceId = null; Int32 bufferSize = 512; IntPtr buffer = Marshal.AllocHGlobal(bufferSize); Int32 errorCode = UsbDeviceWinApi.CM_Get_Device_ID(this.devInfoData.DevInst, buffer, bufferSize, 0); if (UsbDeviceWinApi.ERROR_SUCCESS == errorCode) { deviceId = Marshal.PtrToStringAuto(buffer); int slash = deviceId.LastIndexOf('\\'); if ((slash > 0) && (deviceId.LastIndexOf('-') > slash)) { UInt32 devInstParent; errorCode = UsbDeviceWinApi.CM_Get_Parent(out devInstParent, this.devInfoData.DevInst, 0); if (UsbDeviceWinApi.ERROR_SUCCESS == errorCode) { errorCode = UsbDeviceWinApi.CM_Get_Device_ID(devInstParent, buffer, bufferSize, 0); if (UsbDeviceWinApi.ERROR_SUCCESS == errorCode) { deviceId = Marshal.PtrToStringAuto(buffer); } else { this.TraceError("CM_Get_Device_ID", errorCode); } } else { this.TraceError("CM_Get_Parent", errorCode); } } } else { this.TraceError("CM_Get_Device_ID", errorCode); } Marshal.FreeHGlobal(buffer); return(deviceId); }
private String GetDeviceId(UInt32 devInst) { Int32 bufferSize = 1024; IntPtr buffer = Marshal.AllocHGlobal(bufferSize); String deviceId = null; Int32 errorCode = UsbDeviceWinApi.CM_Get_Device_ID(devInst, buffer, bufferSize, 0); if (UsbDeviceWinApi.CR_SUCCESS == errorCode) { deviceId = Marshal.PtrToStringAuto(buffer); } else { this.TraceError("CM_Get_Device_ID", errorCode); } Marshal.FreeHGlobal(buffer); return(deviceId); }