Partager via


Fonction RtlGenerate8dot3Name (ntifs.h)

La routine RtlGenerate8dot3Name génère un nom court (8.3) pour le nom de fichier long spécifié.

Syntaxe

NTSYSAPI NTSTATUS RtlGenerate8dot3Name(
  [in]      PCUNICODE_STRING       Name,
  [in]      BOOLEAN                AllowExtendedCharacters,
  [in, out] PGENERATE_NAME_CONTEXT Context,
  [in, out] PUNICODE_STRING        Name8dot3
);

Paramètres

[in] Name

Pointeur vers une chaîne Unicode contenant le nom long du fichier. Toutes les périodes de début de ce nom de fichier sont ignorées pendant la génération d’un nom court correspondant.

[in] AllowExtendedCharacters

Défini sur TRUE si le nom de fichier court généré peut contenir des caractères étendus. Défini sur FALSE si le nom de fichier court généré doit contenir uniquement des caractères dans la plage ANSI ou OEM de la page de codes actuelle de 0x20 (espace) à 0x7f (DEL).

[in, out] Context

Pointeur vers une mémoire tampon allouée par l’appelant pour une utilisation par RtlGenerate8dot3Name. Avant d’appeler RtlGenerate8dot3Name pour la première fois pour traduire le nom de fichier long donné, l’appelant est chargé de remplir la mémoire tampon avec des zéros.

[in, out] Name8dot3

Pointeur vers une mémoire tampon allouée par l’appelant pour recevoir le nom de fichier court généré. La taille de cette mémoire tampon doit être d’au moins 24 octets (12 caractères Unicode).

Valeur de retour

Cette routine retourne STATUS_SUCCESS si un nom court est correctement généré. Elle retourne STATUS_FILE_SYSTEM_LIMITATION si le système ne peut pas générer un nom court unique pour un fichier donné. Elle retourne cette erreur après 1 million de nouvelles tentatives pour un nom long donné.

Remarques

RtlGenerate8dot3Name retourne un nom court généré avec au maximum huit caractères, suivi immédiatement d’un point et jusqu’à trois caractères supplémentaires.

RtlGenerate8dot3Name peut être appelée à plusieurs reprises. Par exemple, si le nom court généré initialement est un doublon d’un nom de fichier existant, l’appelant peut passer les mêmes paramètres à RtlGenerate8dot3Name à nouveau. Dans ce cas, la mémoire tampon à contexte ne doit pas être réinitialisée avec des zéros. Cette mémoire tampon doit être supprimée uniquement pour que l’appel initial traduise un nom long donné. Lors des appels répétés pour le même nom long, RtlGenerate8dot3Name stocke les informations de contexte privé dans cette mémoire tampon pour empêcher les collisions de noms.

Deux appels à RtlGenerate8dot3Name avec le même Name et Context ne sont pas garantis pour retourner le même résultat. Les appelants doivent supposer que le mappage du nom long au nom court n’est pas déterministe.

RtlGenerate8dot3Name traduit le nom long donné à l’aide de la page de codes système actuelle, en ignorant les caractères non valides ou superflus du nom long d’entrée. Lorsque AllowExtendedCharacters a la valeur TRUE, les caractères ANSI ou DBCS (Double Octets) mappés aux caractères OEM majuscules peuvent faire partie d’un nom court retourné.

RtlGenerate8dot3Name retourne un nom de fichier court avec des caractères alphabétiques majuscules. Elle retourne des traits de soulignement dans le nom court généré pour l’un des caractères suivants qu’il rencontre dans le nom long donné :

  • Points-virgules et points-virgules
  • Virgules
  • Signes plus et égal
  • Crochets

Pour plus d’informations sur les autres routines de gestion des chaînes, consultez Run-Time Routines de bibliothèque (RTL).

Exigences

Exigence Valeur
plateforme cible Universel
d’en-tête ntifs.h (include Ntifs.h)
bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

Voir aussi

RtlIsNameLegalDOS8Dot3

RtlIsValidOemCharacter

UNICODE_STRING