Extensão da estrutura SPB (SpbCx)
A extensão da estrutura SPB (SpbCx) é uma extensão fornecida pelo sistema para o KMDF (Kernel-Mode Driver Framework). O SpbCx funciona em conjunto com um driver de controlador SPB para executar operações de E/S em dispositivos periféricos conectados a um SPB (barramento periférico simples), como I2C ou SPI.
O driver do controlador SPB executa todas as operações específicas de hardware. Essas operações incluem acessar os registros de hardware do controlador SPB para configurar o controlador e iniciar transferências de barramento de e para dispositivos periféricos conectados ao SPB.
O SpbCx executa tarefas de processamento comuns aos dispositivos controladores SPB. Particularmente, o SpbCx gerencia as filas de solicitação de E/S para um controlador SPB. Essas filas contêm solicitações de E/S para dispositivos periféricos conectados ao barramento. O fornecedor de hardware do controlador SPB fornece um driver de controlador SPB para executar todas as operações específicas de hardware necessárias para lidar com essas solicitações.
A divisão de responsabilidades entre o SpbCx e o driver do controlador SPB é a seguinte:
O SpbCx gerencia as funções genéricas comuns a todos os membros da classe de dispositivo do controlador SPB. O SpbCx fornece grande parte do tratamento de solicitação padrão e controle de fluxo para o driver do controlador. A partir do Windows 8, o SpbCx é um componente de caixa de entrada do sistema operacional Windows.
O driver do controlador SPB gerencia as funções específicas de hardware no dispositivo do controlador SPB. Os fornecedores de hardware fornecem drivers de controlador para seus dispositivos de controlador SPB.
O SpbCx e o driver do controlador SPB são executados no modo kernel. SpbCx é uma extensão de estrutura e o driver do controlador SPB é um driver KMDF. O driver do controlador SPB chama os métodos na DDI (interface do driver de dispositivo) SpbCx para executar operações específicas do SPB e chama métodos KMDF para executar outras funções de driver mais genéricas. Para obter informações sobre como criar um driver KMDF, consulte Criando e carregando um driver baseado em estrutura.
Os drivers do controlador SPB se vinculam estaticamente aos pontos de entrada DDI na biblioteca de stub SpbCx, Spbcx.lib. Em tempo de execução, essa biblioteca executa a negociação de versão do driver necessária para vincular dinamicamente ao módulo de extensão da estrutura, Spbcx.sys, que implementa a DDI. Um driver de controlador SPB que requer uma versão específica do Spbcx.sys pode ser vinculado com segurança a uma versão do Spbcx.sys que tenha um número de versão superior. No entanto, esse driver não pode ser vinculado a uma versão do Spbcx.sys que tenha um número de versão inferior. A interface de solicitação de E/S do SpbCx é igualmente compatível com versões anteriores.
Apesar de um fornecedor de hardware ter a opção de escrever um driver de controlador SPB monolítico que não use SpbCx, é necessário um esforço significativo para fazer isso. Em comparação, um driver de controlador que usa SpbCx é mais fácil de desenvolver e normalmente é mais confiável.