Compartilhar via


O que é um motorista?

Um driver é um componente de software que permite que o sistema operacional e um dispositivo se comuniquem. Por exemplo, quando um aplicativo precisa ler dados de um dispositivo, ele chama uma função implementada pelo sistema operacional. Em seguida, o sistema operacional chama uma função implementada pelo driver. O driver, geralmente desenvolvido pelo fabricante do dispositivo, sabe como se comunicar com o hardware do dispositivo para obter os dados. Quando o driver obtém os dados, ele os devolve ao sistema operacional, que os devolve ao aplicativo.

Diagrama que mostra a interação entre um aplicativo, sistema operacional e driver.

Expandindo a definição

Essa explicação simplifica o conceito sobre controladores. Aqui estão mais alguns pontos a serem considerados:

  • O fabricante do dispositivo nem sempre desenvolve o driver. Se um dispositivo seguir um padrão de hardware publicado, a Microsoft poderá escrever o driver para que o designer de dispositivos não precise fornecer um.

  • Nem todos os drivers se comunicam diretamente com um dispositivo. Muitas vezes, vários drivers estruturados em camadas em uma pilha de drivers participam de uma solicitação de E/S.

    A maneira convencional de visualizar a pilha é com o primeiro participante na parte superior e o último participante na parte inferior, conforme mostrado neste diagrama. Alguns drivers na pilha alteram a solicitação de um formato para outro. Esses drivers não se comunicam diretamente com o dispositivo. Em vez disso, eles alteram a solicitação e a transmitem para drivers mais abaixo na pilha.

    Diagrama que ilustra a comunicação entre um aplicativo, um sistema operacional, três drivers e um dispositivo.

    • Driver de função: o driver que se comunica diretamente com o dispositivo é chamado de driver de função.

    • Driver de filtro: os drivers que fazem processamento auxiliar são chamados de drivers de filtro.

    Para obter mais informações, consulte pilhas de driver.

  • Alguns drivers de filtro observam e registram informações sobre solicitações de E/S, mas não participam delas. Por exemplo, alguns drivers de filtro atuam como verificadores para garantir que os outros drivers na pilha manipulem a solicitação de E/S corretamente.

Para refinar a definição, um driver é qualquer componente de software que observe ou participe da comunicação entre o sistema operacional e um dispositivo.

Drivers de software

Essa definição expandida é mais precisa, mas ainda está incompleta. Alguns drivers não estão associados a nenhum dispositivo de hardware.

Se você precisar escrever uma ferramenta que acesse as estruturas de dados do sistema operacional principal, poderá dividir a ferramenta em dois componentes. O primeiro componente é executado no modo de usuário e apresenta a interface do usuário. O segundo componente é executado no modo kernel e acessa os principais dados do sistema operacional. O componente executado no modo de usuário é chamado de aplicativo. O componente executado no modo kernel é chamado de driver de software. Um driver de software não está associado a um dispositivo de hardware.

Este diagrama ilustra um aplicativo de modo de usuário comunicando-se com um driver de software no modo kernel.

Diagrama que ilustra a relação entre um aplicativo e um driver de software.

Os drivers de software sempre são executados no modo kernel. Eles são principalmente escritos para acessar dados protegidos, disponíveis apenas no modo kernel. Nem todos os drivers de dispositivo precisam de acesso a dados e recursos no modo kernel, portanto, alguns drivers de dispositivo são executados no modo de usuário.

Para obter mais informações sobre os modos de processador, consulte o modo de usuário e o modo kernel.

Motoristas de ônibus

Outro tipo de motorista é o motorista do ônibus. Para entender os drivers de ônibus, você precisa entender os nós do dispositivo e a árvore do dispositivo.

Para obter informações sobre árvores de dispositivos, nós de dispositivo e controladores de barramento, consulte Nós de dispositivo e pilhas de dispositivos.

Mais informações sobre drivers de função

A explicação até agora simplifica demais o function driver. A explicação até agora indica que o driver de função é o driver que se comunica diretamente com o dispositivo. Esta declaração é verdadeira para um dispositivo que se conecta diretamente ao barramento PCI (Peripheral Component Interconnect). O driver de função de um dispositivo PCI obtém endereços mapeados para recursos de porta e memória no dispositivo. O driver de funções se comunica diretamente com o dispositivo escrevendo para esses endereços.

Em muitos casos, um dispositivo não se conecta diretamente ao barramento PCI. Em vez disso, o dispositivo se conecta a um adaptador de barramento de host conectado ao barramento PCI. Por exemplo, uma torradeira USB se conecta a um adaptador de barramento de host, chamado de controlador host USB. Esse controlador está conectado ao barramento PCI. A torradeira USB possui um driver de função e o controlador host USB também possui um driver de função.

O driver funcional da torradeira se comunica indiretamente com ela enviando uma solicitação ao driver funcional do controlador USB do host. O "function driver" do controlador de host USB se comunica diretamente com o hardware do controlador de host USB, que se comunica com a torradeira.

Diagrama que demonstra a interação entre os drivers de torradeira USB, o driver do controlador de host USB e o barramento PCI.