Compartilhar via


Recuperando o conteúdo de um ROM de configuração de um nó IEEE 1394

O Windows 7 inclui 1394ohci.sys, um novo driver de barramento IEEE 1394, implementado usando a estrutura de driver do modo kernel (KMDF). O driver de barramento 1394ohci.sys substitui o driver de barramento IEEE herdado na configuração de porta/miniporte-- 1394bus.sys e ochi1394.sys. Ele é compatível com versões anteriores com o motorista de ônibus herdado 1394. Para obter informações sobre algumas diferenças conhecidas no comportamento entre o novo e o driver de ônibus herdado 1394, consulte Driver de Barramento IEEE 1394 no Windows 7.

Este tópico fornece detalhes sobre como o 1394ohci.sys driver de barramento recupera o conteúdo da ROM de configuração de um nó, que é usado posteriormente para enumeração de dispositivo. O processamento do conteúdo da ROM de configuração de um nó para descoberta de dispositivos não foi alterado para o Windows 7. Para obter mais informações sobre como o conteúdo da ROM de configuração de um nó é processado, consulte Modificando o ROM de configuração 1394.

O 1394ohci.sys driver de barramento recupera o conteúdo da ROM de configuração de um nó após uma redefinição de barramento 1394 enviando transações de leitura assíncronas para o nó. Ele tenta reduzir o número de transações de leitura assíncronas enviadas a um nó para recuperar o conteúdo da ROM de configuração do nó.

Este tópico contém as seguintes seções:

Recuperando o cabeçalho rom de configuração

Para recuperar o conteúdo da ROM de configuração de um nó, um driver cliente envia uma solicitação de REQUEST_GET_LOCAL_HOST_INFO para a pilha de driver do IEEE 1394 especificando o u.GetLocalHostInformation.nLevel para GET_HOST_CONFIG_ROM. Ao concluir a solicitação, o driver de barramento recupera o cabeçalho ROM de configuração do nó em uma estrutura GET_LOCAL_HOST_INFO5 . O cabeçalho rom de configuração está nos cinco primeiros quadlets da ROM de configuração de um nó. Esse cabeçalho inclui o conteúdo do bloco de informações do barramento, conforme definido na especificação IEEE-1394a.

O 1394ohci.sys driver de barramento tenta recuperar o cabeçalho rom de configuração em uma única transação de leitura de bloco assíncrona. No entanto, determinados dispositivos 1394 podem não responder a essa transação corretamente. Nessa situação, o novo driver de barramento 1394 usa cinco transações de leitura de quadlet assíncronas para recuperar o cabeçalho rom de configuração.

A velocidade de comunicação com um nó é determinada durante a recuperação do cabeçalho ROM de configuração do nó. O 1394ohci.sys motorista de ônibus envia a transação de leitura assíncrona para o nó na velocidade mais rápida com suporte e considera quaisquer nós mais lentos entre o nó local e o nó de destino. Se a transação de leitura assíncrona não for concluída com êxito na velocidade mais rápida com suporte, o 1394ohci.sys driver de ônibus enviará outra transação de leitura assíncrona para o nó a uma velocidade mais lenta. O 1394ohci.sys motorista de ônibus continua a enviar transações de leitura assíncronas para o nó a velocidades mais lentas e lentas até que uma transação seja concluída com êxito. Depois que a transação assíncrona for concluída a uma velocidade específica, essa velocidade será usada para toda a comunicação adicional com o nó até que ocorra outra redefinição de barramento 1394. Se a transação de leitura assíncrona não for concluída na velocidade mais lenta possível, o 1394ohci.sys driver de barramento não recuperará o conteúdo da ROM de configuração do nó.

Depois que o cabeçalho rom de configuração é recuperado, o driver do barramento 1394ohci.sys verifica se o conteúdo da ROM de configuração do nó foi recuperado anteriormente. Nesse caso, ele pode reutilizar sua versão armazenada em cache. Caso contrário, ele deverá recuperar o conteúdo restante da ROM de configuração do nó.

Nova ROM de configuração

Se o 1394ohci.sys driver de barramento determinar que o conteúdo da ROM de configuração do nó não foi recuperado anteriormente, ele continuará a recuperar o conteúdo restante da ROM de configuração do nó.

O 1394ohci.sys driver de barramento usa o valor max_rom no bloco de informações do barramento do cabeçalho de ROM de configuração para determinar o tamanho das transações de leitura assíncronas a serem enviadas ao nó para recuperar o conteúdo restante do ROM de configuração. Se qualquer transação de leitura assíncrona falhar, independentemente do valor max_rom , o novo driver de barramento de 1394 usará transações de leitura de quadlet assíncronas para recuperar o conteúdo restante do ROM de configuração do nó.

ROM de configuração recuperada anteriormente

Depois que o 1394ohci.sys driver de barramento recupera o conteúdo do cabeçalho ROM de configuração de um nó, ele determina se o cabeçalho corresponde ao cabeçalho de uma das cópias armazenadas em cache do conteúdo rom de configuração que o driver recuperou anteriormente. Se o encontrar um cabeçalho ROM de configuração correspondente, ele reutilizará o conteúdo de ROM de configuração armazenado em cache.

O 1394ohci.sys driver de barramento usa as seguintes etapas para determinar se ele pode reutilizar uma cópia armazenada em cache do conteúdo da ROM de configuração de um nó:

  1. O driver de barramento determina se os valores node_vendor_id, chip_id hi e chip_id lo no bloco de informações do barramento do cabeçalho ROM de configuração do nó correspondem a esses mesmos valores no cabeçalho de uma das cópias armazenadas em cache do conteúdo de ROM de configuração do driver.
  2. Se uma correspondência for encontrada na etapa 1, o motorista do ônibus determinará se o valor de geração no bloco de informações do barramento também corresponde. Se o valor de geração não tiver sido alterado (ou se estiver definido como 1, o que indica que ele nunca muda), o driver de barramento reutilizará o conteúdo armazenado em cache da ROM de configuração.

Você pode encontrar descrições dos valores de ROM de configuração nas etapas anteriores nas especificações do IEEE 1394. Se o 1394ohci.sys driver de barramento não encontrar um cabeçalho ROM de configuração armazenado em cache correspondente ou se precisar ler novamente o conteúdo da ROM de configuração do nó porque o valor de geração foi alterado, ele seguirá as etapas anteriores para recuperar o conteúdo de um novo ROM de configuração.

A pilha de driver do IEEE 1394
Modificando a ROM de configuração 1394
REQUEST_GET_CONFIG_ROM