Microsoft OS-Deskriptoren für USB-Geräte

Zusammenfassung

Microsoft stellt eine Reihe proprietärer Geräteklassen und USB-Deskriptoren bereit, die als Microsoft OS Descriptors (MODs) bezeichnet werden.

Aufgrund der schnellen Entstehung von Geräten, die mehrere Hardwarefunktionen enthalten, stellen viele Hersteller fest, dass ihre Geräte nicht bequem in eine der aktuellen USB-Geräteklassen (Universal Serial Bus) passen. Dies entzieht diesen Herstellern eines der attraktivsten Features der USB-Technologie: die Standardisierung der Treibersoftware (entsprechend der Klasse des Geräts). Microsoft Windows bietet native Klassentreiber für die meisten Geräte, die zu usb-Standardgeräteklassen gehören, und diese Treiber ermöglichen es Endbenutzern, solche Geräte einfach an den Computer anzufügen, ohne spezielle Software installieren zu müssen.

Für Hersteller, deren Geräte nicht in den aktuellen Satz von USB-Geräteklassen passen, hat Microsoft Corporation eine Reihe proprietärer Geräteklassen und USB-Deskriptoren entwickelt, die als Microsoft OS Descriptors (MODs) bezeichnet werden. Sowohl Anwendungen als auch Systemsoftware können die Geräte identifizieren, die zu den von Microsoft definierten Geräteklassen gehören, indem sie die Geräte abfragen, um zu ermitteln, ob sie MODs unterstützen.

Microsoft OS-Deskriptoren haben andere wichtige Verwendungsmöglichkeiten als die Unterstützung der proprietären Geräteklassen. Insbesondere bieten sie einen Mechanismus, um den maximalen Nutzen aus der Gerätefirmware abzuleiten. Mithilfe von Microsoft-Betriebssystemdeskriptoren können Sie die Firmware verwenden, um Hilfedateien, spezielle Symbole, URLs (Uniform Resource Locators), Registrierungseinstellungen und andere Daten bereitzustellen, die erforderlich sind, um die Installation zu vereinfachen und die Kundenzufriedenheit zu erhöhen. In einigen Fällen können Sie auf Speichermedien wie Disketten und CDs verzichten, was die Bereitstellung und Unterstützung von Upgrades vereinfacht.

Operating-System Support

Microsoft OS 1.0-Deskriptoren werden unterstützt von:

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

Microsoft OS 2.0-Deskriptoren werden unterstützt von:

  • Windows 8.1

Warum stellt Windows eine Zeichenfolgendeskriptoranforderung zum Indizieren 0xEE aus?

Geräte, die Microsoft-Betriebssystemdeskriptoren unterstützen, müssen einen speziellen USB-Zeichenfolgendeskriptor in der Firmware unter dem festen Zeichenfolgenindex von 0xEE speichern. Dieser Zeichenfolgendeskriptor wird als Microsoft-Betriebssystemzeichenfolgendeskriptor bezeichnet.

  • Sein Vorhandensein gibt an, dass das Gerät mindestens eine Betriebssystemfunktionsbeschreibung enthält.
  • Sie enthält die Daten, die zum Abrufen der zugehörigen Betriebssystemfeaturedeskriptoren erforderlich sind.
  • Es enthält ein Signaturfeld, das den Betriebssystemzeichenfolgendeskriptor von anderen Zeichenfolgen unterscheidet, die IHVs möglicherweise bei 0xEE speichern möchten.
  • Es enthält eine Versionsnummer, die zukünftige Überarbeitungen von Microsoft-Betriebssystemdeskriptoren zulässt.

Wenn bei 0xEE kein Zeichenfolgendeskriptor vorhanden ist oder der Zeichenfolgendeskriptor an diesem Index kein gültiger Betriebssystemzeichenfolgendeskriptor ist, geht Windows davon aus, dass das Gerät keine Betriebssystemfunktionsdeskriptoren enthält.

