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.
A maioria das solicitações enviadas para drivers de dispositivo é empacotada em pacotes de solicitação de E/S (IRPs). Cada dispositivo é 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 e 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 driver para a solicitação. Também usamos o termo pilha de drivers para se referir ao conjunto em camadas de drivers para uma tecnologia específica.
Solicitações de E/S que são 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.
Veja como o IRP é processado em cada estágio numerado no diagrama:
O IRP é criado por Disk.sys, que é o driver de função na pilha de dispositivos para o nó Meu Dispositivo de Armazenamento USB. Disk.sys passa o IRP para baixo na pilha do dispositivo para Usbstor.sys.
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 pertence ao par (PDO, Usbstor.sys) ou ao par (FDO, Usbstor.sys) . O IRP pertence ao driver, Usbstor.sys, e o driver tem acesso tanto ao PDO quanto ao FDO.
Quando Usbstor.sys terminar de processar o IRP, ele passa o IRP para Usbhub.sys. Usbhub.sys é o driver PDO para o nó do dispositivo de armazenamento em massa USB e o driver FDO para o nó do Hub Raiz USB. Não é importante decidir se o IRP pertence ao par (PDO, Usbhub.sys) ou ao par (FDO, Usbhub.sys) . O IRP pertence ao driver, Usbhub.sys, e o driver tem acesso ao PDO e ao FDO.
Quando Usbhub.sys terminar de processar o IRP, ele passa o IRP para o par (Usbuhci.sys, Usbport.sys).
Usbuhci.sys é um driver de miniporto e Usbport.sys é um driver de porta. O par (miniport, porta) desempenha o papel de um único controlador. Nesse caso, o driver do miniporto e o driver de porta são escritos pela Microsoft. O par (Usbuhci.sys, Usbport.sys) é o driver PDO para o nó do Hub Raiz USB e o par (Usbuhci.sys, Usbport.sys) também é o driver FDO para o nó controlador de host USB. O par (Usbuhci.sys, Usbport.sys) faz a comunicação real com o hardware do controlador de host, que, por sua vez, se comunica com o dispositivo de armazenamento USB físico.
A pilha de drivers de uma solicitação de E/S
Considere a sequência de quatro drivers que participaram da solicitação de E/S ilustrada na figura anterior. Podemos obter outra perspectiva da sequência focando nos drivers, em vez de nos nós do dispositivo e suas respectivas pilhas individuais de dispositivos. 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.
A sequência de drivers que participam de uma solicitação de E/S é chamada de pilha de driver para a solicitação 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 dela.
Observe que a pilha de driver para uma solicitação de Entrada/Saída é bem diferente da pilha de driver de dispositivo para um nó de dispositivo. Observe também que a pilha de driver para uma solicitação de E/S pode não permanecer em um único ramo da árvore do dispositivo.
Pilhas de driver de tecnologia
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, teremos um diagrama de bloco semelhante a muitos dos que aparecem na documentação do WDK (Windows Driver Kit).
No diagrama, a pilha de driver é dividida em três seções. Podemos considerar cada seção como pertencente a uma tecnologia específica ou a um componente ou parte específico do sistema operacional. Por exemplo, podemos dizer que a primeira seção na parte superior da pilha de driver 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 drivers 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 a aparência de todo o diagrama de bloco de núcleo USB.
Um diagrama de bloco que mostra todos os drivers de uma tecnologia específica ou um componente específico ou uma parte específica do sistema operacional é chamado de pilha de driver de tecnologia. Normalmente, as pilhas de driver de tecnologia recebem nomes como a Pilha de Driver do USB Core, a Pilha de Armazenamento, a Pilha de Driver 1394 e a Pilha de Driver de Áudio.
Observação: o diagrama de bloco central do USB neste artigo apresenta uma das várias maneiras possíveis de ilustrar as pilhas de drivers de tecnologia para USB 1.0 e 2.0. Para os diagramas oficiais das pilhas de driver USB 1.0, 2.0 e 3.0, consulte a Arquitetura de Pilha do Driver USB.