Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Os recursos de hardware de um sistema são as portas de E/S, vetores de interrupção, canais de acesso direto à memória (DMA) e outros caminhos de comunicação que devem ser atribuídos a cada dispositivo conectado ao sistema. Os tópicos nesta seção descrevem como os drivers do Kernel-Mode Driver Framework (KMDF) negociam os requisitos de recursos de hardware para um dispositivo, revisam a lista de recursos proposta e recebem os recursos atribuídos. Esta seção também discute como os drivers KMDF e UMDF (User-Mode Driver Framework) acessam e mapeiam recursos atribuídos.
Depois que um usuário conecta um dispositivo PnP, o driver que enumera o dispositivo normalmente cria uma ou mais configurações lógicas, que são combinações de recursos de hardware que o dispositivo pode usar. Essas configurações incluem o seguinte:
Um de configuração de inicialização que lista os recursos de hardware que o dispositivo requer quando o sistema é iniciado. (Para dispositivos PnP, essas informações são fornecidas pelo BIOS.)
Configurações adicionais nas quais o dispositivo pode operar. O driver agrupa essas configurações adicionais em uma lista de requisitos de recursos . O gestor PnP acabará por selecionar recursos desta lista para atribuir ao dispositivo.
Depois que o driver cria as configurações lógicas, ele as envia para a estrutura e a estrutura as envia para o gerenciador PnP.
Em seguida, o gerenciador PnP determina quais drivers o dispositivo requer e os carrega se ainda não estiverem carregados. O gerenciador PnP envia a lista de requisitos de hardware do dispositivo para os drivers do dispositivo para revisão. Os drivers de função e filtro podem modificar essa lista e enviá-la de volta para o gerenciador PnP.
O gerenciador PnP examina a lista de requisitos de hardware modificada e determina quais dos recursos especificados estão realmente disponíveis no sistema. Se o dispositivo requer recursos que o gerenciador PnP havia atribuído anteriormente a outro dispositivo, o gerenciador PnP pode tentar redistribuir recursos entre os dispositivos do sistema.
Em seguida, o gerenciador PnP cria uma lista de recursos , que é uma lista de recursos que o gerente PnP pretende atribuir ao dispositivo. O gerenciador PnP envia essa lista para os drivers do dispositivo para revisão. Neste ponto, a função e os drivers de filtro podem remover recursos da lista, mas não podem adicionar recursos a ela.
Finalmente, o gerenciador PnP atribui recursos ao dispositivo. A estrutura passa a lista de recursos para os drivers de função e de filtro do dispositivo, e o driver de função do dispositivo realiza a inicialização necessária para que o dispositivo e o driver possam acessar os recursos.
As etapas a seguir descrevem o processo com mais detalhes:
Um motorista de autocarro deteta o dispositivo e fá-lo.
A estrutura chama o driver de barramento EvtDeviceResourcesQuery função de retorno de chamada, que cria uma lista de recursos que descreve a configuração de inicialização do dispositivo.
A estrutura chama a função de retorno de chamada EvtDeviceResourceRequirementsQuery do controlador de barramento, que cria uma lista de requisitos de recursos para o dispositivo.
O gerenciador PnP determina quais drivers o dispositivo requer e os carrega, se ainda não estiverem carregados, para criar uma pilha de drivers para o dispositivo.
O gestor PnP envia a lista de requisitos de recursos do dispositivo para a pilha de controladores para revisão. À medida que a lista percorre a pilha de drivers, a estrutura chama cada função e do driver de filtro EvtDeviceFilterRemoveResourceRequirements função de retorno de chamada. À medida que a lista sobe a pilha, o framework chama cada função e o driver de filtro EvtDeviceFilterAddResourceRequirements função de chamada de retorno. Ambas as funções de retorno de chamada podem modificar a lista de requisitos de recursos.
O gestor PnP cria uma lista de recursos para o dispositivo e envia-a para o stack de drivers para revisão. A estrutura chama cada função e do driver de filtro EvtDeviceRemoveAddedResources função de retorno de chamada, que remove recursos que o driver EvtDeviceFilterAddResourceRequirements função de retorno de chamada adicionada para que o driver de barramento não tente usá-los.
A estrutura recebe a lista final de recursos do gerente PnP e a armazena.
Se um driver chamar WdfInterruptCreate para criar objetos de interrupção, a estrutura localizará recursos de interrupção na lista de recursos e os atribuirá aos objetos de interrupção.
Depois que o dispositivo entra em um estado D0 não inicializado, a estrutura chama o de cada driver EvtDevicePrepareHardware função de retorno de chamada, passando versões brutas e traduzidas da lista de recursos do dispositivo como um argumento de entrada. O driver pode salvar a lista de recursos, que é válida até que a estrutura chame a função de retorno de chamada EvtDeviceReleaseHardware do driver.