Condividi tramite


Supplemento al modello di interfaccia MB

Il descrittore del sistema operativo Microsoft è suddiviso nei segmenti seguenti:

  • Un descrittore di stringa del sistema operativo Microsoft
  • Uno o più descrittori delle funzionalità del sistema operativo Microsoft

Per supportare il descrittore del sistema operativo, il dispositivo deve implementare il descrittore di stringa. Descrittore di stringhe

Il descrittore di stringa del sistema operativo Microsoft è una stringa archiviata in corrispondenza dell'indice stringa 0xEE. Il formato di questa stringa è ben definito.

Il descrittore di stringhe del sistema operativo Microsoft viene usato per raggiungere gli obiettivi seguenti

  • La presenza del descrittore di stringa del sistema operativo Microsoft indica al sistema operativo che il dispositivo contiene informazioni incorporate, sotto forma di descrittori delle funzionalità del sistema operativo Microsoft.
  • Il descrittore di stringa del sistema operativo Microsoft ha un campo di firma incorporato usato per distinguerlo da stringhe casuali che potrebbero verificarsi in un dispositivo in corrispondenza dell'indice stringa 0xEE.
  • Il descrittore di stringa del sistema operativo Microsoft ha anche un numero di versione incorporato che consente revisioni future del descrittore del sistema operativo Microsoft.

In un dispositivo è archiviato un solo descrittore di stringa del sistema operativo Microsoft. Le sezioni seguenti descrivono la struttura del descrittore di stringa del sistema operativo Microsoft e la relativa procedura di recupero. Struttura della stringa del sistema operativo

Ecco la struttura del descrittore di stringa:

Struttura del descrittore di stringhe

Campo Lunghezza (byte) Valore Descrizione

bLength

1

0x12

Lunghezza del descrittore

bDescriptorType

1

0x03

Descrittore di stringhe

qwSignature

14

"MSFT100"

Campo firma (4D00530046005400310030003000)

bMS_VendorCode

1

Codice fornitore

Codice fornitore per recuperare altri descrittori di funzionalità del sistema operativo

bPad

1

0x00

Campo di riempimento

La struttura del descrittore di stringa del sistema operativo Microsoft è fissa per la versione 1.00 e ha una lunghezza complessiva di 18 byte. Il numero di versione del descrittore di stringa del sistema operativo Microsoft è elencato nel campo qwSignature . Le informazioni archiviate nel campo bMS_VendorCode devono essere un singolo valore di byte. Verrà usato per recuperare i descrittori delle funzionalità del sistema operativo Microsoft e questo valore di byte viene usato nel campo bmRequestType descritto come segue:

Recupero del descrittore di stringa del sistema operativo

Per recuperare le informazioni archiviate nella stringa, è necessario eseguire una richiesta di GET_DESCRIPTOR standard al dispositivo. Ecco il formato della richiesta:

Richiesta stringa standard Get_Descriptor

bmRequestType bRequest wValue wIndex wLength Dati

1000 0000b

GET_DESCRIPTOR

0x03EE

0x0000

0x12

Restituisce la stringa

Il campo bmRequestType è una bitmap composta da tre parti, ovvero la direzione del trasferimento dei dati, il tipo di descrittore e il destinatario. In base alla specifica USB, il valore di bmRequestType è impostato su 1000 0000b (0x80).

Per una richiesta di GET_DESCRIPTOR, il campo wValue viene suddiviso in due parti. Il byte elevato archivia il tipo descrittore e il byte basso archivia l'indice del descrittore. Per recuperare il descrittore di stringa del sistema operativo Microsoft, il byte elevato deve essere impostato per recuperare un descrittore di stringa, 0x03. Poiché il descrittore di stringa del sistema operativo Microsoft viene sempre archiviato in corrispondenza dell'indice 0xEE, questo indice stringa deve essere archiviato nel byte inferiore del campo wValue .

WIndex viene usato per archiviare l'ID lingua, ma deve essere impostato su zero per un descrittore di stringa del sistema operativo Microsoft.

Il campo wLength viene utilizzato per indicare la lunghezza del descrittore di stringa da recuperare. Il dispositivo deve rispondere a qualsiasi intervallo valido tra 0x02 e 0xFF.

