Définition d’un nom d’appareil MS-DOS

Un nom d’appareil MS-DOS est une jonction qui pointe vers le chemin d’un appareil MS-DOS. Ces jonctions constituent l’espace de noms d’appareil MS-DOS. Appelez les fonctions DefineDosDevice et SetVolumeMountPoint pour créer et modifier ces jonctions. DeleteVolumeMountPoint supprime une jonction créée par SetVolumeMountPoint, et DefineDosDevice supprime les jonctions qu’il crée.

Une fois qu’un nom d’appareil MS-DOS est défini, il reste visible pour tous les processus.

  • Tous les appareils MS-DOS sont identifiés par Windows via un ID d’authentification. Un ID d’authentification est le LUID (identificateur local unique) associé à chaque session d’ouverture de session lors de sa création.
  • La visibilité d’un nom d’appareil MS-DOS est classée comme globale ou locale et est définie comme telle par son inclusion dans les espaces de noms Global MS-DOS Device et Local MS-DOS Device. Le contenu des appareils MS-DOS de l’espace de noms global est accessible à tous les utilisateurs, et le contenu des appareils MS-DOS de l’espace de noms local est accessible uniquement par l’utilisateur dont le jeton d’accès contient l’ID d’authentification associé à cet espace de noms d’appareil MS-DOS local.

Plusieurs espaces de noms d’appareils MS-DOS locaux et un seul espace de noms Global MS-DOS Device peuvent exister à la fois et sur une seule machine.

Notez que seuls les processus s’exécutant dans le contexte LocalSystem peuvent appeler DefineDosDevice pour créer un appareil MS-DOS dans l’espace de noms global de l’appareil MS-DOS. En outre, l’espace de noms d’appareil MS-DOS local correspondant à un ID d’authentification spécifique est supprimé lorsque la dernière référence à cet ID d’authentification est supprimée.

Lorsque votre code interroge un nom d’appareil MS-DOS existant en appelant QueryDosDevice, il recherche d’abord l’espace de noms local de l’appareil MS-DOS. Si elle est introuvable, la fonction effectue ensuite une recherche dans l’espace de noms Global MS-DOS Device. Lorsque votre code interroge tous les noms d’appareils MS-DOS existants via cette fonction, la liste des noms retournés dépend de son exécution ou non dans le contexte LocalSystem. Si c’est le cas, seuls les noms d’appareils MS-DOS inclus dans l’espace de noms Global MS-DOS Device seront retournés. Si ce n’est pas le cas, une concaténation des noms d’appareils dans les espaces de noms d’appareil MS-DOS global et local sera retournée. Si un nom d’appareil existe dans les deux espaces de noms, QueryDosDevice retourne l’entrée dans l’espace de noms d’appareil MS-DOS local. Cela s’applique également à la liste de tous les noms d’appareils MS-DOS retournés par GetLogicalDrives et GetLogicalDriveStrings.

Notez que le scénario suivant peut se produire :

  1. L’utilisateur A, qui n’est pas en cours d’exécution dans le contexte LocalSystem, crée un nom d’appareil dans l’espace de noms d’appareil MS-DOS local correspondant, et ce nom d’appareil n’existe pas dans l’espace de noms Global MS-DOS Device.
  2. L’utilisateur B, qui s’exécute dans le contexte LocalSystem, crée le même nom d’appareil dans l’espace de noms Global MS-DOS Device.

Dans ce scénario, l’utilisateur A n’aura pas accès au nom de l’appareil dans l’espace de noms Global MS-DOS Device tant qu’il n’aura pas supprimé ou renommé le nom de l’appareil dans son espace de noms d’appareil MS-DOS local. Pour réduire la probabilité que ce scénario se produise, les lettres de lecteur MS-DOS doivent être allouées dans l’espace de noms Global MS-DOS Device commençant par C: et se terminant par Z:. Cette séquence doit être inversée pour l’allocation de lettres de lecteur MS-DOS dans l’espace de noms Appareil MS-DOS local.

Si vous n’exécutez pas dans le contexte LocalSystem, DefineDosDevice ne vous permet pas de définir un nom d’appareil dans l’espace de noms d’appareil MS-DOS local si ce nom d’appareil existe déjà dans vos espaces de noms d’appareils MS-DOS locaux ou globaux. Appelez QueryDosDevice avant d’appeler DefineDosDevice pour déterminer si le nom d’appareil que vous avez l’intention de définir existe dans vos espaces de noms d’appareils MS-DOS.

Nommer des fichiers, des chemins d’accès et des espaces de noms