protected override void WndProc(ref Message m)
{
try
{
if (m.Msg == ScpDevice.WM_DEVICECHANGE)
{
var type = m.WParam.ToInt32();
switch (type)
{
case ScpDevice.DBT_DEVICEARRIVAL:
case ScpDevice.DBT_DEVICEQUERYREMOVE:
case ScpDevice.DBT_DEVICEREMOVECOMPLETE:
ScpDevice.DEV_BROADCAST_HDR hdr;
hdr =
(ScpDevice.DEV_BROADCAST_HDR)
Marshal.PtrToStructure(m.LParam, typeof (ScpDevice.DEV_BROADCAST_HDR));
if (hdr.dbch_devicetype == ScpDevice.DBT_DEVTYP_DEVICEINTERFACE)
{
ScpDevice.DEV_BROADCAST_DEVICEINTERFACE_M deviceInterface;
deviceInterface =
(ScpDevice.DEV_BROADCAST_DEVICEINTERFACE_M)
Marshal.PtrToStructure(m.LParam,
typeof (ScpDevice.DEV_BROADCAST_DEVICEINTERFACE_M));
var Class = "{" + new Guid(deviceInterface.dbcc_classguid).ToString().ToUpper() + "}";
var path = new string(deviceInterface.dbcc_name);
path = path.Substring(0, path.IndexOf('\0')).ToUpper();
rootHub.Notify((ScpDevice.Notified) type, Class, path);
}
break;
}
}
}
catch (Exception ex)
{
Log.ErrorFormat("Unexpected error while processing window messages: {0}", ex);
}
base.WndProc(ref m);
}