Se un dispositivo non dispone di un descrittore valido all'indirizzo corrispondente (0xEE), risponderà con un errore di richiesta o un blocco. Quando i dispositivi non rispondono con uno stallo, verrà eseguito un reset a zero a singola estremità sul dispositivo (per ripristinarlo, se dovesse entrare in uno stato sconosciuto).

Verifica dell'integrità del descrittore del sistema operativo

Poiché i fornitori possono usare qualsiasi ID stringa per archiviare informazioni, il sistema operativo deve verificare che la stringa archiviata nell'indice 0xEE sia effettivamente il descrittore della stringa del sistema operativo Microsoft. Per verificarlo, verranno eseguiti i test seguenti. L'errore di uno dei due impedisce il recupero dei descrittori delle funzionalità del sistema operativo Microsoft.

  • Se un fornitore archivia una stringa nel percorso di indice 0xEE, il sistema operativo recupererà la stringa ed eseguirà una query per verificare se si tratta della stringa del sistema operativo Microsoft. Questa operazione può essere verificata confrontando il campo della firma nella stringa con la voce del campo della firma specificata in precedenza. Una mancata corrispondenza impedisce un'ulteriore analisi della stringa.
  • Il secondo test includerà una verifica della lunghezza della stringa in base al numero di versione specificato nel campo della firma. Il numero di versione specificato (nella stringa "MSFT100") è 1.00. Corrisponde a un descrittore di stringa a 18 byte.

Vincoli del descrittore di stringhe del sistema operativo Microsoft

I vincoli seguenti si applicano ai descrittori di stringa del sistema operativo Microsoft e al relativo recupero:

  • Per archiviare le informazioni in conformità con la specifica del descrittore del sistema operativo Microsoft, il dispositivo deve disporre di un descrittore di stringa del sistema operativo Microsoft e di un solo descrittore di stringa del sistema operativo Microsoft conforme alle informazioni descritte in Descrittori del sistema operativo Microsoft.
  • Un fornitore di dispositivi è libero di usare qualsiasi valore nel campo bMS_VendorCode nel descrittore di stringa del sistema operativo Microsoft

Descrittore di funzionalità

Un descrittore di funzionalità è un descrittore a formato fisso definito per uno scopo specifico.

Recupero di un descrittore di funzionalità del sistema operativo

Per recuperare un descrittore di funzionalità del sistema operativo Microsoft, è necessario eseguire una richiesta speciale GET_MS_DESCRIPTOR al dispositivo. Ecco il formato della richiesta:

Formato di richiesta di dispositivo standard

bmRequestType bRequest wValue wIndex wLength Dati

1100 0000b

GET_MS_DESCRIPTOR

X

Indice delle funzionalità

Durata

Restituisce il descrittore

Il campo bmRequestType è una bitmap composta da tre parti, ovvero la direzione del trasferimento dei dati, il tipo di descrittore e il destinatario, ed è conforme alla specifica USB. Il descrittore di funzionalità del sistema operativo Microsoft è un descrittore specifico del fornitore e la direzione del trasferimento dei dati è dal dispositivo all'host. Pertanto, il valore di bmRequestType è impostato su 1100 0000b (0xC0).

Il campo bRequest viene usato per indicare il formato della richiesta. Per recuperare un descrittore di funzionalità del sistema operativo Microsoft, il campo bRequest deve essere popolato con un GET_MS_DESCRIPTOR byte speciale. Il valore di questo byte è indicato dal bMS_VendorCode, recuperato dal descrittore di stringa Microsoft. Per altre informazioni sul recupero del descrittore di stringa del sistema operativo Microsoft, vedere Recupero del descrittore di stringa del sistema operativo.

Il campo wValue viene utilizzato in modo speciale e viene suddiviso in un byte elevato e un byte basso. Il byte elevato viene usato per archiviare il numero di interfaccia. Questo è essenziale per l'archiviazione dei descrittori di funzionalità in base all'interfaccia, in particolare per i dispositivi compositi o per i dispositivi con più interfacce. Nella maggior parte dei casi, verrà usata l'interfaccia 0. Il byte basso viene usato per archiviare un numero di pagina. Questa funzionalità impedisce ai descrittori di avere un limite di dimensioni pari a 64 KB (un limite impostato dalle dimensioni del campo wLength ). Un descrittore verrà recuperato con il valore della pagina inizialmente impostato su zero. Se viene ricevuto un descrittore completo (dimensioni pari a 64 KB), il valore della pagina verrà incrementato di uno e la richiesta per il descrittore verrà inviata di nuovo (questa volta con il valore di pagina incrementato). Questo processo verrà ripetuto fino a quando non viene ricevuto un descrittore con dimensioni inferiori a 64 KB. Si noti che il numero massimo di pagine è 255, che prevede un limite di 16 MB per le dimensioni del descrittore.

