Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der Microsoft OS-Deskriptor ist in die folgenden Segmente unterteilt:
- Ein Microsoft OS-Zeichenfolgendeskriptor
- Ein oder mehrere Microsoft-Betriebssystem-Featurebeschreibungen
Um den Betriebssystemdeskriptor zu unterstützen, muss das Gerät den Zeichenfolgendeskriptor implementieren. Zeichenfolgendeskriptor
Der Microsoft OS-Zeichenfolgendeskriptor ist eine Zeichenfolge, die im Zeichenfolgenindex 0xEE gespeichert wird. Das Format dieser Zeichenfolge ist gut definiert.
Der Microsoft OS String Descriptor wird verwendet, um die folgenden Ziele zu erreichen:
- Das Vorhandensein des Microsoft OS-Zeichenfolgendeskriptors gibt an, dass das Gerät Informationen enthält, die in das Betriebssystem eingebettet sind, in Form von Microsoft OS-Featuredeskriptoren.
- Der Microsoft OS-Zeichenfolgendeskriptor verfügt über ein eingebettetes Signaturfeld, das verwendet wird, um es von zufälligen Zeichenfolgen zu unterscheiden, die sich möglicherweise auf einem Gerät im Zeichenfolgenindex 0xEE befindet.
- Der Microsoft OS-Zeichenfolgendeskriptor verfügt auch über eine eingebettete Versionsnummer, die zukünftige Überarbeitungen des Microsoft OS-Deskriptors ermöglicht.
Nur ein Microsoft OS-Zeichenfolgendeskriptor wird auf einem Gerät gespeichert. In den folgenden Abschnitten wird die Struktur des Microsoft OS-Zeichenfolgendeskriptors und dessen Abrufprozedur beschrieben. Struktur der Betriebssystemzeichenfolge
Dies ist die Struktur des Zeichenfolgendeskriptors:
Zeichenfolgendeskriptorstruktur
| Feld | Länge (Bytes) | Wert | BESCHREIBUNG |
|---|---|---|---|
bLength |
1 |
0x12 |
Länge des Deskriptors |
bDescriptorType |
1 |
0x03 |
Zeichenfolgendeskriptor |
qwSignature |
14 |
"MSFT100" |
Signaturfeld (4D00530046005400310030003000) |
bMS_VendorCode |
1 |
Lieferantencode |
Anbietercode zum Abrufen anderer Betriebssystemfeaturedeskriptoren |
bPad |
1 |
0x00 |
Pad-Feld |
Die Struktur des Microsoft OS-Zeichenfolgendeskriptors ist für Version 1.00 festgelegt und hat eine Gesamtlänge von 18 Bytes. Die Versionsnummer des Microsoft OS-Zeichenfolgendeskriptors wird im Feld "qwSignature " aufgeführt. Die im Feld bMS_VendorCode gespeicherten Informationen müssen ein einzelner Bytewert sein. Es wird verwendet, um Microsoft OS-Featuredeskriptoren abzurufen, und dieser Bytewert wird im bmRequestType-Feld wie folgt beschrieben verwendet:
Abrufen des Betriebssystem-Stringdeskriptors
Um die in der Zeichenfolge gespeicherten Informationen abzurufen, muss eine Standardanforderung GET_DESCRIPTOR an das Gerät ausgegeben werden. Hier ist das Format der Anforderung:
Standard-Get_Descriptor Zeichenfolgenanforderung
| bmRequestType | bRequest | wValue | wIndex | wLength | Daten |
|---|---|---|---|---|---|
1000 0000b |
GET_DESCRIPTOR |
0x03EE |
0x0000 |
0x12 |
Gibt die Zeichenfolge zurück. |
Das bmRequestType-Feld ist eine Bitmap, die aus drei Teilen besteht : Datenübertragungsrichtung, Deskriptortyp und Empfänger. Gemäß der USB-Spezifikation wird der Wert von bmRequestType auf 1000 0000b (0x80) festgelegt.
Bei einer GET_DESCRIPTOR Anforderung wird das wValue-Feld in zwei Teile aufgeteilt. Das hohe Byte speichert den Deskriptortyp, und das niedrige Byte speichert den Deskriptorindex. Um den Microsoft OS-Zeichenfolgendeskriptor abzurufen, sollte das hohe Byte festgelegt werden, um einen Zeichenfolgendeskriptor abzurufen – 0x03. Da der Microsoft OS-Zeichenfolgendeskriptor immer bei Index 0xEE gespeichert wird, sollte dieser Zeichenfolgenindex im unteren Byte des wValue-Felds gespeichert werden.
Der wIndex wird verwendet, um die Sprach-ID zu speichern, muss jedoch für einen Microsoft OS-Zeichenfolgendeskriptor auf Null festgelegt werden.
Das wLength-Feld wird verwendet, um die Länge des abzurufenden Zeichenfolgendeskriptors anzugeben. Das Gerät sollte auf einen beliebigen gültigen Bereich von 0x02 bis 0xFF reagieren.
Wenn ein Gerät nicht über einen gültigen Deskriptor an der entsprechenden Adresse (0xEE) verfügt, antwortet es mit einem Fehler bei der Anforderung oder "Stall". Wenn Geräte nicht mit einem Stall reagieren, wird eine einseitige Nullzurücksetzung auf das Gerät ausgegeben (um es wiederherzustellen, wenn sie in einen unbekannten Zustand versetzt werden soll).
Überprüfen der Integrität des Betriebssystemdeskriptors
Da Anbieter eine beliebige Zeichenfolgen-ID zum Speichern von Informationen verwenden dürfen, muss das Betriebssystem überprüfen, ob die im Index gespeicherte Zeichenfolge 0xEE tatsächlich der Microsoft OS-Zeichenfolgendeskriptor ist. Um dies zu überprüfen, werden die folgenden Tests durchgeführt. Wenn eines der beiden Fehler auftritt, wird der Abruf der Microsoft OS-Featuredeskriptoren verhindert.
- Wenn ein Anbieter eine Zeichenfolge am Indexspeicherort 0xEE speichert, ruft das Betriebssystem die Zeichenfolge ab und fragt sie ab, um festzustellen, ob es sich um die Microsoft OS-Zeichenfolge handelt. Dies kann überprüft werden, indem das Signaturfeld in der Zeichenfolge mit dem zuvor angegebenen Signaturfeldeintrag verglichen wird. Ein Missverhältnis würde das weitere Parsen der Zeichenfolge verhindern.
- Der zweite Test enthält eine Überprüfung der Länge der Zeichenfolge basierend auf der im Signaturfeld angegebenen Versionsnummer. Die angegebene Versionsnummer (in der Zeichenfolge "MSFT100") ist 1,00. Dies entspricht einem 18-Byte-Zeichenfolgendeskriptor.
Einschränkungen der Microsoft OS-Zeichenfolgenbeschreibung
Die folgenden Einschränkungen gelten für Microsoft OS-Zeichenfolgendeskriptoren und deren Abruf:
- Um Informationen in Übereinstimmung mit der Microsoft OS-Beschreibungsspezifikation zu speichern, muss das Gerät über einen und nur einen Microsoft OS-Zeichenfolgendeskriptor verfügen, der den informationen entspricht, die in Microsoft OS-Deskriptoren beschrieben sind.
- Ein Geräteanbieter kann jeden Beliebigen Wert im Feld bMS_VendorCode im Microsoft OS-Zeichenfolgendeskriptor verwenden.
Featuredeskriptor
Ein Featuredeskriptor ist ein Deskriptor im festen Format, der für einen bestimmten Zweck definiert wurde.
Abrufen eines Betriebssystemfunktionsdeskriptors
Um einen Microsoft OS-Featuredeskriptor abzurufen, muss eine spezielle GET_MS_DESCRIPTOR Anforderung an das Gerät ausgegeben werden. Hier ist das Format der Anforderung:
Standardgeräteanforderungsformat
| bmRequestType | bRequest | wValue | wIndex | wLength | Daten |
|---|---|---|---|---|---|
1100 0000b |
GET_MS_DESCRIPTOR |
X |
Feature-Index |
Länge |
Gibt den Deskriptor zurück. |
Das bmRequestType-Feld ist eine Bitmap, die aus drei Teilen besteht – richtung der Datenübertragung, des Deskriptortyps und des Empfängers – und entspricht der USB-Spezifikation. Der Microsoft OS-Featuredeskriptor ist ein anbieterspezifischer Deskriptor, und die Richtung der Datenübertragung erfolgt vom Gerät an den Host. Daher wird der Wert von bmRequestType auf 1100 0000b (0xC0) festgelegt.
Das bRequest-Feld wird verwendet, um das Format der Anforderung anzugeben. Um einen Microsoft OS-Featuredeskriptor abzurufen, sollte das bRequest-Feld mit einem speziellen GET_MS_DESCRIPTOR Byte aufgefüllt werden. Der Wert dieses Bytes wird durch die bMS_VendorCode angegeben, die vom Microsoft-Zeichenfolgendeskriptor abgerufen wird. Weitere Informationen zum Abrufen des Microsoft OS-Zeichenfolgendeskriptors finden Sie unter Abrufen des Betriebssystemzeichenfolgendeskriptors.
Das Feld "wValue " wird speziell verwendet und in ein hohes Byte und ein niedriges Byte unterteilt. Das hohe Byte wird verwendet, um die Schnittstellennummer zu speichern. Dies ist für das Speichern von Featuredeskriptoren pro Schnittstelle, insbesondere für zusammengesetzte Geräte oder Geräte mit mehreren Schnittstellen, unerlässlich. In den meisten Fällen wird Schnittstelle 0 verwendet. Das niedrige Byte wird verwendet, um eine Seitenzahl zu speichern. Dieses Feature verhindert, dass Deskriptoren eine Größengrenze von 64 KB haben (ein Grenzwert, der durch die Größe des wLength-Felds festgelegt ist). Ein Deskriptor wird abgerufen, wobei der Seitenwert anfangs auf Null festgelegt ist. Wenn ein vollständiger Deskriptor (Größe ist 64 KB) empfangen wird, wird der Seitenwert um eine erhöht, und die Anforderung für den Deskriptor wird erneut gesendet (diesmal mit dem inkrementierten Seitenwert). Dieser Vorgang wird wiederholt, bis ein Deskriptor mit einer Größe von weniger als 64 KB empfangen wird. Beachten Sie, dass die maximale Anzahl von Seiten 255 beträgt, wodurch eine Beschränkung von 16 MB auf die Deskriptorgröße gesetzt wird.
Im wIndex-Feld wird die Featureindexnummer für den abgerufenen Microsoft OS-Featuredeskriptor gespeichert. Microsoft verwaltet diese Liste der Featuredeskriptoren und Indizes des Microsoft-Betriebssystems. Weitere Informationen zu Microsoft OS-Featuredeskriptoren finden Sie unter Microsoft OS-Deskriptoren.
Das wLength-Feld gibt die Länge des abzurufenden Deskriptors an. Wenn der Deskriptor länger als die Anzahl der im wLength-Feld angegebenen Bytes ist, werden nur die anfänglichen Bytes des Deskriptors zurückgegeben. Wenn er kürzer als der im wLength-Feld angegebene Wert ist, wird ein kurzes Paket zurückgegeben.
Wenn ein bestimmter Betriebssystemdeskriptor nicht vorhanden ist, gibt das Gerät einen Anforderungsfehler oder eine Zögerung aus.
Einschränkungen der Microsoft OS-Featuredeskriptoren
Die folgenden Einschränkungen gelten für Microsoft OS-Featuredeskriptoren und deren Abruf.
- Alle Microsoft OS-Featuredeskriptoren sind definiert und standardisiert. Lieferanten dürfen keine Microsoft OS-Featuredeskriptoren ohne direkte Zustimmung von Microsoft ändern, anfügen oder erstellen.
- Alle Microsoft OS-Merkmalsbeschreibungen haben eine Größe und eine Versionsnummer, die in sie eingebettet sind. Diese Werte sollten immer die richtigen Informationen an das Betriebssystem melden.
- Ein Gerät kann mehrere Microsoft OS-Featuredeskriptoren in die Firmware eingebettet haben.
- Einige Microsoft OS-Feature-Deskriptoren werden auf einer Schnittstellenebene gespeichert, während andere einzigartig für das Gerät sind. Feature-Deskriptoren auf Geräteebene sollten das hohe Byte des wValue-Felds als Null festlegen.
Struktur des Featuredeskriptors
Um sich selbst als fähig zu identifizieren, MBIM zu unterstützen, muss ein Gerät auch den erweiterten Konfigurationsdeskriptor unterstützen, der einer der definierten Featuredeskriptoren ist. Die Struktur dieses Deskriptors lautet wie folgt.
Kopfzeilenabschnitt
Der Kopfzeilenabschnitt speichert Informationen über den Rest der erweiterten Konfigurationsbeschreibung. Das dwLength-Feld enthält die Länge des gesamten erweiterten Konfigurationsdeskriptors. Der Kopfzeilenabschnitt enthält auch eine Versionsnummer, die anfangs auf 1,00 (0100H) festgelegt wird. Zukünftige Überarbeitungen dieser Beschreibung können zu einem späteren Zeitpunkt veröffentlicht werden. Beachten Sie, dass zukünftige Versionen des erweiterten Konfigurationsdeskriptors möglicherweise auch die Anzahl der Einträge im Kopfzeilenabschnitt erhöhen müssen. Stellen Sie daher sicher, dass diese Nummer genau auf dem Gerät gespeichert und vom Betriebssystem gelesen wird.
Abschnitt "Erweiterter Konfigurationsdeskriptorheader"
| Offset | Feld | Größe | Wert | BESCHREIBUNG |
|---|---|---|---|---|
0 |
dwLength |
4 |
Nicht signiertes DWORD |
Das Längenfeld beschreibt die Länge des erweiterten Konfigurationsdeskriptors in Bytes. |
4 |
bcdVersion |
2 |
Tarierjacket |
Versionsnummer des erweiterten Konfigurationsdeskriptors in Binary Coded Decimal (z. B. Version 1.00 ist 0100H). |
6 |
wIndex |
2 |
WORD |
Fixed = 0x0004 |
8 |
bCount |
1 |
BYTE |
Gesamtanzahl der Funktionsabschnitte, die dem Kopfzeilenabschnitt folgen = 0x01 |
9 |
RESERVIERT |
7 |
RESERVIERT |
Funktionsabschnitt
Der Funktionsabschnitt enthält zwei wichtige Informationen. Sie gruppiert aufeinander folgende Schnittstellen, die einem ähnlichen Zweck in Funktionsgruppen dienen, und stellt kompatible und unterkompatible IDs für jede Funktion bereit.
Hier sehen Sie das Format des Funktionsabschnitts, einschließlich der Werte, die von einem MBIM-Gerät verwendet werden sollen:
Abschnitt "Erweiterte Konfigurationsdeskriptorfunktion"
| Offset¹ | Feld | Größe | Wert | BESCHREIBUNG |
|---|---|---|---|---|
0 |
bFirstInterfaceNumber |
1 |
Byte |
Startschnittstellennummer für diese Funktion = 0x00 |
1 |
bInterfaceCount |
1 |
Byte |
Gesamtanzahl der Schnittstellen, die in diese Funktion aufgenommen werden müssen = 0x01 |
2 |
KompatibleID |
8 |
Byte-Einheiten |
Kompatible ID |
10 |
subCompatibleID |
8 |
Byte-Einheiten |
Teilkompatibilitäts-ID |
18 |
RESERVIERT |
6 |
RESERVED = 0 |
¹Der Offset des Abschnitts für benutzerdefinierte Eigenschaften wurde auf Null zurückgesetzt. Um den Offset eines Felds vom Anfang des erweiterten Konfigurationsdeskriptors zu berechnen, fügen Sie die Länge der Abschnitte hinzu, die ihm vorangehen.
Kompatible und teilkompatible IDs basierend auf der Konfiguration, die die MBIM-Funktion zur Verfügung stellt
| bKonfiguration | 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 bezieht sich auf den bConfiguration-Wert innerhalb der USB-Konfigurationsbeschreibung der Konfiguration, die die MBIM-Funktion verfügbar macht. bConfiguration kann nicht 1 sein, da dies die Standardkonfiguration ist, die nur die CDROM-Funktion verfügbar macht. bConfiguration darf nicht größer als 4 sein; d. h. die MBIM-Funktion sollte innerhalb der ersten vier Konfigurationen verfügbar gemacht werden.
- compatibleID bleibt für alle Konfigurationen gleich. Die Unterkompatibilitäts-ID ändert sich basierend auf der Konfiguration.
Beispiel
Diese Tabelle zeigt ein Beispielszenario für mehrere Konfigurationen. In der Tabelle sind die in jeder Konfiguration verfügbaren Funktionen und die Aktionen aufgeführt, die für jede dieser Konfigurationen von verschiedenen Versionen des Betriebssystems ausgeführt werden:
Beispiel für ein mobiles Breitbandgerät mit mehreren Konfigurationen
| bConfiguration | 1 (Windows-7-Konfiguration) | 2 (IHV-NCM-1.0-Configuration) | 3 (Windows-8-Konfiguration) | 3 (IHV-NCM-2.0-Configuration) |
|---|---|---|---|---|
Verfügbar gemachte Funktionen |
CDROM SD |
CD-ROM SD NCM1.0 Modem Fernseher GPS FP PC/SC-Smartcard Stimme Diag |
CD-ROM SD MBIM |
CD-ROM SD NCM2.0 Modem Fernseher GPS FP PC/SC-Smartcard Stimme Diag |
Die folgenden Tabellen zeigen die Werte, die vom Microsoft OS-Zeichenfolgendeskriptor und dem Erweiterten Konfigurationsfeaturedeskriptor des Microsoft OS für das Multikonfigurationsszenario des vorherigen Beispiels verwendet werden.
Beispiel für ein mobiles Breitbandgerät mit mehreren Konfigurationen
| Feld | Länge (Bytes) | Wert |
|---|---|---|
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 |
Beispiel für eine erweiterte Konfigurationsfeaturedeskriptorkopfzeile von Microsoft OS
| Offset | Feld | Größe | Wert |
|---|---|---|---|
0 |
dwLength |
4 |
16 |
4 |
bcdVersion |
2 |
0100H |
6 |
wIndex |
2 |
0x0004 |
8 |
bCount |
1 |
1 |
9 |
RESERVIERT |
7 |
Beispiel für erweiterte Microsoft OS-Featuredeskriptorfunktion
| Offset² | Feld | Größe | Wert |
|---|---|---|---|
0 |
bFirstInterfaceNumber |
1 |
|
1 |
bInterfaceCount |
1 |
|
2 |
compatibleID |
8 |
|
10 |
subCompatibleID |
8 |
|
18 |
RESERVIERT |
6 |
²Offset des benutzerdefinierten Eigenschaftenbereichs wurde auf Null zurückgesetzt. Um den Offset eines Felds vom Anfang des erweiterten Konfigurationsdeskriptors zu berechnen, fügen Sie die Länge der Abschnitte hinzu, die ihm vorangehen.