Domanda

Sono curioso di sapere come la gestione periferiche di windows, ottiene l'Id hardware di un dispositivo, anche se nessun driver di dispositivo può essere caricato per il dispositivo di sicurezza.Qualcuno ha un indizio su come Windows va su questo?

In una nota correlata, io sono interessato a sostenere la localizzazione della lingua per il software di scrittura;è possibile per un dispositivo e/o driver di riferire il suo nome e descrizione in modo localizzato?C'è una pratica comune per questo già?

Grazie per il vostro tempo.

È stato utile?

Soluzione

Prima, per capire l'ordine dei driver caricati, si consiglia di accendere il Dispositivo Manager in Vista | Dispositivi di Connessione la modalità.

Come noterete, i dispositivi si trovano al di sotto del loro autista di autobus.Per i dispositivi PCI, che sarà "bus PCI".Per i dispositivi USB, sarebbe stato il loro hub USB.Ogni autista di autobus ha una sua idea su come identificatore stringhe devono essere formattati:

  • Id Istanza Periferica
  • Id Hardware
  • Id Compatibili
  • Posizione, etc.

Non li restituisce in risposta a IRP_MN_QUERY_ID (BusQueryInstanceID, BusQueryHardwareIDs, BusQueryCompatibleIDs) e IRP_MN_QUERY_DEVICE_TEXT (DeviceTextDescription, DeviceTextLocationInformation ecc.)

Naturalmente, dal momento che l'autista del bus ha enumerato le periferiche (es.creato il bambino dispositivi si sta vedendo) in primo luogo (attraverso qualsiasi interfaccia standard appropriati per il bus;ad es.'Get Device/String Descrittore' su USB), si conosce la loro vendor ID, ID del prodotto etc.

Il driver del dispositivo non deve essere caricato in questo momento.Infatti, non può essere caricato.L'Id di periferica sono esattamente ciò che indica il PnP è un sistema di driver che corrisponde al dispositivo.

Come per la localizzazione:

A differenza di IRP_MN_QUERY_ID, che fornisce opaco stringhe destinati al dispositivo corrispondente, il IRP_MN_QUERY_DEVICE_TEXT informazioni era infatti destinato ad essere localizzato.A tale scopo, si riceve la richiesta di ID delle impostazioni Internazionali (LCID) dei dati di input (Parameters.QueryDeviceText.LocaleId).

[Come Alphaneo notato, un hub USB, il driver potrebbe passare questo LCID poi per il dispositivo USB (in un raggio di un Descrittore di Stringa richiesta), sperando che il dispositivo USB per sé ha le stringhe localizzate.]

Altri suggerimenti

Il processo di livello superiore è chiamato enumerazione.Più moderno dispositivo autobus supportare un meccanismo che consente l'OS query il buss e determinare quali dispositivi sono connessi al bus.

Il PCI famiglia di autobus tutto il supporto di enumerazione.Il bus PCI ha una speciale enumerazione spazio solo per questo.Questo è dove "Plug-n-Play" ID è venuto da.

L'id del dispositivo è di identificare in modo univoco un dispositivo sul bus e attivare il sistema operativo per trovare il driver corretto per il dispositivo.

Altri autobus, tra cui USB e FireWire sono enumerazione strategie

L'ID del dispositivo, è una combinazione di informazioni fornite dal dispositivo.Per esempio, per un dispositivo USB, la stringa è basato sul VID e PID (Vendor ID e Product ID).Ora, questo non può accadere se non viene caricato il driver.Atleast qualche driver, driver di bus dovrebbe essere caricato per il sistema operativo per ottenere l'ID del Dispositivo.

Ora, per il supporto della lingua, credo che per WDM driver, c'è un QUERY_LANG o qualcosa del genere, non ricordo correttamente, in alternativa alcuni dispositivi, come USB, hanno un Linguaggio supporto ID.Questo ID di lingua determina la lingua del Prodotto descrittore di stringa.

Si prega di notare che vi è una differenza tra l'hardware identifier/numero di serie e il vero unico ID hardware.Forse questo spiega meglio:http://www.soft.tahionic.com/download-hdd_id/hardware%20ID%20programmer%27s%20DLL.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top