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. Depois que 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, um sistema operacional e um driver.

Expandindo a definição

Nossa explicação simplifica o conceito de drivers. Aqui estão mais alguns pontos a serem considerados:

  • Os drivers nem sempre precisam ser desenvolvidos pelo fabricante do dispositivo. 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 em camadas em uma pilha de driver 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 que estão mais baixos 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 o processamento auxiliar são chamados de drivers de filtro.

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

  • Alguns drivers de filtro observam e registram informações sobre solicitações de E/S, mas não participam ativamente 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.

Podemos refinar nossa definição de um driver como qualquer componente de software que observe ou participe da comunicação entre o sistema operacional e um dispositivo.

Drivers de software

Nossa definição expandida é razoavelmente precisa, mas ainda está incompleta porque alguns drivers não estão associados a nenhum dispositivo de hardware.

Por exemplo, se você precisar escrever uma ferramenta que acesse as estruturas de dados principais do sistema operacional, 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 dados principais do sistema operacional. O componente executado no modo de usuário é chamado de aplicativo e 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 se comunicando 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 gravados principalmente para acessar dados protegidos disponíveis somente no modo kernel. No entanto, 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 modos de processador, consulte Modo de Usuário e 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 de dispositivos.

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

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

Nossa explicação até agora simplifica demais a definição do driver de função. Declaramos que o driver de função de um dispositivo é o único driver na pilha que se comunica diretamente com o dispositivo. Isso é verdadeiro para um dispositivo que se conecta diretamente ao barramento PCI (Interconexão de Componentes Periféricos). O driver de função para um dispositivo PCI obtém endereços mapeados para recursos de porta e memória no dispositivo. O driver de função se comunica diretamente com o dispositivo gravando nesses endereços.

No entanto, 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 de host USB), que está conectado ao barramento PCI. A torradeira USB tem um driver de função e o controlador de host USB também tem um driver de função. O driver de função para a torradeira se comunica indiretamente com a torradeira enviando uma solicitação para o driver de função para o controlador de host USB. O driver de função para o 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 drivers de torradeira USB, driver do controlador de host USB e o barramento PCI.