Partilhar via


Recursos de hardware

Os recursos de hardware são os caminhos de barramento atribuíveis e endereçáveis que permitem que dispositivos periféricos e processadores de sistema se comuniquem entre si. Os recursos de hardware normalmente incluem endereços de porta de entrada/saída, vetores de interrupção e blocos de endereços de memória relativos a barramento.

Antes que o sistema possa se comunicar com uma instância de dispositivo, o gerenciador PnP deve atribuir recursos de hardware à instância de dispositivo com base no conhecimento de quais recursos estão disponíveis e quais a instância do dispositivo é capaz de usar. Os recursos são atribuídos a cada nó de dispositivo na árvore de dispositivos (supondo que o dispositivo representado precise de recursos e esses recursos estejam disponíveis). O gerenciador PnP controla os recursos de hardware usando listas, que ele associa aos nós do dispositivo. Utiliza dois tipos de listas:

Lista de Requisitos de Recursos
Os dispositivos são normalmente projetados para operar dentro de intervalos de atribuições de recursos. Por exemplo, um dispositivo pode exigir apenas um vetor de interrupção, mas pode ser capaz de usar qualquer um de uma gama de vetores. Para cada instância de dispositivo, o gerenciador PnP mantém uma lista de requisitos de recursos que especifica todos os intervalos de recursos de hardware nos quais o dispositivo pode operar. O nome da lista deriva do fato de que o gerente PnP é obrigado a escolher recursos dessa lista ao atribuí-los ao dispositivo.

O código de modo kernel especifica listas de requisitos de recursos usando estruturas IO_RESOURCE_REQUIREMENTS_LIST (como entrada para rotinas do sistema ou em resposta a IRPs). O código de modo de usuário especifica listas de requisitos de recursos usando estruturas do gerenciador de configuração PnP como entrada para funções do gerenciador de configuração PnP.

Lista de recursos
Quando o gerenciador PnP atribui recursos a um dispositivo, ele controla essas atribuições criando uma lista de recursos atribuídos para cada instância do dispositivo. Essas listas podem ser chamadas de listas de atribuição de recursos, mas esse nome geralmente é abreviado para listas de recursos. O gerenciador PnP pode alterar o conteúdo da lista de recursos à medida que os dispositivos são adicionados ou removidos de um sistema e os recursos são subsequentemente realocados. (Os recursos também podem ser atribuídos por um BIOS PnP. Além disso, o software de instalação — usando arquivos INF ou entrada do usuário — pode forçar o gerente PnP a atribuir recursos específicos a um dispositivo.)

O código de modo kernel especifica listas de recursos usando estruturas CM_RESOURCE_LIST (como entrada para rotinas do sistema ou em resposta a IRPs). O código de modo de usuário especifica listas de recursos usando estruturas do gerenciador de configuração PnP como entrada para funções do gerenciador de configuração PnP.

O gerenciador PnP armazena listas de requisitos de recursos e listas de recursos no Registro, onde eles podem ser exibidos usando Regedit.exe. Os drivers podem aceder a essas listas indiretamente através das rotinas Plug and Play e IRPs Menores Plug and Play. Os aplicativos de modo de usuário podem usar as funções do gerenciador de configuração PnP. (Drivers e aplicativos não devem acessar diretamente essas listas usando funções do Registro porque o formato de armazenamento está sujeito a alterações em uma versão futura.)

Configurações lógicas

As listas de requisitos de recursos e as listas de recursos contêm uma ou mais configurações lógicas. Cada configuração lógica identifica um intervalo de recursos aceitáveis ou um conjunto de recursos específicos para uma instância de dispositivo específica. Além disso, cada configuração lógica para uma instância de dispositivo pertence a um dos tipos de configuração lógica. Os tipos de configuração estão listados abaixo. Várias configurações lógicas, do mesmo tipo ou de tipos diferentes, podem ser atribuídas a cada instância do dispositivo.

