Pilhas de driver
A maioria das solicitações enviadas aos drivers de dispositivo é empacotada em IRPs (pacotes de solicitação de E/S ). Cada dispositivo é representado por um nó de dispositivo e cada nó de dispositivo tem 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 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 driver para se referir ao conjunto em camadas de drivers 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.
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 do dispositivo 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 ao PDO e 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ó dispositivo de armazenamento em massa USB e o driver FDO para o nó 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 miniporte e Usbport.sys é um driver de porta. O par (miniport, porta) desempenha a função de um único driver. Nesse caso, o driver de miniporto e o driver de porta são escritos pela Microsoft. O par (Usbuhci.sys, Usbport.sys) é o driver PDO para o nó 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 driver para uma solicitação de E/S
Considere a sequência de quatro drivers que participaram da solicitação de E/S ilustrada no diagrama anterior. Podemos obter outra exibição da sequência focando nos drivers e não nos nós do dispositivo e nas 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.
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 driver para uma solicitação de E/S, desenhamos os drivers de cima para baixo na ordem em que eles participam da solicitação.
Observe que a pilha de driver para uma solicitação de E/S é bem diferente da pilha do dispositivo para um nó de dispositivo. Observe também que a pilha de driver para uma solicitação de E/S não permanece necessariamente em um branch da árvore do dispositivo.
Pilhas de driver de tecnologia
Considere a pilha de driver 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 específico ou parte 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 como pode ser 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 parte 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 do Driver de Áudio.
Nota O diagrama de bloco de núcleo USB neste tópico mostra uma das várias maneiras possíveis de ilustrar as pilhas de driver 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 Arquitetura de pilha do driver USB.
Tópicos relacionados
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de