Partilhar via


Visão geral dos drivers do controlador SPB

Um controlador SPB é um dispositivo que controla um barramento periférico simples (SPB) e que transfere dados de e para os dispositivos periféricos conectados ao SPB. O fornecedor de hardware para um controlador SPB fornece um driver de controlador SPB para gerenciar as funções de hardware no controlador.

A partir do Windows 8, a extensão de estrutura SPB (SpbCx) simplifica o desenvolvimento de drivers de controlador para barramentos periféricos simples (SPBs). SpbCx é uma extensão fornecida pelo sistema para o Kernel-Mode Driver Framework (KMDF). O fornecedor de hardware do dispositivo de controlador SPB fornece um driver que realiza todas as operações de hardware específicas do controlador. Esse driver se comunica com o SpbCx para executar operações específicas dos controladores SPB e se comunica diretamente com o KMDF para executar operações genéricas do driver.

Por exemplo, um driver de controlador SPB normalmente chama o método WdfDeviceInitSetPnpPowerEventCallbacks no KMDF para se registrar para receber retornos de chamada de eventos de energia e chama o método WdfInterruptCreate para conectar a rotina de serviço de interrupção (ISR) do driver à interrupção do controlador SPB. Para executar operações específicas do SPB, o controlador SPB comunica-se com o SpbCx através da interface do controlador de dispositivo (DDI) SpbCx.

SpbCx coopera com o driver do controlador SBP para lidar com solicitações de E/S para dispositivos periféricos que estão conectados ao SPB. O SpbCx executa tarefas de processamento que são comuns aos drivers de controlador SPB. Essas tarefas incluem o gerenciamento das filas de solicitação de E/S para o controlador SPB. Essas filas contêm pedidos de E/S dos controladores que gerem os dispositivos periféricos conectados ao barramento. O driver do controlador SPB executa todas as operações específicas de hardware necessárias para lidar com essas solicitações.

O diagrama a seguir mostra o driver do controlador SPB e SpbCx.

Diagrama de blocos dos componentes SPB.

O driver do controlador SPB e o SpbCx são executados no modo kernel e se comunicam entre si através do SDI SpbCx. O driver do controlador SPB chama métodos de suporte de driver que são implementados pelo SpbCx. SpbCx chama funções de retorno de chamada de evento que são implementadas pelo driver do controlador SPB.

Os drivers que enviam solicitações de E/S para o controlador SPB são drivers de modo kernel que usam o KMDF (Kernel-Mode Driver Framework ) ou drivers de modo de usuário que usam o UMDF (User-Mode Driver Framework ). Esses drivers podem enviar solicitações de leitura e gravação para transferir dados de e para dispositivos periféricos conectados ao SPB. Além disso, os drivers podem enviar solicitações de controle de E/S (IOCTL) para executar operações específicas do SPB.

O driver do controlador SPB acessa diretamente os registros de hardware do dispositivo controlador SPB para iniciar transferências de dados de e para dispositivos periféricos conectados ao SPB. Para um SPB como o I2C, estas transferências de dados ocorrem a velocidades relativamente lentas. Embora os registadores de hardware do controlador SPB sejam provavelmente mapeados na memória, os registadores dos dispositivos periféricos devem ser acedidos serialmente através do SPB.

Em resposta a uma solicitação de E/S para transferir dados de ou para um dispositivo periférico conectado ao SPB, o driver do controlador SPB inicia a transferência, marca a solicitação de E/S como pendente e retorna sem esperar que a transferência seja concluída. Mais tarde, quando o hardware do controlador SPB concluir a transferência, o controlador sinaliza uma interrupção e o ISR no driver do controlador SPB conclui a solicitação de E/S pendente ou inicia a próxima transferência na operação de E/S solicitada.

Somente os drivers podem enviar solicitações de E/S diretamente para um controlador SPB. Quando um aplicativo de modo de usuário transfere dados de ou para um dispositivo periférico conectado ao SPB, o aplicativo deve confiar no driver do dispositivo periférico SPB para enviar as solicitações de leitura ou gravação correspondentes para o controlador SPB.