Идентификация и класификация на устройството
Компютърна архитектура
PC компоненти
Интерфейси
Най-четени
Идентификация и класификация на устройството
Когато дадено устройство е свързано (както се съобщава от хъба), USB системата чете неговите дескриптори, за да определи кои софтуерни компоненти да изтегли и кого да уведоми, когато пристигне ново устройство. Всяко USB устройство трябва да има дескриптори на устройство, конфигурация, интерфейс и крайна точка. Структурата на дескрипторите е описана подробно по-долу; тук се разглеждат само фрагменти от дескрипторите, участващи в идентификацията на устройството.
Дескрипторът на устройството има 2-байтови полета, които идентифицират устройството като цяло:
- idVendor - идентификатор на доставчика (VID - Vendor Id), зададен от USB-IF;
- idProduct и bcdDevice - идентификатор на продукта (PID - Product Id) и неговата версия (DID - Device Id), определена от производителя.
Освен това може да има връзки към дескриптори на низове, които съдържат текстовите имена на производителя и устройството, както и неговия сериен номер. Тези текстови описания са с произволна дължина и формат (но кодирани в UNICODE) и тези низови дескриптори са посочени от индекси в полетата iManufacturer, iProduct и iSerialNumber.
За да се определи целта, възможностите и протоколите, поддържани от дадено устройство и неговите индивидуални интерфейси, класът, подкласът и кодовете на протокола са посочени в неговите дескриптори. Кодовете на клас, подклас и протокол са пряко свързани с интерфейсите - те могат да се използват за избор (автоматично от операционната система) на подходящия драйвер и клиентско приложение. Тези кодове се съдържат в интерфейсните дескриптори, поддържани отустройство. "Обикновените" кодове в диапазона 01h-FEh се задават от USB-IF, но само за вече стандартизирани устройства. Стойността 00h означава липса на дефиниция, FFh е запазена за конкретна цел от разработчиците и производителите на устройства. Съобщението с естествен код кара устройството да отговаря на стандартните изисквания за интерфейси с посочения протокол за даден клас и подклас, включително изпълнение на всички специфични заявки и докладване на специфични дескриптори, ако има такива. В същото време е разрешено и разширяването на възможностите на устройството. Идентификаторите VID и PID се използват за свързване на нестандартно устройство с неговия драйвер.
Кодовете на класа, подкласа и протокола присъстват не само в дескрипторите на интерфейса, но и в дескриптора на устройството. Тук кодът на клас нула означава, че устройството се състои от набор от независими интерфейси, на всеки от които може да бъде присвоен собствен клас, подклас и код на протокол. В същото време както подкласът, така и протоколът на устройството също са нулеви (т.е. устройството като цяло не може да се характеризира по стандартен начин). „Редовният“ код на класа на устройството означава, че неговите интерфейси не са независими (обобщени интерфейси). В този случай кодът на подкласа (също от USB-IF) е допълнителен квалификатор. „Обичаен“ код на протокол означава, че устройството поддържа всички протоколи, необходими за устройство от този клас и подклас. Нулев код на протокола на устройството означава, че протоколите могат да се дефинират само за отделни интерфейси.
Класификацията на USB устройствата не се отнася до потребителските функции, изпълнявани от устройствата, а до средствата за комуникация между хоста и устройствата. Класификацията ви позволява да обобщите характеристиките на интерфейсите, докато, като правило, кодът на протокола определясъстав, тип крайни точки и правила за тяхното използване, а подкласът определя форматите на данните, предавани през определени крайни точки. Класификацията ви позволява да намалите разнообразието (многообразието) от драйвери, необходими за различни устройства - драйверът може да се абстрахира от конкретната функция на устройството, която обслужва. Операционната система асоциира клиентските драйвери, които има, със специфични интерфейси на устройства, като използва клас/подклас и кодове на протоколи, както и идентификатори на производителя, продукта и версията.