Partager via


Vue d’ensemble des pilotes de contrôleur SPB

Un contrôleur SPB est un appareil qui contrôle un bus de périphérique simple (SPB) et qui transfère des données vers et depuis les périphériques connectés au SPB. Le fournisseur matériel d’un contrôleur SPB fournit un pilote de contrôleur SPB pour gérer les fonctions matérielles dans le contrôleur.

À compter de Windows 8, l’extension de framework SPB (SpbCx) simplifie le développement de pilotes de contrôleur pour les bus périphériques simples (SPB). SpbCx est une extension fournie par le système à l’infrastructure kmDF (Kernel-Mode Driver Framework ). Le fournisseur de matériel pour le périphérique de contrôleur SPB fournit un pilote de contrôleur pour effectuer toutes les opérations de pilote spécifiques au matériel. Ce pilote communique avec SpbCx pour effectuer des opérations spécifiques aux contrôleurs SPB et communique directement avec KMDF pour effectuer des opérations de pilote génériques.

Par exemple, un pilote de contrôleur SPB appelle généralement la méthode WdfDeviceInitSetPnpPowerEventCallbacks dans KMDF pour s’inscrire pour recevoir des rappels d’événements d’alimentation et appelle la méthode WdfInterruptCreate pour connecter la routine de service d’interruption (ISR) du pilote à l’interruption du contrôleur SPB. Pour effectuer des opérations spécifiques à SPB, le contrôleur SPB communique avec SpbCx via l’interface du pilote de périphérique (DDI) SpbCx .

SpbCx coopère avec le pilote du contrôleur SBP pour gérer les demandes d’E/S pour les périphériques connectés au SPB. SpbCx effectue des tâches de traitement communes aux pilotes de contrôleur SPB. Ces tâches incluent la gestion des files d’attente de demandes d’E/S pour le contrôleur SPB. Ces files d’attente contiennent des demandes d’E/S provenant des pilotes qui gèrent les périphériques connectés au bus. Le pilote du contrôleur SPB effectue toutes les opérations spécifiques au matériel requises pour gérer ces demandes.

Le diagramme suivant montre le pilote du contrôleur SPB et SpbCx.

diagramme de blocs des composants spb.

Le pilote du contrôleur SPB et SpbCx s’exécutent en mode noyau et communiquent entre eux via le DDI SpbCx. Le pilote du contrôleur SPB appelle les méthodes de prise en charge du pilote qui sont implémentées par SpbCx. SpbCx appelle des fonctions de rappel d’événements qui sont implémentées par le pilote du contrôleur SPB.

Les pilotes qui envoient des demandes d’E/S au contrôleur SPB sont soit des pilotes en mode noyau qui utilisent l’infrastructure de pilotes en mode noyau (KMDF), soit des pilotes en mode utilisateur qui utilisent l’infrastructure de pilotes en mode utilisateur (UMDF). Ces pilotes peuvent envoyer des demandes de lecture et d’écriture pour transférer des données vers et à partir de périphériques connectés à SPB. En outre, les pilotes peuvent envoyer des demandes de contrôle d’E/S (IOCTL) pour effectuer des opérations spécifiques À SPB.

Le pilote du contrôleur SPB accède directement aux registres matériels du périphérique du contrôleur SPB pour lancer des transferts de données vers et depuis des périphériques connectés au SPB. Pour un SPB tel que I2C, ces transferts de données se produisent à des vitesses relativement lentes. Bien que les registres matériels du contrôleur SPB soient susceptibles d’être mappés en mémoire, les registres des périphériques doivent être accessibles en série via le SPB.

En réponse à une demande d’E/S de transfert de données vers ou à partir d’un périphérique connecté à SPB, le pilote du contrôleur SPB lance le transfert de bus, marque la demande d’E/S comme étant en attente et retourne sans attendre la fin du transfert. Plus tard, lorsque le matériel du contrôleur SPB termine le transfert, le contrôleur signale une interruption et l’ISR dans le pilote du contrôleur SPB termine la demande d’E/S en attente ou lance le transfert suivant dans l’opération d’E/S demandée.

Seuls les pilotes peuvent envoyer des demandes d’E/S directement à un contrôleur SPB. Lorsqu’une application en mode utilisateur transfère des données vers ou depuis un périphérique connecté à SPB, l’application doit s’appuyer sur le pilote de périphérique SPB pour envoyer les demandes de lecture ou d’écriture correspondantes au contrôleur SPB.