private static void WndHandler(ref DeviceEventInfo m) { if (m.HARDWAREPROFILECHANGE != null) { DebugLogger.WriteLine("Hardware profile changed: {0}", m.HARDWAREPROFILECHANGE.ToString()); } if (m.DEVICEEVENT != null) { DebugLogger.WriteLine("Device Event: {0}", m.DEVICEEVENT.ToString()); } }
private static DeviceEventInfo TransformDeviceEvent(ref Message m) { var tm = new DeviceEventInfo { DEVICEEVENT = (ServicesAPI.SERVICE_CONTROL_DEVICEEVENT_Control)(int) m.WParam }; DEV_BROADCAST_HDR dbh = (DEV_BROADCAST_HDR)Marshal.PtrToStructure(m.LParam, typeof(DEV_BROADCAST_HDR)); tm.DeviceType = dbh.dbch_devicetype; switch (dbh.dbch_devicetype) { case dbch_devicetype.DBT_DEVTYP_DEVICEINTERFACE: DEV_BROADCAST_DEVICEINTERFACE dbdi = (DEV_BROADCAST_DEVICEINTERFACE)Marshal.PtrToStructure(m.LParam, typeof(DEV_BROADCAST_DEVICEINTERFACE)); tm.DeviceId = cstr_to_string(dbdi.dbcc_name); tm.DeviceName = ConvertDbccNameToFriendlyName(cstr_to_string(dbdi.dbcc_name)); break; case dbch_devicetype.DBT_DEVTYP_HANDLE: DEV_BROADCAST_HANDLE dbbh = (DEV_BROADCAST_HANDLE)Marshal.PtrToStructure(m.LParam, typeof(DEV_BROADCAST_HANDLE)); tm.DeviceName = "Handle Id " + dbbh.dbch_handle.ToString(); break; case dbch_devicetype.DBT_DEVTYP_OEM: DEV_BROADCAST_OEM dbo = (DEV_BROADCAST_OEM)Marshal.PtrToStructure(m.LParam, typeof(DEV_BROADCAST_OEM)); tm.DeviceName = string.Format("OEM: {0} Value: {1}", dbo.dbco_identifier, dbo.dbco_suppfunc); break; case dbch_devicetype.DBT_DEVTYP_PORT: DEV_BROADCAST_PORT dbp = (DEV_BROADCAST_PORT)Marshal.PtrToStructure(m.LParam, typeof(DEV_BROADCAST_PORT)); IntPtr pData = (IntPtr)(m.LParam.ToInt32() + dbp.dbcp_size); // (*1) IntPtr offsetDbcpName = Marshal.OffsetOf(typeof(DEV_BROADCAST_PORT), "dbcp_name"); int len = (int)pData - (int)offsetDbcpName; tm.DeviceName = Marshal.PtrToStringAuto(offsetDbcpName, len); break; case dbch_devicetype.DBT_DEVTYP_VOLUME: DEV_BROADCAST_VOLUME dbv = (DEV_BROADCAST_VOLUME)Marshal.PtrToStructure(m.LParam, typeof(DEV_BROADCAST_VOLUME)); tm.DeviceName = dbv.dbcv_unitmask.ToString(); if (dbv.dbcv_flags != dbcv_flags.None) { tm.DeviceName += " " + dbv.dbcv_flags.ToString(); } break; } //dbh.dbch_devicetype == dbch_devicetype. //IntPtr pData = (IntPtr)(m.LParam.ToInt32() + Marshal.SizeOf(ps)); // (*1) return(tm); }
private static DeviceEventInfo TransformDeviceEvent(ref Message m) { var tm = new DeviceEventInfo { DEVICEEVENT = (ServicesAPI.SERVICE_CONTROL_DEVICEEVENT_Control)(int)m.WParam }; DEV_BROADCAST_HDR dbh = (DEV_BROADCAST_HDR)Marshal.PtrToStructure(m.LParam, typeof(DEV_BROADCAST_HDR)); tm.DeviceType = dbh.dbch_devicetype; switch (dbh.dbch_devicetype) { case dbch_devicetype.DBT_DEVTYP_DEVICEINTERFACE: DEV_BROADCAST_DEVICEINTERFACE dbdi = (DEV_BROADCAST_DEVICEINTERFACE)Marshal.PtrToStructure(m.LParam, typeof(DEV_BROADCAST_DEVICEINTERFACE)); tm.DeviceId = cstr_to_string(dbdi.dbcc_name); tm.DeviceName = ConvertDbccNameToFriendlyName(cstr_to_string(dbdi.dbcc_name)); break; case dbch_devicetype.DBT_DEVTYP_HANDLE: DEV_BROADCAST_HANDLE dbbh = (DEV_BROADCAST_HANDLE)Marshal.PtrToStructure(m.LParam, typeof(DEV_BROADCAST_HANDLE)); tm.DeviceName = "Handle Id " + dbbh.dbch_handle.ToString(); break; case dbch_devicetype.DBT_DEVTYP_OEM: DEV_BROADCAST_OEM dbo = (DEV_BROADCAST_OEM)Marshal.PtrToStructure(m.LParam, typeof(DEV_BROADCAST_OEM)); tm.DeviceName = string.Format("OEM: {0} Value: {1}", dbo.dbco_identifier, dbo.dbco_suppfunc); break; case dbch_devicetype.DBT_DEVTYP_PORT: DEV_BROADCAST_PORT dbp = (DEV_BROADCAST_PORT)Marshal.PtrToStructure(m.LParam, typeof(DEV_BROADCAST_PORT)); IntPtr pData = (IntPtr)(m.LParam.ToInt32() + dbp.dbcp_size); // (*1) IntPtr offsetDbcpName = Marshal.OffsetOf(typeof(DEV_BROADCAST_PORT), "dbcp_name"); int len = (int)pData - (int)offsetDbcpName; tm.DeviceName = Marshal.PtrToStringAuto(offsetDbcpName, len); break; case dbch_devicetype.DBT_DEVTYP_VOLUME: DEV_BROADCAST_VOLUME dbv = (DEV_BROADCAST_VOLUME)Marshal.PtrToStructure(m.LParam, typeof(DEV_BROADCAST_VOLUME)); tm.DeviceName = dbv.dbcv_unitmask.ToString(); if (dbv.dbcv_flags != dbcv_flags.None) { tm.DeviceName += " " + dbv.dbcv_flags.ToString(); } break; } //dbh.dbch_devicetype == dbch_devicetype. //IntPtr pData = (IntPtr)(m.LParam.ToInt32() + Marshal.SizeOf(ps)); // (*1) return tm; }
private static void WndHandler(ref DeviceEventInfo m) { if (m.HARDWAREPROFILECHANGE != null) DebugLogger.WriteLine("Hardware profile changed: {0}", m.HARDWAREPROFILECHANGE.ToString()); if (m.DEVICEEVENT != null) DebugLogger.WriteLine("Device Event: {0}", m.DEVICEEVENT.ToString()); }