Compartilhar via


Visão geral dos drivers do controlador SPB

Um controlador SPB é um dispositivo que controla um SPB ( barramento periférico) simples 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 do SPB (SpbCx) simplifica o desenvolvimento de drivers de controlador para SPBs (barramentos periféricos simples). O SpbCx é uma extensão fornecida pelo sistema para o KMDF ( Kernel-Mode Driver Framework ). O fornecedor de hardware para o dispositivo controlador SPB fornece um driver de controlador para executar todas as operações de driver específicas de hardware. Esse driver se comunica com o SpbCx para executar operações específicas aos controladores SPB e se comunica diretamente com o KMDF para executar operações genéricas de 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 evento de energia e chama o método WdfInterruptCreate para conectar a ISR (rotina de serviço de interrupção) do driver à interrupção do controlador SPB. Para executar operações específicas do SPB, o controlador SPB se comunica com o SpbCx por meio da DDI ( interface do driver de dispositivo) SpbCx .

O SpbCx coopera com o driver do controlador SBP para lidar com solicitações de E/S para dispositivos periféricos conectados ao SPB. O SpbCx executa tarefas de processamento comuns aos drivers do controlador SPB. Essas tarefas incluem o gerenciamento das filas de solicitação de E/S para o controlador SPB. Essas filas contêm solicitações de E/S dos drivers que gerenciam 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 o SpbCx.

diagrama de bloco de componentes do spb.

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

Os drivers que enviam solicitações de E/S para o controlador SPB são drivers no 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 i2C, essas transferências de dados ocorrem em velocidades relativamente lentas. Embora os registros de hardware do controlador SPB provavelmente sejam mapeados para memória, os registros dos dispositivos periféricos devem ser acessados serialmente por meio 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 de barramento, marca a solicitação de E/S como pendente e retorna sem aguardar a conclusão da transferência. Posteriormente, quando o hardware do controlador SPB conclui 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 no modo de usuário transfere dados de ou para um dispositivo periférico conectado ao SPB, o aplicativo deve contar com o driver de dispositivo periférico do SPB para enviar as solicitações de leitura ou gravação correspondentes para o controlador SPB.