Il campo wIndex archivia il numero di indice della funzionalità per il descrittore di funzionalità del sistema operativo Microsoft recuperato. Microsoft manterrà questo elenco di descrittori e indici delle funzionalità del sistema operativo Microsoft. Per altre informazioni sui descrittori delle funzionalità del sistema operativo Microsoft, vedere Descrittori del sistema operativo Microsoft.

Il campo wLength specifica la lunghezza del descrittore da recuperare. Se il descrittore è più lungo del numero di byte indicati nel campo wLength , vengono restituiti solo i byte iniziali del descrittore. Se è più breve del valore specificato nel campo wLength , viene restituito un pacchetto breve.

Se un descrittore del sistema operativo specifico non è presente, il dispositivo emetterà un errore di richiesta o un blocco.

Vincoli del descrittore di funzionalità del sistema operativo Microsoft

I vincoli seguenti si applicano ai descrittori delle funzionalità del sistema operativo Microsoft e al relativo recupero.

  • Tutti i descrittori delle funzionalità del sistema operativo Microsoft sono definiti e standardizzati. I fornitori non possono modificare, aggiungere o creare descrittori di funzionalità del sistema operativo Microsoft senza il consenso diretto di Microsoft.
  • Tutti i descrittori delle funzionalità del sistema operativo Microsoft avranno una dimensione e un numero di versione incorporati. Questi valori devono sempre segnalare le informazioni corrette al sistema operativo.
  • Un dispositivo può avere più descrittori di funzionalità del sistema operativo Microsoft incorporati nel firmware.
  • Alcuni descrittori delle funzionalità del sistema operativo Microsoft vengono archiviati a livello di interfaccia, mentre altri sono univoci per il dispositivo. I descrittori delle funzionalità del sistema operativo Microsoft a livello di dispositivo devono impostare il byte elevato del campo wValue su zero.

Struttura del descrittore di funzionalità

Per identificarsi come in grado di supportare MBIM, un dispositivo deve supportare anche il descrittore di configurazione esteso, ovvero uno dei descrittori di funzionalità definiti. La struttura di questo descrittore è la seguente.

Sezione Intestazione

L'intestazione memorizza le informazioni sul resto del descrittore di configurazione esteso. Il campo dwLength contiene la lunghezza dell'intero descrittore di configurazione estesa. La sezione dell'intestazione contiene anche un numero di versione, che verrà inizialmente impostato su 1.00 (0100H). Le revisioni future di questo descrittore potrebbero essere rilasciate in un secondo momento. Si noti che le versioni future del descrittore esteso di configurazione potrebbero anche dover aumentare il numero di voci nella sezione dell'intestazione, e quindi verificare che questo numero sia memorizzato correttamente nel dispositivo e letto dal sistema operativo.

Intestazione della sezione del descrittore di configurazione estesa

Offset Campo Misura Valore Descrizione

0

dwLength

4

DWORD senza segno

Il campo lunghezza descrive la lunghezza del descrittore di configurazione esteso, in byte.

4

bcdVersion

2

BCD

Numero di versione del descrittore di configurazione esteso in Codificato in Decimale Binario (ad esempio, la versione 1.00 è 0100H).

6

wIndex

2

PAROLA

Fisso = 0x0004

8

bCount

1

byte

Numero totale di sezioni della funzione che seguono la sezione dell'intestazione = 0x01

9

RISERVATO

7

RISERVATO

Sezione Funzione

La sezione relativa alla funzione fornisce due informazioni importanti. Raggruppa interfacce consecutive che servono uno scopo simile in gruppi di funzioni e fornisce ID compatibili e sottocompatibili per ogni funzione.

Ecco il formato della sezione della funzione, inclusi i valori che devono essere usati da un dispositivo MBIM:

Sezione descrittore della funzione di configurazione estesa

