/// <summary> /// Convert (WM_DEVICECHANGE)WM_MESSAGE pointer to data structure /// </summary> /// <param name="lParam"></param> /// <returns></returns> protected string PointerToDevicePath(IntPtr lParam) { Native.DEV_BROADCAST_DEVICEINTERFACE devBroadcastDeviceInterface = new Native.DEV_BROADCAST_DEVICEINTERFACE(); Native.DEV_BROADCAST_HDR devBroadcastHeader = new Native.DEV_BROADCAST_HDR(); Marshal.PtrToStructure(lParam, devBroadcastHeader); Int32 stringSize = Convert.ToInt32((devBroadcastHeader.dbch_size - 32) / 2); Array.Resize(ref devBroadcastDeviceInterface.dbcc_name, stringSize); Marshal.PtrToStructure(lParam, devBroadcastDeviceInterface); return(new String(devBroadcastDeviceInterface.dbcc_name, 0, stringSize)); }
/// <summary> /// Convert (WM_DEVICECHANGE)WM_MESSAGE pointer to data structure /// </summary> /// <param name="lParam"></param> /// <returns></returns> protected string PointerToDevicePath(IntPtr lParam) { Native.DEV_BROADCAST_DEVICEINTERFACE devBroadcastDeviceInterface = new Native.DEV_BROADCAST_DEVICEINTERFACE(); Native.DEV_BROADCAST_HDR devBroadcastHeader = new Native.DEV_BROADCAST_HDR(); Marshal.PtrToStructure(lParam, devBroadcastHeader); Int32 stringSize = Convert.ToInt32((devBroadcastHeader.dbch_size - 32) / 2); Array.Resize(ref devBroadcastDeviceInterface.dbcc_name, stringSize); Marshal.PtrToStructure(lParam, devBroadcastDeviceInterface); return new String(devBroadcastDeviceInterface.dbcc_name, 0, stringSize); }