Вы не слишком далеки от базы, но и не совсем правы. Каждое USB-устройство объявляет себя членом определенного предопределенного класса устройств - HID, COM, Mass Storage, веб-камеры и т. Д. Таким образом, эти устройства указывают ОС на то, что они соответствуют определенным четко определенным функциям. Операционная система загрузит универсальный драйвер для этого класса, и вы должны ожидать базовые функциональные возможности от этого устройства.
Однако многие производители устройств хотят отличаться от других и включают в себя некоторые расширенные функции, такие как автофокус, или специальные кнопки, или дополнительные форматы и т. Д. В этом случае производитель предоставит свой собственный драйвер, который зависит от VID / PID. Если этот драйвер установлен, ОС будет загружать его каждый раз, так что у вас будет новая блестящая функциональность с вашего нового устройства. Способ реализации пользовательского драйвера может отличаться. Это может быть полностью настраиваемый драйвер, или это может быть какая-то модификация драйвера по умолчанию с использованием метода, известного как «драйвер фильтра» в мире Microsoft, что-то похожее на вашу картинку. Как драйверы для конкретного продукта реализованы в Android / Linux, лучше спросить у людей на соответствующих форумах.