Using the DeviceManager the following callbacks can be registered and unregistered:
•DeviceFound / DeviceLost
•DeviceDisconnected / DeviceReconnected (see also Reconnect)
•DeviceListChanged (see also Update)
•InterfaceFound / InterfaceLost
•SystemFound / SystemLost
| // register DeviceFound callbackauto callbackHandle = deviceManager.RegisterDeviceFoundCallback([](const std::shared_ptr<peak::core::DeviceDescriptor>& foundDevice)
 {
 std::cout << "DeviceFound: " << foundDevice->DisplayName() << std::endl;
 });
 
 // unregister DeviceFound callback
 deviceManager.UnregisterDeviceFoundCallback(callbackHandle);
 | 
| // define DeviceFound callbackstatic void DeviceFoundDelegate(object o, DeviceDescriptor dev)
 {
 Console.WriteLine("C# static function DeviceFound: {0}", dev.DisplayName());
 }
 ...
 // register DeviceFound callback
 deviceManager.DeviceFoundEvent += DeviceFoundDelegate;
 
 // unregister DeviceFound callback
 deviceManager.DeviceFoundEvent -= DeviceFoundDelegate;
 | 
Also the following timeouts can be set:
•DeviceUpdate
•InterfaceUpdate
•SystemUpdate