Partilhar via


Conjuntos de drivers

A maioria das solicitações enviadas aos drivers de dispositivo são empacotadas em pacotes de solicitação de E/S (IRPs). Cada dispositivo está representado por um nó de dispositivo, e cada nó de dispositivo possui uma pilha de dispositivos. Para obter mais informações, consulte Nós de dispositivo e pilhas de dispositivos. Para enviar uma solicitação de leitura, gravação ou controle para um dispositivo, o gerenciador de E/S localiza o nó do dispositivo para o dispositivo e, em seguida, envia um IRP para a pilha de dispositivos desse nó. Às vezes, mais de uma pilha de dispositivos está envolvida no processamento de uma solicitação de E/S. Independentemente de quantas pilhas de dispositivos estão envolvidas, a sequência geral de drivers que participam de uma solicitação de E/S é chamada de pilha de drivers para a solicitação. Também usamos o termo pilha de drivers para nos referirmos ao conjunto de drivers em camadas para uma tecnologia específica.

Solicitações de E/S processadas por várias pilhas de dispositivos

Em alguns casos, mais de uma pilha de dispositivos está envolvida no processamento de um IRP. O diagrama a seguir ilustra um caso em que quatro pilhas de dispositivos estão envolvidas no processamento de um único IRP.

diagrama de quatro nós de dispositivo, cada um com uma pilha de dispositivos.

Aqui está como o IRP é processado em cada estágio numerado no diagrama:

  1. O IRP é criado por Disk.sys, que é o driver de funções na stack de dispositivos do nó do Meu dispositivo de armazenamento USB. Disk.sys passa o IRP pela pilha de dispositivos até Usbstor.sys.

  2. Observe que Usbstor.sys é o driver PDO para o nó Meu dispositivo de armazenamento USB e o driver FDO para o nó Dispositivo de armazenamento em massa USB. Neste ponto, não é importante decidir se o IRP é propriedade do par (DOP, Usbstor.sys) ou do (FDO, Usbstor.sys). O IRP é propriedade do condutor, Usbstor.sys, e este tem acesso tanto ao PDO como ao FDO.

  3. Quando Usbstor.sys terminar de processar o IRP, ele passa o IRP para Usbhub.sys. Usbhub.sys é o driver PDO para o nó USB Mass Storage Device e o driver FDO para o nó USB Root Hub. Não é importante decidir se o IRP pertence ao par (DOP, Usbhub.sys) ou ao par (FDO, Usbhub.sys). O IRP é propriedade do driver, Usbhub.sys, e o driver tem acesso tanto ao PDO como ao FDO.

  4. Quando Usbhub.sys terminar de processar o IRP, ele passa o IRP para o par (Usbuhci.sys, Usbport.sys).

    Usbuhci.sys é um driver de miniporta, e Usbport.sys é um driver de porta. O par (miniport, port) desempenha o papel de um único controlador. Nesse caso, tanto o driver de miniporta quanto o driver de porta são escritos pela Microsoft. O par (Usbuhci.sys, Usbport.sys) é o driver PDO para o nó USB Root Hub, e o par (Usbuhci.sys, Usbport.sys) é também o driver FDO para o nó USB Host Controller. O par (Usbuhci.sys, Usbport.sys) faz a comunicação real com o hardware do controlador host, que por sua vez se comunica com o dispositivo de armazenamento USB físico.

A pilha de drivers para uma solicitação de E/S

Considere a sequência de quatro drivers que participaram na solicitação de E/S ilustrada no diagrama precedente. Podemos obter outra visão da sequência concentrando-nos nos drivers em vez de nos nós de dispositivos e nas suas pilhas de dispositivos individuais. O diagrama a seguir mostra os drivers em sequência de cima para baixo. Observe que Disk.sys está associado a um objeto de dispositivo, mas cada um dos outros três drivers está associado a dois objetos de dispositivo.

diagrama de uma stack de drivers, mostrando o driver superior associado apenas a um FDO e os outros três drivers associados a um PDO e um FDO.

A sequência de drivers que participam em um pedido de E/S é denominada a pilha de drivers para o pedido de E/S. Para ilustrar uma pilha de drivers para uma solicitação de E/S, desenhamos os drivers de cima para baixo na ordem em que participam da solicitação.

Note que a pilha de driver para uma solicitação de E/S é bastante diferente da pilha do dispositivo para um nó de dispositivo. Repare também que a pilha de drivers para uma solicitação de E/S não permanece necessariamente em um ramo da árvore de dispositivos.

Camadas de controladores tecnológicos

Considere a pilha de drivers para a solicitação de E/S mostrada no diagrama anterior. Se dermos a cada um dos drivers um nome amigável e fizermos algumas pequenas alterações no diagrama, temos um diagrama de blocos que é semelhante a muitos dos que aparecem na documentação do Windows Driver Kit (WDK).

diagrama de uma pilha de drivers mostrando nomes amigáveis para os drivers: driver de classe de disco na parte superior, seguido por driver de porta de armazenamento USB e, em seguida, driver de hub USB e driver (USB 2 miniport, porta USB).

No diagrama, o stack de drivers é dividido em três secções. Podemos pensar em cada seção como pertencente a uma tecnologia específica ou a um determinado componente ou parte do sistema operacional. Por exemplo, podemos dizer que a primeira seção na parte superior da pilha de drivers pertence ao Gerenciador de Volumes, a segunda seção pertence ao componente de armazenamento do sistema operacional e a terceira seção pertence à parte USB principal do sistema operacional.

Considere os controladores na terceira seção. Esses drivers são um subconjunto de um conjunto maior de drivers USB principais que a Microsoft fornece para lidar com vários tipos de solicitações USB e hardware USB. O diagrama a seguir mostra como todo o diagrama de blocos do núcleo USB pode parecer.

diagrama mostra a pilha de drivers de tecnologia para um bloco de núcleo USB possível.

Um diagrama de blocos que mostra todos os drivers para uma tecnologia específica ou um componente ou uma parte específica do sistema operativo é chamado de pilha de drivers de tecnologia . Normalmente, os conjuntos de drivers de tecnologia recebem nomes como Conjunto de Drivers do Núcleo USB, Conjunto de Drivers de Armazenamento, Conjunto de Drivers 1394 e Conjunto de Drivers de Áudio.

Nota: O diagrama de blocos do núcleo USB neste artigo mostra uma das várias maneiras possíveis de ilustrar as pilhas de driver de tecnologia para USB 1.0 e 2.0. Para obter os diagramas oficiais das estruturas de drivers USB 1.0, 2.0 e 3.0, consulte USB Driver Stack Architecture.

Nós de dispositivo e pilhas de dispositivos

Minidrivers e pares de motoristas

Conceitos para todos os desenvolvedores de drivers