RtlGenerate8dot3Name-Funktion (ntifs.h)

Die RtlGenerate8dot3Name-Routine generiert einen kurzen Namen (8.3) 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

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

[in] AllowExtendedCharacters

Legen Sie auf TRUE fest, wenn der generierte kurze Dateiname erweiterte Zeichen enthalten kann. Legen Sie diesen Wert auf FALSE fest, 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 zur Verwendung durch RtlGenerate8dot3Name. Bevor RtlGenerate8dot3Name zum ersten Mal aufgerufen wird, um den angegebenen langen Dateinamen zu übersetzen, ist der Aufrufer dafür verantwortlich, den Puffer mit Nullen zu füllen.

[in, out] Name8dot3

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

Rückgabewert

Diese Routine gibt STATUS_SUCCESS zurück, wenn ein Kurzname erfolgreich generiert wurde. Es wird STATUS_FILE_SYSTEM_LIMITATION zurückgegeben, 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.

Hinweise

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 der anfänglich generierte Kurzname beispielsweise ein Duplikat eines vorhandenen Dateinamens ist, kann der Aufrufer die gleichen Parameter erneut an RtlGenerate8dot3Name ü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 desselben langen Namens speichert RtlGenerate8dot3Name private Kontextinformationen in diesem Puffer, um Namenskonflikte zu verhindern.

Zwei Aufrufe von RtlGenerate8dot3Name mit demselben Namen und Kontext geben nicht garantiert das gleiche Ergebnis zurück. Aufrufer sollten davon ausgehen, dass die Zuordnung von long name zu short name nicht deterministisch ist.

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

RtlGenerate8dot3Name gibt einen kurzen Dateinamen mit Großbuchstaben zurück. Es gibt Unterstriche im generierten Kurznamen für jedes der folgenden Zeichen zurück, die im angegebenen langen Namen angezeigt werden:

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

Informationen zu anderen Zeichenfolgenverarbeitungsroutinen finden Sie unter Laufzeitbibliotheksroutinen (RTL).

Anforderungen

Anforderung Wert
Zielplattform Universell
Header ntifs.h (include Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

Weitere Informationen

RtlIsNameLegalDOS8Dot3

RtlIsValidOemCharacter

UNICODE_STRING