/// <summary>
 /// 允许一个窗口或者服务接收所有硬件的通知
 /// 注:目前还没有找到一个比较好的方法来处理如果通知服务。
 /// </summary>
 /// <param name="callback"></param>
 /// <param name="UseWindowHandle"></param>
 /// <returns></returns>
 public bool AllowNotifications(IntPtr callback, bool UseWindowHandle)
 {
     try
     {
         Externs.DEV_BROADCAST_DEVICEINTERFACE dbdi = new Externs.DEV_BROADCAST_DEVICEINTERFACE();
         dbdi.dbcc_size       = Marshal.SizeOf(dbdi);
         dbdi.dbcc_reserved   = 0;
         dbdi.dbcc_devicetype = Externs.DBT_DEVTYP_DEVICEINTERFACE;
         if (UseWindowHandle)
         {
             Externs.RegisterDeviceNotification(callback, dbdi, Externs.DEVICE_NOTIFY_ALL_INTERFACE_CLASSES | Externs.DEVICE_NOTIFY_WINDOW_HANDLE);
         }
         else
         {
             Externs.RegisterDeviceNotification(callback, dbdi, Externs.DEVICE_NOTIFY_ALL_INTERFACE_CLASSES | Externs.DEVICE_NOTIFY_SERVICE_HANDLE);
         }
         return(true);
     }
     catch (Exception ex)
     {
         string err = ex.Message;
         return(false);
     }
 }