Partager via


Supplément de modèle d’interface Mo

Le descripteur de 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 de système d’exploitation, l’appareil doit implémenter le descripteur de chaîne. Descripteur de chaîne

Le descripteur de chaîne du système d’exploitation Microsoft est une chaîne stockée dans 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 du 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 du système d’exploitation Microsoft a un champ de signature incorporé qui est utilisé pour le différencier des chaînes aléatoires qui peuvent se trouver sur un appareil au niveau de 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 les révisions futures du descripteur de 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 du système d’exploitation

Voici la structure du descripteur de chaîne :

Structure de descripteur de chaîne

Champ Longueur (octets) Valeur Description

bLength

1

0x12

Longueur du descripteur

bDescriptorType

1

0x03

Descripteur de chaîne

qwSignature

14

« MSFT100 »

Champ signature (4D005300460054003100300030003000)

bMS_VendorCode

1

Code fournisseur

Code fournisseur pour extraire d’autres descripteurs de fonctionnalités de système d’exploitation

bPad

1

0x00

Champ pad

La structure du descripteur de chaîne de système d’exploitation Microsoft est corrigée 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 du 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 à l’appareil. Voici le format de la demande :

Demande de chaîne standard Get_Descriptor

bmRequestType bRequest wValue Windex wLength Données

1000 0000b

GET_DESCRIPTOR

0x03EE

0x0000

0x12

Retourne la chaîne .

Le champ bmRequestType est un bitmap composé de trois parties : direction du transfert de données, type de descripteur et 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. L’octet élevé stocke le type de descripteur et l’octet bas stocke l’index de descripteur. Pour récupérer le descripteur de chaîne du 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 du système d’exploitation Microsoft est toujours stocké au 0xEE d’index, cet index de chaîne doit être stocké dans l’octet inférieur du champ wValue .

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 à toute 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 requête ou un blocage. Lorsque les appareils ne répondent pas avec un décrochage, une réinitialisation unique zéro est émise à l’appareil (pour le récupérer, s’il doit passer dans un état inconnu).

Vérification de l’intégrité du descripteur de 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 bien 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’un 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 du 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 conformément à la spécification du descripteur de 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 de 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 dans un but spécifique.

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 demande :

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 un bitmap composé de trois parties (direction du transfert des données, type de descripteur et destinataire) et est conforme à la spécification USB. Le descripteur de fonctionnalités du système d’exploitation Microsoft est un descripteur propre au fournisseur et la direction du transfert des données est de l’appareil vers 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 demande. Pour récupérer un descripteur de fonctionnalité de système d’exploitation Microsoft, le champ bRequest doit être rempli avec un octet 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 du système d’exploitation.

Le champ wValue est utilisé à un usage spécial et est divisé en octets élevés et en octets bas. L’octet élevé est utilisé pour stocker le numéro d’interface. Cela est essentiel pour stocker des descripteurs de fonctionnalités sur une base par interface, en particulier pour les appareils composites ou les appareils avec plusieurs interfaces. Dans la plupart des cas, l’interface 0 est 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 extrait avec la valeur de page initialement définie sur zéro. Si un descripteur complet (taille de 64 Ko) est reçu, la valeur de la page est incrémentée d’un et la demande pour le descripteur est à nouveau envoyée (cette fois avec la valeur de page incrémentée). Ce processus se répète jusqu’à ce qu’un descripteur d’une taille inférieure à 64 Ko soit reçu. 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 de fonctionnalité pour le descripteur de fonctionnalité de système d’exploitation Microsoft en cours de récupération. Microsoft conservera 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 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 requête ou se bloque.

Contraintes de descripteur de fonctionnalités 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 standardisés. Les fournisseurs ne sont pas autorisés à modifier, ajouter ou créer des descripteurs de fonctionnalités de système d’exploitation Microsoft sans le 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 de système d’exploitation Microsoft incorporés dans son microprogramme.
  • Certains descripteurs de fonctionnalités du système d’exploitation Microsoft sont stockés à un niveau par interface, tandis que d’autres sont propres à 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 en-tête stocke des informations sur le reste du descripteur de configuration étendu. Le champ dwLength contient la longueur du descripteur de configuration étendu entier. La section d’en-tête contient également un numéro de version, qui sera initialement défini sur 1.00 (0100H). Les révisions ultérieures de ce descripteur peuvent être publiées ultérieurement. Notez que les versions futures du descripteur de configuration étendue peuvent également devoir augmenter le nombre d’entrées dans la section d’en-tête. Vérifiez donc que ce nombre est correctement stocké dans l’appareil et lu par le système d’exploitation.

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

Offset Champ Taille Valeur Description

0

dwLength

4

DWORD non signé

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

4

bcdVersion

2

BCD

Numéro de mise en production du descripteur de configuration étendue en décimal codé binaire (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 des 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

Décalage¹ Champ Taille Valeur Description

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

Compatible ID

10

subCompatibleID

8

Octets

ID sous-compatible

18

RÉSERVÉ

6

RESERVED = 0

¹Offset de la section de 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 étendue, ajoutez la longueur des sections qui le précèdent.

ID compatibles et sous-compatibles basés sur 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. Le subcompatibleID 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’appareil haut débit 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

TV

GPS

FP

carte intelligent PC/SC

Voix

Diag

CD-ROM

SD

MBIM

CD-ROM

SD

NCM2.0

Modem

TV

GPS

FP

carte intelligent 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 étendue du système d’exploitation Microsoft pour le scénario de configuration multiconfiguration de l’exemple précédent.

Exemple d’appareil haut débit mobile multiconfiguration

Champ 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 Champ 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² Champ Taille Valeur

0

bFirstInterfaceNumber

1

1

bInterfaceCount

1

2

compatibleID

8

10

subCompatibleID

8

18

RÉSERVÉ

6

²Offset de la section de 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 étendue, ajoutez la longueur des sections qui le précèdent.