Interruption 21h |
Fonction 60h |
Nom de fichier ou chemin canonique |
---|---|---|
DOS 3.0+, OS/2, Windows NT |
Description
Cette fonction permet de demander le nom de fichier ou le chemin canonique.
Entrée
Registre | Valeur ou description |
---|---|
AH | 60h |
DS:SI | Cette paire de registres permet d'indiquer le nom de fichier ou le chemin ASCIZ. |
ES:DI | Cette paire de registre permet d'indiquer le tampon de 128 octets pour nom canonalisé. |
Sortie
Registre | Valeur ou description | |||
---|---|---|---|---|
FC | Ce registre de drapeau de retenue permet d'indiquer le résultat de l'opération : | |||
Valeur | Description | |||
0 | Cette valeur permet d'indiquer que l'opération a été un succès, dans ce cas : AH = 00h ou 3Ah (DOS 6.1 / 6.2 pour le périphérique de caractères) AL = Détruit (00h ou 2FH ou 5CH ou dernier caractère du répertoire actuel sur l'unité de disque) tampon rempli de nom avec le format qualifié D:\PATH\FILE.EXT ou \\MACHINE\PATH\FILE.EXT |
|||
1 | Cette valeur permet d'indiquer une erreur, dans ce cas : | |||
Registre | Description | |||
AX | Ce registre permet d'indiquer le code d'erreur : | |||
Valeur | Description | |||
02h | Cette erreur permet d'indiquer une composante non valide dans le chemin du répertoire ou la lettre de l'unité de disque uniquement. | |||
03h | Cette erreur permet d'indiquer le chemin mal-formé ou la lettre d'unité de disque non valide. | |||
ES:DI | Cette paire de registres pointant vers un tampon reste inchangé. |
Remarques
- Cette fonction détermine le nom canonique du nom ou chemin de fichier spécifié, correspondant à la commande non-documenté TRUENAME dans COMMAND.COM.
- Le chemin d'entrée n'a pas besoin d'exister. Les lettres sont en majuscules, les barres obliques transmises converties en barre oblique inversé, les astérisques convertis en nombre approprié de points d'interrogation, et les noms de fichiers et de répertoires sont tronqués au format de nom 8.3 (8 caractères pour le nom et 3 pour l'extension) si nécessaire. Toutefois, le DR DOS 3.41 et DR DOS 5.0 ne résolvent pas les astérisques. Les noms de répertoire «.» et «..» sur le chemin sont résolus. Les filespec sur les unités de disque locaux commencent toujours par "D:", ceux sur les unité de disque de réseau commencent toujours par "\\". Si la chaîne de caractères de chemin est sur un unité de disque JOIN, le nom retourné est celui étant nécessaire si l'unité de disque n'était pas un JOIN; De même pour une lettre d'unité de disque SUBST et ASSIGN, attribuée ou réseau. Pour cette raison, il est possible d'obtenir un nom qualifié n'étant pas légal en vertu de la combinaison actuelle de SUBST, ASSIGN, JOIN et redirections de réseau. Sous DOS 3.3 à 6.00, un nom de périphérique est traduit différemment si le nom du périphérique n'a pas de répertoire explicite ou si le répertoire est \DEV (le répertoire relatif du répertoire racine fonctionne correctement). Dans ces cas, la chaîne de caractères retournée se compose du nom et de l'extension du périphérique inchangé annexé à la chaîne de caractères x:/ (barre oblique vers l'avant au lieu de barre oblique inversé comme dans tous les autres cas) où x est la lettre d'unité de disque par défaut ou explicite «..» sous MS-DOS 7.0, cet appel renvoie le nom court pour toutes les parties de nom à long terme du nom ou nom de fichier fourni. Les fonctions prenant des noms de chemin nécessitent des chemins canoniques s'ils sont invoqués via Interruption 21h, Fonction 5Dh, Sous-Fonction 00h.
- Cette fonction est prise en charge par la boîte de compatibilité OS/2 à partir de la version 1.1.
- NetWare 2.1x ne prend pas en charge les caractères avec l'ensemble de bit fixé sur 1; Les premières versions de NetWare 386 prennent en charge ces caractères, sauf dans cet appel. De plus, NetWare renvoie le code d'erreur 3 pour le chemin "x:\"; Il faut utiliser "x:\". Au lieu de cela, Novell DOS 7 aurait des difficultés avec les noms de fichiers non-MS-DOS sur les unités de disque de réseau et pourra renvoyer "D:" au lieu de "serveur/volume".
- Pour les version de DOS 3.3 à 6.0, les tampons d'entrée et de sortie peuvent être les mêmes, car le nom canonique est construit dans un tampon interne et copié dans le tampon de sortie spécifié comme la toute dernière étape. Pour DR DOS 6.0, cette fonction n'est pas automatiquement appelée lors d'un réseau. Les pilotes de dispositifs ne pourraient pas passer cet appel à partir de leur fonction d'initialisation. L'utilisation du même pointeur pour les tampons d'entrée et de sortie n'est pas prise en charge dans les versions d'avril 1992 et antérieures de DR DOS.
- Windows for Workgroups 3.11, Windows 95 et même MS-DOS 7.00 ne renvoient que le chemin de l'unité de disque local; Pour obtenir des chemins de réseau, utilisez l'Interruption 21h, Fonction 5Fh, Sous-Fonction 02h ou Interruption 21h, Fonction 5Fh, Sous-Fonction 46h à la place.
- CorelCDX de Corel et MSCDEX de Microsoft sans le commutateur /S retourne les noms canoniques du formulaire "\\D.\A.\path", où "D" est la lettre de lecteur CD-ROM et "A" semble indiquer le premier unité physique de CD-ROM; le MSCDEX avec le commutateur /S renvoie un nom canonique avec des blancs intégrés. Le Novell DOS 7 NWCDEX à partir de la mise à jour du 16 novembre 1994 renvoie le même chemin canonique que MSCDEX; Les révisions antérieures ont renvoyé "Cdex. D:\path", où "D" est la lettre de lecteur CD-ROM. Le VXD du MSCDEX de Windows 95 renvoie "D:\Path", même si le MSCDEX du MS-DOS 7.00 se comporte de manière identique aux versions plus anciennes (ci-dessus).
- Bogue : Windows 95 traite incorrectement les noms de fichiers où les deux premiers caractères après la lettre d'unité et le deux-points sont tous deux des barres obliques (vers l'avant ou vers l'arrière) en tant que UNC (nom du réseau) et nécessite plusieurs secondes pour tenter de résoudre le nom avant de retourner une chaîne de caractères inchangée.
Dernière mise à jour : Jeudi, le 10 novembre 2022