Freigeben über


RtlGenerate8dot3Name-Funktion (ntifs.h)

Die RtlGenerate8dot3Name Routine generiert einen kurzen (8,3) Namen für den angegebenen langen Dateinamen.

Syntax

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

Parameter

[in] Name

Zeigen Sie auf eine Unicode-Zeichenfolge, die den langen Namen für die Datei enthält. Alle führenden Zeiträume in diesem Dateinamen werden bei der Generierung eines entsprechenden Kurznamens übersprungen.

[in] AllowExtendedCharacters

Wird auf TRUE festgelegt, wenn der generierte kurze Dateiname erweiterte Zeichen enthalten kann. Auf FALSE festgelegt, wenn der generierte kurze Dateiname nur Zeichen innerhalb des ANSI- oder OEM-Bereichs der aktuellen Codepage von 0x20 (Leerzeichen) bis 0x7f (DEL) enthalten darf.

[in, out] Context

Zeiger auf einen vom Aufrufer zugewiesenen Puffer für die Verwendung durch RtlGenerate8dot3Name. Bevor Sie RtlGenerate8dot3Name zum ersten Mal aufrufen, um den angegebenen langen Dateinamen zu übersetzen, ist der Aufrufer für das Ausfüllen des Puffers mit Nullen verantwortlich.

[in, out] Name8dot3

Zeigen Sie auf einen vom Aufrufer zugewiesenen Puffer, um den generierten kurzen Dateinamen zu erhalten. Die Größe dieses Puffers muss mindestens 24 Byte (12 Unicode-Zeichen) sein.

Rückgabewert

Diese Routine gibt STATUS_SUCCESS zurück, wenn ein kurzer Name erfolgreich generiert wird. Sie gibt STATUS_FILE_SYSTEM_LIMITATION zurück, wenn das System keinen eindeutigen Kurznamen für eine bestimmte Datei generieren kann. Dieser Fehler wird nach 1 Million Wiederholungsversuchen für einen einzelnen angegebenen langen Namen zurückgegeben.

Bemerkungen

RtlGenerate8dot3Name gibt einen generierten Kurznamen mit höchstens acht Zeichen zurück, gefolgt von einem Punkt und bis zu drei weiteren Zeichen.

RtlGenerate8dot3Name kann wiederholt aufgerufen werden. Wenn beispielsweise der anfänglich generierte Kurzname ein Duplikat eines vorhandenen Dateinamens ist, kann der Aufrufer dieselben Parameter an RtlGenerate8dot3Name erneut übergeben. In diesem Fall sollte der Puffer bei Context nicht mit Nullen neu initialisiert werden. Dieser Puffer sollte nur für den anfänglichen Aufruf null sein, um einen bestimmten langen Namen zu übersetzen. Bei wiederholten Aufrufen für den gleichen langen Namen speichert RtlGenerate8dot3Name private Kontextinformationen in diesem Puffer, um Namenskonflikte zu verhindern.

Zwei Aufrufe von RtlGenerate8dot3Name mit demselben Name und Context sind nicht garantiert, dasselbe Ergebnis zurückzugeben. Aufrufer sollten davon ausgehen, dass die Zuordnung von langen Namen zu Kurznamen nicht deterministisch ist.

RtlGenerate8dot3Name übersetzt den angegebenen langen Namen mithilfe der aktuellen Systemcodeseite, wobei alle ungültigen oder überflüssigen Zeichen im Eingabenamen verworfen werden. Wenn AllowExtendedCharacters auf TRUE festgelegt ist, können ANSI- oder DBCS-Zeichen (Double-Byte Character Set), die großgeschriebenen OEM-Zeichen zugeordnet sind, Teil eines zurückgegebenen Kurznamens werden.

RtlGenerate8dot3Name gibt einen kurzen Dateinamen mit alphabetischen Großbuchstaben zurück. Er gibt Unterstriche im generierten Kurznamen für eines der folgenden Zeichen zurück, die im angegebenen langen Namen auftreten:

  • Doppelpunkte und Semikolons
  • Kommas
  • Plus- und Gleichheitszeichen
  • Eckige Klammern

Informationen zu anderen Zeichenfolgenbehandlungsroutinen finden Sie unter Run-Time Library (RTL)-Routinen.

Anforderungen

Anforderung Wert
Zielplattform- Universal
Header- ntifs.h (einschließlich Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- < DISPATCH_LEVEL

Siehe auch

RtlIsNameLegalDOS8Dot3

RtlIsValidOemCharacter

UNICODE_STRING