Partager via


Supplément du modèle d’interface MB

Le descripteur du système d’exploitation Microsoft est divisé en segments suivants :

  • Un descripteur de chaîne de système d’exploitation Microsoft
  • Un ou plusieurs descripteurs de fonctionnalités du système d’exploitation Microsoft

Pour prendre en charge le descripteur du système d’exploitation, l’appareil doit implémenter le descripteur de chaîne. Descripteur de chaîne

Le descripteur de chaîne de système d’exploitation Microsoft est une chaîne stockée à l’index de chaîne 0xEE. Le format de cette chaîne est bien défini.

Le descripteur de chaîne de système d’exploitation Microsoft est utilisé pour atteindre les objectifs suivants

  • La présence du descripteur de chaîne de système d’exploitation Microsoft indique au système d’exploitation que l’appareil contient des informations incorporées sous la forme de descripteurs de fonctionnalités du système d’exploitation Microsoft.
  • Le descripteur de chaîne de système d’exploitation Microsoft a un champ de signature incorporé utilisé pour le différencier des chaînes aléatoires qui peuvent se trouver sur un appareil à l’index de chaîne 0xEE.
  • Le descripteur de chaîne de système d’exploitation Microsoft a également un numéro de version incorporé qui permet de futures révisions du descripteur du système d’exploitation Microsoft.

Un seul descripteur de chaîne de système d’exploitation Microsoft est stocké sur un appareil. Les sections suivantes décrivent la structure du descripteur de chaîne de système d’exploitation Microsoft et sa procédure de récupération. Structure de la chaîne de système d’exploitation

Voici la structure du descripteur de chaîne :

Structure de descripteur de chaîne

Terrain Longueur (octets) Valeur Descriptif

bLength

1

0x12

Longueur du descripteur

bDescriptorType

1

0x03

Descripteur de chaîne

qwSignature

14

« MSFT100 »

Champ signature (4D00530046005400310030003000)

bMS_VendorCode

1

Code du fournisseur

Code fournisseur pour récupérer d’autres descripteurs de fonctionnalités de système d’exploitation

bPad

1

0x00

Champ de remplissage

La structure du descripteur de chaîne de système d’exploitation Microsoft est fixe pour la version 1.00 et a une longueur globale de 18 octets. Le numéro de version du descripteur de chaîne de système d’exploitation Microsoft est répertorié dans le champ qwSignature . Les informations stockées dans le champ bMS_VendorCode doivent être une valeur d’octet unique. Il sera utilisé pour récupérer les descripteurs de fonctionnalités du système d’exploitation Microsoft, et cette valeur d’octet est utilisée dans le champ bmRequestType décrit comme suit :

Récupération du descripteur de chaîne de système d’exploitation

Pour récupérer les informations stockées dans la chaîne, une demande de GET_DESCRIPTOR standard doit être émise sur l’appareil. Voici le format de la requête :

Requête de chaîne de Get_Descriptor standard

bmRequestType bRequest wValue wIndex wLength Données

1000 000b

GET_DESCRIPTOR

0x03EE

0x0000

0x12

Retourne la chaîne

Le champ bmRequestType est une bitmap composée de trois parties : la direction du transfert de données, le type de descripteur et le destinataire. Selon la spécification USB, la valeur de bmRequestType est définie sur 1000 0000b (0x80).

Pour une requête GET_DESCRIPTOR, le champ wValue est divisé en deux parties. Le octet élevé stocke le type de descripteur et le bas octet stocke l’index de descripteur. Pour récupérer le descripteur de chaîne de système d’exploitation Microsoft, l’octet élevé doit être défini pour récupérer un descripteur de chaîne, 0x03. Étant donné que le descripteur de chaîne de système d’exploitation Microsoft est toujours stocké à l’index 0xEE, cet index de chaîne doit être stocké dans le octet inférieur du champ wValue .

Le wIndex est utilisé pour stocker l’ID de langue, mais il doit être défini sur zéro pour un descripteur de chaîne de système d’exploitation Microsoft.

