Contrôle de l’accès aux appareils (WDM)
L’accès à un appareil est contrôlé par un descripteur de sécurité (et la liste de contrôle d’accès qu’il contient). Un descripteur de sécurité pour un objet d’appareil peut être spécifié lors de la création de l’objet d’appareil ou défini dans le Registre.
Contrôle de l’accès des appareils pour les pilotes WDM
Lorsqu’un pilote WDM (autre que certains pilotes de bus) crée un objet d’appareil, le gestionnaire Plug-and-Play détermine un descripteur de sécurité pour l’appareil. L’ordre des opérations est le suivant.
Le gestionnaire PnP appelle la routine AddDevice du pilote.
La routine AddDevice du pilote appelle IoCreateDevice pour créer l’objet d’appareil et l’attacher à la pile d’objets d’appareil.
Le gestionnaire PnP met à jour le descripteur de sécurité pour l’objet d’appareil nouvellement créé.
Pour un pilote WDM, le gestionnaire PnP détermine le descripteur de sécurité de l’objet d’appareil comme suit.
Si l’appareil a un paramètre de descripteur de sécurité dans le Registre, il est appliqué à chaque objet de la pile de l’appareil.
Sinon, si la classe d’installation de l’appareil a un paramètre de descripteur de sécurité dans le Registre, il est appliqué à chaque objet de la pile d’appareils.
Sinon, le gestionnaire PnP laisse le descripteur de sécurité par défaut inchangé pour chaque objet. Dans ce cas, le descripteur de sécurité par défaut pour la pile est déterminé par le type d’appareil et les caractéristiques de l’appareil PDO.
Pour la plupart des types et caractéristiques d’appareil, le descripteur de sécurité par défaut donne un accès complet (GENERIC_ALL) aux administrateurs, ainsi qu’un accès en lecture, en écriture et en exécution (GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE) l’accès à tous les autres.
Pour plus d’informations sur la définition d’un descripteur de sécurité pour une classe d’installation d’appareil ou d’appareil dans le Registre, consultez Définition des propriétés de l’objet d’appareil dans le Registre.
Si un appareil fonctionne en mode brut, le gestionnaire PnP ne peut pas déterminer un descripteur de sécurité pour l’objet d’appareil. Dans ce cas, le conducteur de bus doit fournir un descripteur de sécurité ; voir ci-dessous.
Contrôle de l’accès des appareils pour les pilotes de bus WDM
Un pilote de bus WDM doit fournir un descripteur de sécurité pour l’AOP de chaque appareil qui peut être utilisé en mode brut. Utilisez IoCreateDeviceSecure pour créer l’objet d’appareil avec un descripteur de sécurité.
Si le pilote de bus n’utilise pas un appareil en mode brut, il n’est pas nécessaire de fournir un descripteur de sécurité. Le gestionnaire PnP détermine le descripteur de sécurité, comme décrit ci-dessus. Le pilote de bus peut fournir un descripteur de sécurité s’il doit s’assurer que ses PDO ont des paramètres de sécurité plus stricts que le descripteur par défaut. Tout descripteur spécifié par le pilote de bus est remplacé par les paramètres du Registre.
Pour plus d’informations sur la création d’objets d’appareil, consultez Création d’un objet d’appareil.
Contrôle de l’accès aux appareils pour les pilotes non WDM
Les pilotes non WDM doivent spécifier un descripteur de sécurité et un GUID de classe par défaut pour tous les objets d’appareil nommés qu’ils créent.
Utilisez la routine IoCreateDeviceSecure pour créer l’objet d’appareil nommé et spécifier le descripteur de sécurité par défaut et le GUID de classe pour cet appareil. Le descripteur de sécurité est spécifié dans un sous-ensemble de SDDL. Pour plus d’informations, consultez SDDL for Device Objects.
Le système remplace le descripteur de sécurité par défaut par tous les paramètres de sécurité dans le Registre pour le GUID de classe spécifié. Le pilote doit spécifier son propre GUID unique pour l’appareil. Utilisez l’outil GuidGen pour générer un GUID unique. (GuidGen est inclus dans le Microsoft Windows SDK.)