Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Esta seção descreve os objetos do dispositivo que um conjunto de drivers pode criar para hardware USB. Ele ilustra os objetos do dispositivo WDM e como eles são colocados em camadas.
A figura a seguir mostra os objetos de dispositivo que os drivers de amostra criam. Para obter mais informações, consulte Camadas de Driver do WDM: um exemplo.
A partir da parte inferior dessa figura, os objetos do dispositivo nas pilhas de dispositivo de exemplo incluem:
Um PDO e um FDO para o barramento PCI.
O driver do barramento raiz enumera o barramento interno do sistema (o barramento raiz) e cria um PDO para cada dispositivo encontrado. Um desses PDOs é para o barramento PCI. (A figura não mostra o PDO e o FDO para o barramento raiz.)
O gerenciador PnP identifica o driver PCI como o driver de função para o barramento PCI, carrega o driver (se ainda não estiver carregado) e passa o PDO para o driver PCI. Em sua rotina AddDevice, o driver PCI cria um FDO para o barramento PCI (IoCreateDevice) e acopla o FDO à pilha de dispositivos (IoAttachDeviceToDeviceStack). O driver PCI cria e anexa esse FDO como parte de suas responsabilidades como driver de funções do barramento PCI.
Este exemplo não inclui drivers de filtro para o barramento PCI.
Um PDO e um FDO para o controlador de host USB.
O gerenciador PnP orienta o driver PCI a iniciar seu dispositivo (IRP_MN_START_DEVICE) e, em seguida, consulta o driver PCI para seus filhos (IRP_MN_QUERY_DEVICE_RELATIONS com tipo de relação de BusRelations). Em resposta, o driver PCI enumera os dispositivos em seu barramento. Neste exemplo, o driver PCI encontra um controlador de host USB e cria um PDO para esse dispositivo. A seta larga na figura indica que o controlador de host USB é um "filho" do barramento PCI. O driver PCI cria PDOs para seus dispositivos filhos como parte das suas funções como driver do barramento PCI.
O gerenciador PnP identifica o par de driver de classe/miniclasse do controlador de host USB como o driver de função para o controlador de host USB e carrega o par de driver. O gerenciador PnP chama o conjunto de drivers no momento apropriado para criar e anexar um FDO ao controlador de host USB.
Este exemplo não inclui drivers de filtro para o controlador de host USB.
Um PDO e um FDO para o hub USB.
O controlador de host USB enumera seu barramento, localiza o hub USB na única porta e cria um PDO para o hub. O driver do hub USB cria e anexa um FDO para o hub.
Este exemplo não inclui drivers de filtro para o hub USB.
Um PDO, um FDO e dois DOs de filtro para o dispositivo de joystick.
O driver do hub USB enumera seu barramento, localiza um dispositivo HID (o joystick) e cria um PDO para o joystick.
Neste exemplo, um driver de filtro de nível inferior é configurado no registro para dispositivos joystick, de modo que o gerenciador PnP carrega o driver de filtro. O driver de filtro determina que ele é relevante para o dispositivo e cria e anexa um filtro DO à pilha de dispositivos.
O gerenciador PnP determina que o driver de função para o dispositivo joystick é o par de drivers da classe/miniclasse HID e carrega esses drivers. O par de controladores consiste em um controlador de miniclasse vinculado a uma DLL de controlador de classe. Juntos, eles funcionam como um único driver de função para o dispositivo. O par de driver de classe/miniclasse cria um objeto de dispositivo, o FDO, e o anexa à pilha do dispositivo.
Um driver de filtro de nível superior cria e anexa um filtro DO à pilha do dispositivo, de maneira semelhante ao filtro de nível inferior.
O driver de barramento principal sempre cria o PDO na base da pilha de dispositivos para um aparelho específico. Quando os drivers lidam com PnP ou IRPs de energia, eles devem passar cada IRP por toda a pilha de dispositivos até o PDO e seu driver de barramento associado.
A figura a seguir mostra as mesmas pilhas de dispositivos da figura anterior, mas enfatiza quais objetos de dispositivo cada driver cria e gerencia.
Um controlador de barramento abrange mais de uma camada de dispositivos. Um motorista de ônibus cria o FDO para seu controlador ou adaptador de barramento e cria um PDO para cada um de seus dispositivos filho.