Le champ wLength est utilisé pour indiquer la longueur du descripteur de chaîne à récupérer. L’appareil doit répondre à n’importe quelle plage valide de 0x02-0xFF.

Si un appareil n’a pas de descripteur valide à l’adresse correspondante (0xEE), il répond avec une erreur de demande ou un blocage. Lorsque les appareils ne répondent pas avec un blocage, une réinitialisation à zéro à une seule extrémité est émise aux appareils (pour les récupérer, si ceux-ci doivent entrer dans un état inconnu).

Vérification de l’intégrité du descripteur du système d’exploitation

Étant donné que les fournisseurs sont autorisés à utiliser n’importe quel ID de chaîne pour stocker des informations, le système d’exploitation doit vérifier que la chaîne stockée dans l’index 0xEE est en effet le descripteur de chaîne de système d’exploitation Microsoft. Pour vérifier cela, les tests suivants seront effectués. L’échec de l’une ou l’autre empêche la récupération des descripteurs de fonctionnalités du système d’exploitation Microsoft.

  • Si un fournisseur stocke une chaîne à l’emplacement d’index 0xEE, le système d’exploitation récupère la chaîne et l’interroge pour voir s’il s’agit de la chaîne de système d’exploitation Microsoft. Cela peut être vérifié en comparant le champ de signature dans la chaîne à l’entrée de champ de signature spécifiée précédemment. Une incompatibilité empêcherait l’analyse supplémentaire de la chaîne.
  • Le deuxième test inclut une vérification de la longueur de la chaîne en fonction du numéro de version spécifié dans le champ de signature. Le numéro de version spécifié (dans la chaîne « MSFT100 ») est 1.00. Cela correspond à un descripteur de chaîne de 18 octets.

Contraintes de descripteur de chaîne de système d’exploitation Microsoft

Les contraintes suivantes s’appliquent aux descripteurs de chaîne de système d’exploitation Microsoft et à leur récupération :

  • Pour stocker des informations en conformité avec la spécification du descripteur du système d’exploitation Microsoft, l’appareil doit avoir un seul descripteur de chaîne de système d’exploitation Microsoft conforme aux informations décrites dans les descripteurs du système d’exploitation Microsoft.
  • Un fournisseur d’appareils est libre d’utiliser n’importe quelle valeur dans le champ bMS_VendorCode dans le descripteur de chaîne de système d’exploitation Microsoft

Descripteur de fonctionnalité

Un descripteur de fonctionnalité est un descripteur de format fixe qui a été défini à des fins spécifiques.

Récupération d’un descripteur de fonctionnalité de système d’exploitation

Pour récupérer un descripteur de fonctionnalité du système d’exploitation Microsoft, une demande de GET_MS_DESCRIPTOR spéciale doit être émise sur l’appareil. Voici le format de la requête :

Format de demande d’appareil standard

bmRequestType bRequest wValue wIndex wLength Données

1100 0000b

GET_MS_DESCRIPTOR

X

Index de fonctionnalité

Longueur

Retourne le descripteur

Le champ bmRequestType est une bitmap composée de trois parties ( direction du transfert de données, type de descripteur et destinataire) et est conforme à la spécification USB. Le descripteur de fonctionnalité du système d’exploitation Microsoft est un descripteur spécifique au fournisseur et la direction du transfert de données est de l’appareil à l’hôte. Par conséquent, la valeur de bmRequestType est définie sur 1100 0000b (0xC0).

Le champ bRequest est utilisé pour indiquer le format de la requête. Pour récupérer un descripteur de fonctionnalité de système d’exploitation Microsoft, le champ bRequest doit être rempli avec un octet de GET_MS_DESCRIPTOR spécial. La valeur de cet octet est indiquée par le bMS_VendorCode, qui est récupéré à partir du descripteur de chaîne Microsoft. Pour plus d’informations sur la récupération du descripteur de chaîne de système d’exploitation Microsoft, consultez Récupération du descripteur de chaîne de système d’exploitation.