Wenn ein neues Gerät zum ersten Mal an einen Computer angefügt wird, fordert ein Betriebssystem, das Microsoft-Betriebssystemdeskriptoren unterstützt, den Zeichenfolgendeskriptor an, der sich am Index 0xEE befindet. Der Microsoft OS String Descriptor enthält ein eingebettetes Signaturfeld, das das Betriebssystem verwendet, um es von anderen Zeichenfolgen zu unterscheiden, die sich möglicherweise im Index 0xEE. Das Vorhandensein eines Zeichenfolgendeskriptors, der das richtige Signaturfeld bei index 0xEE enthält, gibt dem Betriebssystem an, dass das Gerät Microsoft-Betriebssystemdeskriptoren unterstützt. Der Microsoft-Betriebssystemzeichenfolgendeskriptor stellt dem Betriebssystem auch Versionsinformationen zur Verfügung.

Das Betriebssystem fragt den Zeichenfolgendeskriptor bei index 0xEE während der Geräteaufzählung ab, bevor der Treiber für das Gerät geladen wurde, was zu Fehlfunktionen bei einigen Geräten führen kann. Solche Geräte werden von Versionen des Windows-Betriebssystems, die Microsoft-Betriebssystemdeskriptoren unterstützen, nicht unterstützt.

Wenn ein Gerät keinen gültigen Zeichenfolgendeskriptor bei index 0xEE enthält, muss es mit einem Stallpaket (d. h. einem Paket, das einen Paketbezeichner des Typs STALL enthält) reagieren, der im Abschnitt "Anforderungsfehler" der Spezifikation für den universellen seriellen Bus beschrieben wird. Wenn das Gerät nicht mit einem Verzögerten Paket antwortet, stellt das System ein Paket mit einem Ende ohne Null auf das Gerät aus, um die Wiederherstellung aus seinem verzögerten Zustand zu erleichtern (nur Windows XP).

Nachdem das Betriebssystem einen Microsoft-Betriebssystemzeichenfolgendeskriptor von einem Gerät angefordert hat, erstellt es den folgenden Registrierungsschlüssel:

HLKM\SYSTEM\CurrentControlSet\Control\UsbFlags\vvvvpppprrrrr

Das Betriebssystem erstellt unter diesem Registrierungsschlüssel einen Registrierungseintrag namens osvc, der angibt, ob das Gerät Microsoft-Betriebssystemdeskriptoren unterstützt. Wenn das Gerät beim ersten Abfragen des Betriebssystems nach einem Microsoft-Betriebssystemzeichenfolgendeskriptor keine gültige Antwort liefert, stellt das Betriebssystem keine weiteren Anforderungen für diesen Deskriptor.

Informationen zu Registrierungseinträgen unter diesem Schlüssel finden Sie unter USB-Geräteregistrierungseinträge.

Weitere Informationen finden Sie unter Microsoft-Betriebssystemdeskriptoren.

Welche Arten von Betriebssystemfeaturedeskriptoren werden von Windows unterstützt?

Alle Informationen, die als Featuredeskriptor gespeichert werden sollen, müssen einem der von Microsoft definierten Standardformate entsprechen. Zusätzliche Funktionsdeskriptoren können nicht ohne Die Zustimmung von Microsoft definiert oder implementiert werden. Microsoft hat die folgenden Funktionsdeskriptoren definiert:

  • Erweiterte Compat-ID. Windows verwendet Klassen- und Unterklassencodes, um den entsprechenden Standardtreiber für ein USB-Gerät zu finden. Diese Codes muss jedoch von der Arbeitsgruppe "USB-Geräte" zugewiesen werden. Dies bedeutet, dass Geräte, die neue Arten von Features implementieren, häufig noch nicht über entsprechende Klassen- und Unterklassencodes verfügen, sodass Windows die Codes nicht verwenden kann, um einen Standardtreiber auszuwählen. IHVs können dieses Problem umgehen, indem sie die Informationen in der Firmware als erweiterten Funktionsdeskriptor für die compat ID OS speichern. Windows kann diese Informationen dann abrufen, wenn das Gerät angeschlossen ist, und sie verwenden, um zu bestimmen, welcher Standardtreiber geladen werden soll.
  • Erweiterte Eigenschaften. Derzeit gibt es zwei Ebenen, auf denen Eigenschaften für ein USB-Gerät deklariert werden können: Klassenebene oder Devnode-Ebene. Mit dem Betriebssystemfeaturedeskriptor für erweiterte Eigenschaften kann ein Anbieter zusätzliche Eigenschaften wie Hilfeseiten, URLs und Symbole der Gerätefirmware speichern.

Microsoft OS 1.0-Deskriptorenspezifikation
Microsoft OS 2.0-Deskriptorenspezifikation
Erstellen von USB-Geräten für Windows