Tipos de configuração lógica para listas de requisitos de recursos

Configuração Básica
Uma lista de requisitos de recursos que identifica intervalos de recursos fornecidos por um dispositivo Plug and Play. Um driver deve retornar esta lista quando receber o IRP_MN_QUERY_RESOURCE_REQUIREMENTS IRP. (A configuração básica para um dispositivo não-PnP pode ser descrita em um arquivo INF. Nesse caso, o software de instalação do dispositivo lê o arquivo INF e chama as funções do gerenciador de configurações PnP para criar uma lista de requisitos.)

Configuração filtrada
Uma lista de requisitos de recursos que foi fornecida a uma pilha de drivers, possivelmente modificada e, em seguida, retornada pela pilha de drivers, em resposta ao IRP IRP_MN_FILTER_RESOURCE_REQUIREMENTS . O gerenciador PnP usa a configuração filtrada resultante como base para alocar recursos.

Substituir configuração
Uma lista de requisitos de recursos que substitui as configurações básicas. Normalmente, um instalador de dispositivo cria uma configuração de substituição se o arquivo INF do dispositivo incluir uma seção INF DDInstall.LogConfigOverride. Uma configuração de substituição não será removida se o dispositivo for fisicamente removido do sistema.

Tipos de configuração lógica para listas de recursos

Configuração de inicialização
Uma lista de recursos que identifica os recursos atribuídos a uma instância de dispositivo quando o sistema é inicializado. (Para dispositivos PnP, esta é a configuração fornecida pelo BIOS; para dispositivos não-PnP, esses recursos podem ser selecionados por jumpers na placa.) Um driver deve retornar essa lista de recursos quando receber o IRP IRP_MN_QUERY_RESOURCES . (Uma configuração de inicialização pode estar parcialmente vazia se o BIOS não puder determinar todos os recursos usados por um dispositivo.) O gerenciador PnP pode modificar essa lista se um dispositivo for removido ou reiniciado. Para dispositivos não-PnP, esse tipo de configuração pode ser usado em vez de uma configuração forçada, caso em que tem uma prioridade de configuração menor do que uma configuração forçada equivalente. Apenas uma configuração de inicialização pode existir para cada instância do dispositivo.

Configuração forçada
Uma lista de recursos que identifica os recursos que uma instância de dispositivo deve usar. Uma configuração forçada impede que o gerenciador PnP atribua outros recursos à instância do dispositivo. Um instalador de dispositivo pode criar uma configuração forçada com base em informações contidas em um INF ou recebidas de um usuário. Uma configuração forçada não é removida se o dispositivo for fisicamente removido do sistema. Apenas uma configuração forçada pode existir para cada instância do dispositivo.

Configuração atribuída
Uma lista de recursos que identifica os recursos atualmente em uso por uma instância de dispositivo. Apenas uma configuração alocada pode existir para cada instância do dispositivo.

Os drivers de dispositivo são responsáveis por determinar a configuração básica, a configuração filtrada e a configuração de inicialização de um dispositivo compatível com PnP, e por retornar essas informações em resposta aos IRPs enviados pelo gerenciador PnP. (Para obter mais informações, consulte Adicionando um dispositivo PnP a um sistema em execução.) O software de instalação do driver pode criar configurações de substituição, configurações forçadas e, para dispositivos não-PnP, configurações de inicialização. O gerenciador PnP mantém a configuração alocada de cada instância de dispositivo.

Uma prioridade é atribuída a cada configuração quando ela é criada. Se o gerenciador PnP descobrir que uma instância de dispositivo recebeu várias configurações lógicas do mesmo tipo, ele tentará usar primeiro aquela com a prioridade mais alta. Se essa configuração resultar em conflitos de recursos, ela tentará a configuração com a próxima prioridade mais baixa. (Para obter uma lista de prioridades de configuração, consulte CM_Add_Empty_Log_Conf.)