Le champ wValue est mis à une utilisation spéciale et est divisé en octets élevés et en octets bas. L’octet élevé est utilisé pour stocker le numéro d’interface. Il est essentiel de stocker des descripteurs de fonctionnalités par interface, en particulier pour les appareils composites ou les appareils avec plusieurs interfaces. Dans la plupart des cas, l’interface 0 sera utilisée. L’octet faible est utilisé pour stocker un numéro de page. Cette fonctionnalité empêche les descripteurs d’avoir une limite de taille de 64 Ko (limite définie par la taille du champ wLength ). Un descripteur est récupéré avec la valeur de page initialement définie sur zéro. Si un descripteur complet (la taille est de 64 Ko) est reçu, la valeur de la page est incrémentée par un et la demande du descripteur est envoyée à nouveau (cette fois avec la valeur de page incrémentée). Ce processus se répète jusqu’à ce qu’un descripteur dont la taille est inférieure à 64 Ko soit reçue. Notez que le nombre maximal de pages est de 255, ce qui place une limite de 16 Mo sur la taille du descripteur.

Le champ wIndex stocke le numéro d’index des fonctionnalités du descripteur de fonctionnalité du système d’exploitation Microsoft en cours de récupération. Microsoft conserve cette liste de descripteurs et d’index des fonctionnalités du système d’exploitation Microsoft. Pour en savoir plus sur les descripteurs de fonctionnalités du système d’exploitation Microsoft, consultez Les descripteurs de système d’exploitation Microsoft.

Le champ wLength spécifie la longueur du descripteur à extraire. Si le descripteur est plus long que le nombre d’octets indiqué dans le champ wLength , seuls les octets initiaux du descripteur sont retournés. S’il est plus court que la valeur spécifiée dans le champ wLength , un paquet court est retourné.

Si un descripteur de système d’exploitation particulier n’est pas présent, l’appareil émet une erreur de demande ou un blocage.

Contraintes de descripteur de fonctionnalité du système d’exploitation Microsoft

Les contraintes suivantes s’appliquent aux descripteurs de fonctionnalités du système d’exploitation Microsoft et à leur récupération.

  • Tous les descripteurs de fonctionnalités du système d’exploitation Microsoft sont définis et normalisés. Les fournisseurs ne sont pas autorisés à modifier, ajouter ou créer des descripteurs de fonctionnalités du système d’exploitation Microsoft sans consentement direct de Microsoft.
  • Tous les descripteurs de fonctionnalités du système d’exploitation Microsoft auront une taille et un numéro de version incorporés. Ces valeurs doivent toujours signaler des informations correctes au système d’exploitation.
  • Un appareil peut avoir plusieurs descripteurs de fonctionnalités du système d’exploitation Microsoft incorporés dans son microprogramme.
  • Certains descripteurs de fonctionnalités du système d’exploitation Microsoft sont stockés au niveau d’une interface, tandis que d’autres sont uniques à l’appareil. Les descripteurs de fonctionnalités du système d’exploitation Microsoft au niveau de l’appareil doivent définir l’octet élevé du champ wValue sur zéro.

Structure du descripteur de fonctionnalité

Pour s’identifier comme capable de prendre en charge MBIM, un appareil doit également prendre en charge le descripteur de configuration étendu, qui est l’un des descripteurs de fonctionnalités définis. La structure de ce descripteur est la suivante.

Section En-tête

La section d’en-tête stocke des informations sur le reste du descripteur de configuration étendu. Le champ dwLength contient la longueur de l’ensemble du descripteur de configuration étendu. La section d’en-tête contient également un numéro de version qui sera initialement défini sur 1.00 (0100H). Les prochaines révisions de ce descripteur peuvent être publiées ultérieurement. Notez que les futures versions du descripteur de configuration étendu peuvent également avoir besoin d’augmenter le nombre d’entrées dans la section d’en-tête. Vérifiez donc que ce nombre est stocké avec précision dans l’appareil et lu par le système d’exploitation.

Section d’en-tête de descripteur de configuration étendue

Offset Terrain Taille Valeur Descriptif

0

dwLength

4