Offset¹ Campo Misura Valore Descrizione

0

bFirstInterfaceNumber

1

Byte

Numero di interfaccia iniziale per questa funzione = 0x00

1

bInterfaceCount

1

Byte

Numero totale di interfacce da includere da questa funzione = 0x01

2

compatibleID

8

Byte

ID compatibile

10

subCompatibleID

8

Byte

ID compatibile secondario

18

RISERVATO

6

RESERVED = 0

¹L'offset della sezione delle proprietà personalizzate è stato reimpostato a zero. Per calcolare l'offset di un campo dall'inizio del descrittore di configurazione estesa, aggiungere la lunghezza delle sezioni che lo precedono.

ID compatibili e sottocompatibili in base alla configurazione che espone la funzione MBIM

bConfiguration compatibleID subCompatibleID

2

ALTRCFG

(0x41 0x4C 0x54 0x52 0x43 0x46 0x47 0x00)

20000000

(0x32 0x00 0x00 0x00 0x00 0x00 0x00 0x00)

3

ALTRCFG

(0x41 0x4C 0x54 0x52 0x43 0x46 0x47 0x00)

30000000

(0x33 0x00 0x00 0x00 0x00 0x00 0x00 0x00)

4

ALTRCFG

(0x41 0x4C 0x54 0x52 0x43 0x46 0x47 0x00)

40000000

(0x34 0x00 0x00 0x00 0x00 0x00 0x00 0x00)

  • bConfiguration fa riferimento al valore bConfiguration all'interno del descrittore di configurazione USB della configurazione che espone la funzione MBIM. bConfiguration non può essere 1 perché si tratta della configurazione predefinita che espone solo la funzione CDROM. bConfiguration non può essere maggiore di 4; ovvero, la funzione MBIM deve essere esposta all'interno delle prime quattro configurazioni.
  • compatibleID rimane invariato per tutte le configurazioni. Il subcompatibleID cambia in base alla configurazione

Esempio

Questa tabella illustra uno scenario di configurazione multipla di esempio. La tabella elenca le funzioni disponibili in ogni configurazione e le azioni eseguite da versioni diverse del sistema operativo per ognuna di queste configurazioni:

Esempio di un dispositivo mobile a banda larga multiconfigurazione

bConfiguration 1 (Configurazione di Windows 7) 2 (IHV-NCM-1.0-Configuration) 3 (Windows-8-Configuration) 3 (IHV-NCM-2.0-Configuration)

Funzioni esposte

CDROM

SD

CD-ROM

SD

NCM1.0

Modem

televisione

GPS

FP

Smart card PC/SC

Voce

Diag

CD-ROM

SD

MBIM

CD-ROM

SD

NCM2.0

Modem

televisione

GPS

FP

Smart card PC/SC

Voce

Diag

Le tabelle seguenti mostrano i valori usati dal descrittore di stringa del sistema operativo Microsoft e dal descrittore della funzionalità di configurazione estesa del sistema operativo Microsoft per lo scenario multiconfigurazione dell'esempio precedente.

Esempio di un dispositivo mobile a banda larga multiconfigurazione

Campo Lunghezza (byte) Valore

bLength

1

0x12

bDescriptorType

1

0x03

qwSignature

14

'MSFT100'

0x4D 0x00 0x53 0x00 0x46 0x00 0x54 0x00 0x31 0x00 0x30 0x00 0x30 0x00

bMS_VendorCode

1

0xA5

bPad

1

0x00

Esempio di intestazione del descrittore della funzionalità di configurazione estesa del sistema operativo Microsoft

Offset Campo Misura Valore

0

dwLength

4

16

4

bcdVersion

2

0100H

6

wIndex

2

0x0004

8

bCount

1

1

9

RISERVATO

7

Esempio di funzione descrittore della funzionalità di configurazione estesa del sistema operativo Microsoft

Offset² Campo Misura Valore

0

bFirstInterfaceNumber

1

1

bInterfaceCount

1

2

compatibleID

8

10

subCompatibleID

8

18

RISERVATO

6

²L'offset della sezione proprietà personalizzate è stato reimpostato a zero. Per calcolare l'offset di un campo dall'inizio del descrittore di configurazione estesa, aggiungere la lunghezza delle sezioni che lo precedono.