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 dans ce nom de fichier sont ignorées lors de la génération d’un nom court correspondant.

[in] AllowExtendedCharacters

Définissez sur TRUE si le nom de fichier court généré peut contenir des caractères étendus. Définissez 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 à 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 à 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 retournée

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 tentatives pour un nom long donné.

Remarques

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

RtlGenerate8dot3Name peut être appelé à plusieurs reprises. Par exemple, si le nom court généré initialement est un doublon d’un nom de fichier existant, l’appelant peut transmettre à nouveau les mêmes paramètres à RtlGenerate8dot3Name . Dans ce cas, la mémoire tampon au niveau du contexte ne doit pas être réinitialisée avec des zéros. Cette mémoire tampon doit être mise à zéro uniquement pour l’appel initial afin de traduire 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 éviter les collisions de noms.

Il n’est pas garanti que deux appels à RtlGenerate8dot3Name avec le même nom et le même contexte retournent 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 dans le nom long d’entrée. Lorsque AllowExtendedCharacters a la valeur TRUE, les caractères ANSI ou d’un jeu de caractères codés sur deux octets (DBCS) mappés à des caractères OEM majuscules peuvent faire partie d’un nom court retourné.

RtlGenerate8dot3Name renvoie un nom de fichier court avec des caractères alphabétiques majuscules. Il 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 égaux
  • Crochets

Pour plus d’informations sur les autres routines de gestion de chaînes, consultez Routines de la bibliothèque d’exécution (RTL).

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête ntifs.h (include Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

Voir aussi

RtlIsNameLegalDOS8Dot3

RtlIsValidOemCharacter

UNICODE_STRING