Condividi tramite


Recupero del contenuto di un ROM di configurazione di un nodo IEEE 1394

Windows 7 include 1394ohci.sys, un nuovo driver del bus IEEE 1394, implementato tramite il framework del driver in modalità kernel (KMDF). Il driver del bus 1394ohci.sys sostituisce il driver del bus IEEE legacy nella configurazione porta/miniport, 1394bus.sys e ochi1394.sys. È compatibile con le versioni precedenti con il driver dell'autobus 1394 legacy. Per informazioni su alcune differenze note nel comportamento tra il nuovo e il driver del bus legacy 1394, vedere IEEE 1394 Bus Driver in Windows 7.

In questo argomento vengono fornite informazioni dettagliate sul modo in cui il driver del bus 1394ohci.sys recupera il contenuto della ROM di configurazione di un nodo, che viene usato successivamente per l'enumerazione del dispositivo. L'elaborazione del contenuto della ROM di configurazione di un nodo per l'individuazione dei dispositivi non è stata modificata per Windows 7. Per altre informazioni sull'elaborazione del contenuto della ROM di configurazione di un nodo, vedere Modifica della ROM di configurazione 1394.

Il driver del bus 1394ohci.sys recupera il contenuto della ROM di configurazione di un nodo dopo una reimpostazione del bus 1394 inviando transazioni di lettura asincrone al nodo. Tenta di ridurre il numero di transazioni di lettura asincrone inviate a un nodo per recuperare il contenuto della ROM di configurazione del nodo.

In questo argomento sono incluse le sezioni seguenti:

Recupero dell'intestazione ROM di configurazione

Per recuperare il contenuto della ROM di configurazione di un nodo, un driver client invia una richiesta di REQUEST_GET_LOCAL_HOST_INFO allo stack di driver IEEE 1394 specificando u.GetLocalHostInformation.nLevel per GET_HOST_CONFIG_ROM. Al termine della richiesta, il driver del bus recupera l'intestazione ROM di configurazione del nodo in una struttura GET_LOCAL_HOST_INFO5 . L'intestazione ROM di configurazione si trova nei primi cinque quadlet della ROM di configurazione di un nodo. Questa intestazione include il contenuto del blocco informazioni del bus, come definito nella specifica IEEE-1394a.

Il driver del bus 1394ohci.sys tenta di recuperare l'intestazione ROM di configurazione in un'unica transazione di lettura a blocchi asincrona. Tuttavia, alcuni dispositivi 1394 potrebbero non rispondere correttamente a questa transazione. In questo caso, il nuovo driver bus 1394 usa cinque transazioni di lettura quadlet asincrone per recuperare l'intestazione ROM di configurazione.

La velocità di comunicazione con un nodo viene determinata durante il recupero dell'intestazione ROM di configurazione del nodo. Il driver del bus 1394ohci.sys invia la transazione di lettura asincrona al nodo alla velocità supportata più veloce e considera eventuali nodi più lenti tra il nodo locale e il nodo di destinazione. Se la transazione di lettura asincrona non viene completata correttamente alla velocità supportata più veloce, il driver del bus 1394ohci.sys invia un'altra transazione di lettura asincrona al nodo a una velocità più lenta. Il driver del bus 1394ohci.sys continua a inviare transazioni di lettura asincrone al nodo a velocità più lente e più lente fino al completamento di una transazione. Al termine della transazione asincrona a una determinata velocità, tale velocità viene usata per tutte le comunicazioni aggiuntive con il nodo fino a quando non si verifica un altro ripristino del bus 1394. Se la transazione di lettura asincrona non viene completata alla velocità più lenta possibile, il driver del bus 1394ohci.sys non recupera il contenuto della ROM di configurazione del nodo.

Dopo aver recuperato l'intestazione ROM di configurazione, il driver del bus di 1394ohci.sys controlla se il contenuto della ROM di configurazione del nodo è stato recuperato in precedenza. In tal caso, può riutilizzarne la versione memorizzata nella cache. In caso contrario, deve recuperare il contenuto rimanente della ROM di configurazione del nodo.

Nuova ROM di configurazione

Se il driver del bus 1394ohci.sys determina che il contenuto della ROM di configurazione del nodo non è stato recuperato in precedenza, procede al recupero del contenuto rimanente della ROM di configurazione del nodo.

Il driver del bus 1394ohci.sys usa il valore max_rom nel blocco informazioni del bus dell'intestazione ROM di configurazione per determinare le dimensioni delle transazioni di lettura asincrone da inviare al nodo per recuperare il contenuto rimanente della ROM di configurazione. Se una transazione di lettura asincrona ha esito negativo, indipendentemente dal valore max_rom , il nuovo driver del bus 1394 usa transazioni di lettura quadlet asincrone per recuperare il contenuto rimanente della ROM di configurazione del nodo.

ROM di configurazione recuperato in precedenza

Dopo che il driver del bus di 1394ohci.sys recupera il contenuto dell'intestazione ROM di configurazione di un nodo, determina se l'intestazione corrisponde all'intestazione di una delle copie memorizzate nella cache del contenuto della ROM di configurazione recuperato in precedenza dal driver. Se trova un'intestazione ROM di configurazione corrispondente, riutilizza il contenuto della ROM di configurazione memorizzato nella cache.

Il driver del bus di 1394ohci.sys usa i passaggi seguenti per determinare se può riutilizzare una copia memorizzata nella cache del contenuto della ROM di configurazione di un nodo:

  1. Il driver del bus determina se il node_vendor_id, chip_id hi e chip_id i valori lo nel blocco informazioni del bus dell'intestazione ROM di configurazione del nodo corrispondono a quelli stessi valori nell'intestazione di una delle copie memorizzate nella cache del driver del contenuto della ROM di configurazione.
  2. Se viene trovata una corrispondenza nel passaggio 1, anche il driver del bus determina se il valore di generazione nel blocco informazioni del bus corrisponde. Se il valore di generazione non è stato modificato (o se è impostato su 1, che indica che non cambia mai), il driver del bus riutilizza il contenuto memorizzato nella cache della ROM di configurazione.

Le descrizioni dei valori della ROM di configurazione sono disponibili nei passaggi precedenti nelle specifiche IEEE 1394. Se il driver del bus di 1394ohci.sys non riesce a trovare un'intestazione ROM di configurazione memorizzata nella cache corrispondente o se deve rileggere il contenuto della ROM di configurazione del nodo perché il valore di generazione è cambiato, segue i passaggi precedenti per recuperare il contenuto di una nuova ROM di configurazione.

Stack di driver IEEE 1394
Modifica della ROM di configurazione 1394
REQUEST_GET_CONFIG_ROM