Frage

Ich bin gespannt, wie die Windows-Geräte-Manager das Hardware-IDs für ein Gerät erhalten, auch wenn kein Gerätetreiber noch für das Gerät geladen werden. Jedes hat einen Anhaltspunkt auf, wie Windows geht über das?

Über einen entsprechenden Hinweis, Ich interessiere mich für die Unterstützung der Sprachlokalisierung für die Software, die wir schreiben; ist es möglich, für ein Gerät und / oder Fahrer seinen freundlichen Namen und eine Beschreibung in einer lokalisierten Art und Weise zu berichten? Gibt es eine gängige Praxis für diese bereits?

Vielen Dank für Ihre Zeit.

War es hilfreich?

Lösung

Zuerst die Reihenfolge der Fahrer zu verstehen geladen, Sie empfohlen, die Geräte-Manager in Ansicht wechseln | Geräte nach Verbindung Modus.

Wie würden Sie bemerken, werden die Geräte unter ihrem Busfahrer befindet. Für PCI-Geräte, wird es „PCI-Bus“ sein. Für USB-Geräte, wäre es ihr USB-Hub sein. Jeder Busfahrer hat seine eigene Vorstellung davon, wie die Kennung Strings formatiert werden soll:

  • Device Instance Id
  • Hardware Ids
  • kompatibel Ids
  • Standort, etc.

Es gibt sie in Reaktion auf IRP_MN_QUERY_ID (BusQueryInstanceID, BusQueryHardwareIDs, BusQueryCompatibleIDs) und IRP_MN_QUERY_DEVICE_TEXT (DeviceTextDescription, DeviceTextLocationInformation usw.)

Natürlich, da der Busfahrer die Geräte aufgezählt (dh geschaffen, um die untergeordneten Geräte Sie sehen) an erster Stelle (durch was auch immer Standard-Schnittstelle geeignet für den Bus, zB ‚Get Device / String Descriptor‘ auf USB), es kennt ihre Hersteller-ID, Produkt-ID etc.

Der Fahrer Gerät hat zu diesem Zeitpunkt nicht geladen werden. In der Tat, es kann nicht geladen werden. Die Geräte-IDs sind genau das, was die PnP-System anweist, welche Treiber das Gerät übereinstimmt.

In Bezug auf die Lokalisierung:

Im Gegensatz zu IRP_MN_QUERY_ID, die für die Geräteanpassung, die IRP_MN_QUERY_DEVICE_TEXT Information bestimmt undurchsichtige Strings liefert war in der Tat zu lokalisierenden gedacht. Zu diesem Zweck erhalten Sie die angeforderten Gebietsschema-ID (LCID) in den Eingangsdaten (Parameters.QueryDeviceText.LocaleId).

[Wie Alphaneo erwähnt, ein USB-Hub-Treiber könnten diesen LCID passieren weiter zum USB-Gerät (innerhalb eines String Descriptor Anfrage Get), die Hoffnung, dass das USB-Gerät selbst Strings lokalisiert hat.]

Andere Tipps

Der Top-Level-Prozess wird Aufzählung genannt. Die meisten modernen Gerätebusse unterstützen einen Mechanismus, der die OS Abfrage der Buss können und bestimmen, welche Geräte mit dem Bus verbunden sind.

Die PCI-Familie von Bussen aller Unterstützung Aufzählung. Der PCI-Bus verfügt über eine spezielle Aufzählung Raum rel="nofollow nur für diese. Dies ist, wo „Plug-n-Play“ IDs kommen.

Die Geräte-ID ist eindeutig ein Gerät auf dem Bus identifizieren und ermöglicht es das O die richtigen Treiber für das Gerät zu finden.

Andere Busse, einschließlich USB und FireWire haben Aufzählung Strategien

Geräte-ID ist eine Kombination von Informationen von der Vorrichtung gegeben. Zum Beispiel für ein USB-Gerät, wird die Zeichenfolge auf der Grundlage der VID und PID (Vendor ID und Produkt-ID). Nun kann dies nicht passieren, wenn kein Treiber geladen ist. Zumindest einige Fahrer, Busfahrer müßten geladen werden für das Betriebssystem die Geräte-ID erhalten.

Nun, für Sprachunterstützung, ich denke, für WDM-Treiber gibt es einen QUERY_LANG oder etwas, ich nicht richtig erinnere, alternativ einige Geräte wie USB, Sprach-ID-Unterstützung. Diese Sprache ID bestimmt die Sprache des Produktdeskriptor String.

Bitte beachten Sie, dass es ein Unterschied zwischen der Hardware-Kennung / Seriennummer und der wahren eindeutigen Hardware-ID. Vielleicht wird dies besser erklären: http://www.soft.tahionic.com /download-hdd_id/hardware%20ID%20programmer%27s%20DLL.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top