Pilha de Driver de Cartão SD
A tecnologia de cartão SD (Secure Digital) começou com cartões de memória portáteis e em miniatura, mas com o lançamento da especificação SDIO (Secure Digital I/O), a Associação Digital Segura (SDA) ampliou a definição de tecnologia SD para incluir uma grande variedade de funções de cartão, como dispositivos Bluetooth, câmeras de vídeo, dispositivos LAN sem fio e receptores gps (sistema de posicionamento global). Este documento explica como o sistema operacional dá suporte às extensões de função cartão à tecnologia SD.
Leitores de cartão para muitos dispositivos de armazenamento SD iniciais foram projetados para se conectar ao barramento USB. O Windows gerencia esses dispositivos com o driver de armazenamento em massa USB (usbstor.sys) e o driver de classe de armazenamento nativo (disk.sys), conforme descrito no diagrama a seguir:
Para obter uma descrição mais completa da pilha de dispositivos que o Windows cria para um cartão de memória que se conecta ao barramento USB, consulte Exemplo de objeto de dispositivo para um dispositivo de armazenamento em massa USB.
O sistema operacional fornece suporte para controladores de host SD que se conectam diretamente ao barramento PCI. Quando o sistema enumera um controlador de host SD, ele carrega um driver de barramento SD nativo (sdbus.sys). Se um usuário inserir um cartão de memória SD, o Windows carregará um driver de classe de armazenamento SD nativo (sffdisk.sys) e um driver de miniporte de armazenamento (sffp_sd.sys) na parte superior do driver de barramento. Se um usuário inserir um SD cartão com um tipo diferente de função, como GPS ou LAN sem fio, o Windows carregará um driver fornecido pelo fornecedor para o dispositivo.
Todos os drivers de dispositivo na pilha SD, sejam nativos ou fornecidos pelo fornecedor, devem se comunicar com o driver de barramento SD chamando rotinas na biblioteca de barramento SD estático (sdbus.lib). Os drivers SD devem ser vinculados a essa biblioteca quando forem compilados. O diagrama a seguir ilustra a pilha de driver SD que o sistema cria quando enumera um controlador SD e os cartões que acompanham:
Os drivers de dispositivo SD não podem acessar diretamente o conjunto de registros do controlador de host, nem podem inserir comandos de passagem para o controlador de host em IRPs (pacotes de solicitação de E/S). Os drivers de dispositivo SD emitem comandos para o controlador host chamando as rotinas da biblioteca de barramento SD e, em seguida, a biblioteca gera os comandos SD apropriados para o controlador de host.
Os drivers de dispositivo SD devem lidar com PnP padrão e IRPs de energia, mas não solicitam nem gerenciam recursos de hardware, como portas, memória ou vetores de interrupção. Consequentemente, os drivers de dispositivo SD não são necessários para mapear nenhum recurso de hardware ao lidar com uma solicitação de IRP_MN_START_DEVICE . No entanto, quando um driver de dispositivo SD recebe uma solicitação IRP_MN_STOP_DEVICE , ele deve interromper todas as operações de E/S. Além disso, o driver deve fechar sua interface para o driver de barramento SD em resposta a uma solicitação de IRP_MN_QUERY_REMOVE_DEVICE .
Quando ocorre uma interrupção de hardware, a biblioteca de barramento SD intercepta a interrupção, mascara outras interrupções e notifica o driver de dispositivo SD por meio de uma rotina de retorno de chamada de que ocorreu uma interrupção de hardware. Para obter uma descrição da rotina de retorno de chamada que o motorista do ônibus usa para notificar um driver de dispositivo SD sobre interrupções de hardware, consulte PSDBUS_CALLBACK_ROUTINE. Para obter uma explicação geral de como a pilha de driver SD e as bibliotecas gerenciam interrupções de hardware, consulte Manipulando interrupções de hardware SD (Secure Digital).
O arquivo de cabeçalho ntddsd.h , fornecido no WDK (Kit de Driver do Windows), declara os protótipos para as rotinas expostas pela biblioteca de barramento SD.