//Name:     HookHardwareNotifications
 //Inputs:   Handle to a window or service,
 //          Boolean specifying true if the handle belongs to a window
 //Outputs:  false if fail, otherwise true
 //Errors:   This method may log the following errors.
 //          NONE
 //Remarks:  Allow a window or service to receive ALL hardware notifications.
 //          NOTE: I have yet to figure out how to make this work properly
 //          for a service written in C#, though it kicks butt in C++.  At any
 //          rate, it works fine for windows forms in either.
 public bool HookHardwareNotifications(IntPtr callback, bool UseWindowHandle)
 {
     try
     {
         Native.DEV_BROADCAST_DEVICEINTERFACE dbdi = new Native.DEV_BROADCAST_DEVICEINTERFACE();
         dbdi.dbcc_size       = Marshal.SizeOf(dbdi);
         dbdi.dbcc_reserved   = 0;
         dbdi.dbcc_devicetype = Native.DBT_DEVTYP_DEVICEINTERFACE;
         if (UseWindowHandle)
         {
             Native.RegisterDeviceNotification(callback,
                                               dbdi,
                                               Native.DEVICE_NOTIFY_ALL_INTERFACE_CLASSES |
                                               Native.DEVICE_NOTIFY_WINDOW_HANDLE);
         }
         else
         {
             Native.RegisterDeviceNotification(callback,
                                               dbdi,
                                               Native.DEVICE_NOTIFY_ALL_INTERFACE_CLASSES |
                                               Native.DEVICE_NOTIFY_SERVICE_HANDLE);
         }
         return(true);
     }
     catch (Exception ex)
     {
         string err = ex.Message;
         return(false);
     }
 }
Example #2
0
 //Name:     HookHardwareNotifications
 //Inputs:   Handle to a window or service, 
 //          Boolean specifying true if the handle belongs to a window
 //Outputs:  false if fail, otherwise true
 //Errors:   This method may log the following errors.
 //          NONE
 //Remarks:  Allow a window or service to receive ALL hardware notifications.
 //          NOTE: I have yet to figure out how to make this work properly
 //          for a service written in C#, though it kicks butt in C++.  At any
 //          rate, it works fine for windows forms in either.
 public bool HookHardwareNotifications(IntPtr callback, bool UseWindowHandle)
 {
     try
     {
         Native.DEV_BROADCAST_DEVICEINTERFACE dbdi = new Native.DEV_BROADCAST_DEVICEINTERFACE();
         dbdi.dbcc_size = Marshal.SizeOf(dbdi);
         dbdi.dbcc_reserved = 0;
         dbdi.dbcc_devicetype = Native.DBT_DEVTYP_DEVICEINTERFACE;
         if (UseWindowHandle)
         {
             Native.RegisterDeviceNotification(callback, 
                 dbdi, 
                 Native.DEVICE_NOTIFY_ALL_INTERFACE_CLASSES | 
                 Native.DEVICE_NOTIFY_WINDOW_HANDLE);
         }
         else
         {
             Native.RegisterDeviceNotification(callback, 
                 dbdi, 
                 Native.DEVICE_NOTIFY_ALL_INTERFACE_CLASSES | 
                 Native.DEVICE_NOTIFY_SERVICE_HANDLE);
         }
         return true;
     }
     catch (Exception ex)
     {
         string err = ex.Message;
         return false;
     }
 }