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 |