Condividi tramite


Descrittori del sistema operativo Microsoft per dispositivi USB

Microsoft fornisce un set di classi di dispositivi proprietari e descrittori USB, denominati descrittori del sistema operativo Microsoft (MOD).

A causa della rapida comparsa di dispositivi che contengono più funzioni hardware, molti produttori trovano che i loro dispositivi non si adattano comodamente in nessuna delle classi di dispositivi usb (Universal Serial Bus) correnti. Questo priva tali produttori di una delle caratteristiche più interessanti della tecnologia USB: la standardizzazione del software driver (secondo la classe del dispositivo). Windows fornisce driver di classe nativi per la maggior parte dei dispositivi appartenenti a classi di dispositivi USB standard e questi driver consentono agli utenti finali di collegare facilmente tali dispositivi al computer senza dover installare software speciale.

Per supportare i produttori i cui dispositivi non rientrano nel set corrente di classi di dispositivi USB, Microsoft ha sviluppato un set di classi di dispositivi proprietari e descrittori USB, denominati descrittori del sistema operativo Microsoft. Sia le applicazioni che il software di sistema possono identificare i dispositivi appartenenti alle classi di dispositivi definite da Microsoft eseguendo una query sui dispositivi per determinare se supportano i MOD.

I descrittori del sistema operativo Microsoft hanno usi importanti oltre a supportare le classi di dispositivi proprietari. In particolare, forniscono un meccanismo per derivare il massimo vantaggio dal firmware del dispositivo. Con l'aiuto dei descrittori del sistema operativo Microsoft, è possibile usare il firmware per distribuire file della Guida, icone speciali, URL (Uniform Resource Locator), impostazioni del Registro di sistema e altri dati necessari per semplificare l'installazione e migliorare la soddisfazione dei clienti. In alcuni casi, è possibile rinunciare ai supporti di archiviazione, ad esempio dischi floppy e CD, semplificando il recapito e il supporto degli aggiornamenti.

Supporto dei sistemi operativi

I descrittori del sistema operativo Microsoft 1.0 sono supportati in:

  • Windows 11
  • Windows 10
  • Windows 8.1
  • Windows 8
  • Windows 7
  • Windows Vista, Windows Server 2008
  • Windows XP con Service Pack 1 (SP1), Windows Server 2003

I descrittori del sistema operativo Microsoft 2.0 sono supportati in:

  • Windows 11
  • Windows 10
  • Windows 8.1

Perché Windows rilascia una richiesta di descrittore di stringa per indicizzare 0xEE?

I dispositivi che supportano i descrittori del sistema operativo Microsoft devono archiviare un descrittore di stringa USB speciale nel firmware in corrispondenza dell'indice di stringa fisso di 0xEE. Questo descrittore di stringa viene chiamato descrittore stringa del sistema operativo Microsoft.

  • La sua presenza indica che il dispositivo contiene uno o più descrittori di funzionalità del sistema operativo.
  • Contiene i dati necessari per recuperare i descrittori di funzionalità del sistema operativo associati.
  • Contiene un campo di firma che differenzia il descrittore della stringa del sistema operativo da altre stringhe che gli IHD possono scegliere di archiviare in 0xEE.
  • Contiene un numero di versione che consente revisioni future dei descrittori del sistema operativo Microsoft.

Se non è presente alcun descrittore di stringa in 0xEE o il descrittore di stringa in corrispondenza di tale indice non è un descrittore di stringa del sistema operativo valido, Windows presuppone che il dispositivo non contenga descrittori di funzionalità del sistema operativo.

Quando un nuovo dispositivo viene collegato a un computer per la prima volta, un sistema operativo che supporta i descrittori del sistema operativo Microsoft richiede il descrittore di stringa in corrispondenza dell'indice 0xEE. Il descrittore stringa del sistema operativo Microsoft contiene un campo di firma incorporato usato dal sistema operativo per distinguerlo da altre stringhe che potrebbero trovarsi in corrispondenza dell'indice 0xEE. La presenza di un descrittore di stringa contenente il campo della firma appropriato in corrispondenza dell'indice 0xEE indica al sistema operativo che il dispositivo supporta i descrittori del sistema operativo Microsoft. Il descrittore di stringhe del sistema operativo Microsoft fornisce anche al sistema operativo informazioni sulla versione.

Il sistema operativo esegue una query per il descrittore di stringa in corrispondenza dell'indice 0xEE durante l'enumerazione del dispositivo, prima del driver per il caricamento del dispositivo, che potrebbe causare malfunzionamenti di alcuni dispositivi. Tali dispositivi non sono supportati dalle versioni del sistema operativo Windows che supportano i descrittori del sistema operativo Microsoft.

Se un dispositivo non contiene un descrittore di stringa valido in corrispondenza dell'indice 0xEE, deve rispondere con un pacchetto di blocco (in altre parole, un pacchetto che contiene un identificatore di pacchetto di tipo STALL), descritto nella sezione "Request Errors" della specifica del bus seriale universale. Se il dispositivo non risponde con un pacchetto di blocco, il sistema rilascia un pacchetto di reimpostazione zero a terminazione singola nel dispositivo, per consentirne il ripristino dallo stato bloccato (solo Windows XP).

Dopo che il sistema operativo richiede un descrittore stringa del sistema operativo Microsoft da un dispositivo, crea la chiave del Registro di sistema seguente:

HLKM\SYSTEM\CurrentControlSet\Control\UsbFlags\vvvvpppprrrrr

Il sistema operativo crea una voce del Registro di sistema, denominata osvc, in questa chiave del Registro di sistema che indica se il dispositivo supporta i descrittori del sistema operativo Microsoft. Se il dispositivo non fornisce una risposta valida la prima volta che il sistema operativo esegue una query per un descrittore stringa del sistema operativo Microsoft, il sistema operativo non effettua ulteriori richieste per tale descrittore.

Per le voci del Registro di sistema in tale chiave, vedi Voci del Registro di sistema del dispositivo USB.

Per altre informazioni, vedere Specifica descrittori di Microsoft OS 1.0.

Quali tipi di descrittori di funzionalità del sistema operativo supporta Windows?

Tutte le informazioni da archiviare come descrittore di funzionalità devono essere conformi a uno dei formati standard definiti da Microsoft. Altri descrittori di funzionalità non possono essere definiti o implementati senza il consenso di Microsoft. Microsoft ha definito i descrittori di funzionalità seguenti:

  • ID compatibilità esteso. Windows usa codici di classe e sottoclasse per individuare il driver predefinito appropriato per un dispositivo USB. Tuttavia, il gruppo di lavoro del dispositivo USB deve allocare questi codici. Ciò significa che i dispositivi che implementano nuovi tipi di funzionalità spesso non hanno ancora codici di classe e sottoclasse appropriati, quindi Windows non può usare i codici per selezionare un driver predefinito. IHV possono aggirare questo problema archiviando le informazioni nel firmware come descrittore di funzionalità del sistema operativo con ID compatibile esteso. Windows può quindi recuperare queste informazioni quando il dispositivo è collegato e usarlo per determinare quale driver predefinito caricare.
  • Proprietà estese. Attualmente, esistono due livelli in cui è possibile dichiarare le proprietà per un dispositivo USB: livello di classe o devnode. Il descrittore di funzionalità del sistema operativo delle proprietà estese consente a un fornitore di archiviare più proprietà, ad esempio pagine della Guida, URL e icone nel firmware del dispositivo.