DWORD non signé

Le champ de longueur décrit la longueur du descripteur de configuration étendu, en octets.

4

bcdVersion

2

BCD

Numéro de publication du descripteur de configuration étendu en binaire codé décimal (par exemple, la version 1.00 est 0100H).

6

wIndex

2

WORD

Fixe = 0x0004

8

bCount

1

BYTE

Nombre total de sections de fonction qui suivent la section d’en-tête = 0x01

9

RÉSERVÉ

7

RÉSERVÉ

Section de fonction

La section de fonction fournit deux informations importantes. Il regroupe des interfaces consécutives qui servent un objectif similaire dans les groupes de fonctions et fournit des ID compatibles et sous-compatibles pour chaque fonction.

Voici le format de la section de fonction, y compris les valeurs qui doivent être utilisées par un appareil MBIM :

Section de la fonction de descripteur de configuration étendue

Offset¹ Terrain Taille Valeur Descriptif

0

bFirstInterfaceNumber

1

Byte

Numéro d’interface de départ pour cette fonction = 0x00

1

bInterfaceCount

1

Byte

Nombre total d’interfaces qui doivent être incluses à partir de cette fonction = 0x01

2

compatibleID

8

Octets

identifiant compatible

10

sousCompatibleID

8

Octets

ID sous-compatible

18

RÉSERVÉ

6

RÉSERVÉ = 0

¹Le décalage de la section de la propriété personnalisée a été réinitialisé à zéro. Pour calculer le décalage d’un champ à partir du début du descripteur de configuration étendu, ajoutez la longueur des sections qui l’précèdent.

ID compatibles et sous-compatibles en fonction de la configuration exposant la fonction 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 fait référence à la valeur bConfiguration dans le descripteur de configuration USB de la configuration qui expose la fonction MBIM. bConfiguration ne peut pas être 1, car il s’agit de la configuration par défaut qui expose uniquement la fonction CDROM. bConfiguration ne peut pas être supérieure à 4 ; autrement dit, la fonction MBIM doit être exposée dans les quatre premières configurations.
  • compatibleID reste le même pour toutes les configurations. L'ID de sous-compatibilité change en fonction de la configuration

Exemple

Ce tableau présente un exemple de scénario de configuration multiple. Le tableau répertorie les fonctions disponibles dans chaque configuration et les actions effectuées par différentes versions du système d’exploitation pour chacune de ces configurations :

Exemple d’un appareil à large bande mobile multiconfiguration

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

Fonctions exposées

CDROM

SD

CD-ROM

SD

NCM1.0

Modem

TÉLÉ

GPS

FP

Carte à puce PC/SC

Voix

Diag

CD-ROM

SD

MBIM

CD-ROM

SD

NCM2.0

Modem

TÉLÉ

GPS

FP

Carte à puce PC/SC

Voix

Diag

Les tableaux suivants montrent les valeurs utilisées par le descripteur de chaîne de système d’exploitation Microsoft et le descripteur de fonctionnalité de configuration étendu du système d’exploitation Microsoft pour le scénario de configuration multiconfiguration de l’exemple précédent.

Exemple d’un appareil à large bande mobile multiconfiguration

Terrain Longueur (octets) Valeur

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

Exemple d’en-tête de descripteur de fonctionnalité de configuration étendue du système d’exploitation Microsoft

Offset Terrain Taille Valeur

0

dwLength

4

16

4

bcdVersion

2

0100H

6

wIndex

2

0x0004

8

bCount

1

1

9

RÉSERVÉ

7

Exemple de fonction de descripteur de fonctionnalité de configuration étendue du système d’exploitation Microsoft

Offset² Terrain Taille Valeur

0

bFirstInterfaceNumber

1

1

bInterfaceCount

1

2

compatibleID

8

10

subCompatibleID

8

18

RÉSERVÉ

6

Le décalage de la section des propriétés personnalisées a été réinitialisé à zéro. Pour calculer le décalage d’un champ à partir du début du descripteur de configuration étendu, ajoutez la longueur des sections qui l’précèdent.