Partager via


Architecture d’UMDF

Cette rubrique décrit comment le gestionnaire de pilotes crée une pile de périphériques en mode utilisateur, et comment le processus hôte, le réflecteur et le gestionnaire de pilotes traitent une demande d’E/S qu’une application envoie à un pilote UMDF (User-Mode Driver Framework).

À l’instar d’une pile en mode noyau, la construction et la destruction d’une pile en mode utilisateur sont pilotées par des événements Plug-and-Play (PnP). Une fois la pile en mode noyau générée, le réflecteur avertit le gestionnaire de pilotes de démarrer la construction de la pile en mode utilisateur. Le gestionnaire de pilotes lance le processus hôte du pilote et fournit suffisamment d’informations au processus lancé pour générer la pile en mode utilisateur. De cette façon, la pile en mode utilisateur peut être considérée comme une extension de la pile en mode noyau.

Le processus hôte du pilote fournit l’environnement d’exécution pour les pilotes en mode utilisateur et route les messages entre les pilotes dans la pile en mode utilisateur. Le réflecteur utilise un mécanisme de communication interprocessus basé sur les messages pour communiquer avec le gestionnaire de pilotes et le processus hôte.

Composants umdf, y compris les objets d’appareil vers le haut et vers le bas dans le réflecteur.

Pour envoyer une demande d’E/S à un pilote UMDF, une application appelle une fonction d’E/S de fichier Win32, telle que CreateFile, ReadFileEx, CancelIoEx ou DeviceIoControl. Lorsque le réflecteur reçoit une requête de l’application cliente, il envoie la demande au processus hôte du pilote approprié. Le processus hôte du pilote achemine ensuite la demande vers le haut de la pile de périphériques en mode utilisateur appropriée.

La demande est effectuée par l’un des pilotes de la pile en mode utilisateur ou transférée par l’un des pilotes au réflecteur. Lorsque le réflecteur reçoit une requête de la pile de pilotes en mode utilisateur, il envoie la requête vers le bas de la pile en mode noyau pour l’achèvement.