Simply put; the IInputDeviceEnumerator interface defines the main entry point for InputMapper into the input device plugin. It is also responsible for discovery of new devices it is meant to handle as well as disposal of removed devices that it has handled.

IInputDeviceEnumerator must implement a proper IDisposable pattern that cleans up and disposes of any IInputDevice’s in it’s devices collection as well as closes any active threads. Failure for plugins to fully handle disposal will result in IM not being able to shutdown properly on user requested exit.