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 |