Funzione RtlGenerate8dot3Name (ntifs.h)
La routine RtlGenerate8dot3Name genera un nome breve (8.3) per il nome di file lungo specificato.
Sintassi
NTSYSAPI NTSTATUS RtlGenerate8dot3Name(
[in] PCUNICODE_STRING Name,
[in] BOOLEAN AllowExtendedCharacters,
[in, out] PGENERATE_NAME_CONTEXT Context,
[in, out] PUNICODE_STRING Name8dot3
);
Parametri
[in] Name
Puntatore a una stringa Unicode contenente il nome lungo per il file. Tutti i periodi iniziali in questo nome file vengono ignorati durante la generazione di un nome breve corrispondente.
[in] AllowExtendedCharacters
Impostare su TRUE se il nome di file breve generato può contenere caratteri estesi. Impostare su FALSE se il nome di file breve generato deve contenere solo caratteri all'interno dell'intervallo ANSI o OEM della tabella codici corrente da 0x20 (spazio) a 0x7f (DEL).
[in, out] Context
Puntatore a un buffer allocato dal chiamante per l'uso da RtlGenerate8dot3Name. Prima di chiamare RtlGenerate8dot3Name per la prima volta per tradurre il nome di file lungo specificato, il chiamante è responsabile del riempimento del buffer con zero.
[in, out] Name8dot3
Puntatore a un buffer allocato dal chiamante per ricevere il nome di file breve generato. Le dimensioni di questo buffer devono essere almeno 24 byte (12 caratteri Unicode).
Valore restituito
Questa routine restituisce STATUS_SUCCESS se viene generato correttamente un nome breve. Restituisce STATUS_FILE_SYSTEM_LIMITATION se il sistema non può generare un nome breve univoco per un determinato file. Restituisce questo errore dopo 1 milione di tentativi per un singolo nome lungo specificato.
Commenti
RtlGenerate8dot3Name restituisce un nome breve generato con al massimo otto caratteri, seguito immediatamente da un punto e fino a tre altri caratteri.
RtlGenerate8dot3Name può essere chiamato ripetutamente. Ad esempio, se il nome breve generato inizialmente è un duplicato di un nome file esistente, il chiamante può passare di nuovo gli stessi parametri a RtlGenerate8dot3Name . In questo caso, il buffer in Contesto non deve essere reinizializzato con zero. Questo buffer deve essere zero solo per la chiamata iniziale per tradurre un determinato nome lungo. Nelle chiamate ripetute per lo stesso nome, RtlGenerate8dot3Name archivia le informazioni sul contesto privato in questo buffer per evitare collisioni di nomi.
Due chiamate a RtlGenerate8dot3Name con lo stesso nome e contesto non sono garantite per restituire lo stesso risultato. I chiamanti presuppongono che il mapping di nome lungo a nome breve non sia deterministico.
RtlGenerate8dot3Name converte il nome lungo specificato usando la tabella codici di sistema corrente, rimuovendo eventuali caratteri non validi o superflui nel nome lungo di input. Quando AllowExtendedCharacters è impostato su TRUE, i caratteri del set di caratteri ANSI o double-byte (DBCS) mappati a caratteri OEM maiuscoli possono diventare parte di un nome breve restituito.
RtlGenerate8dot3Name restituisce un nome di file breve con caratteri alfabetici maiuscoli. Restituisce caratteri di sottolineatura nel nome breve generato per uno dei caratteri seguenti che rileva nel nome lungo specificato:
- Punti e punti e punti e virgola
- Virgole
- Segno più e uguale
- Parentesi quadre
Per informazioni sulle altre routine di gestione delle stringhe, vedere Routine RTL (Run-Time Library).
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Intestazione | ntifs.h (include Ntifs.h) |
Libreria | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | < DISPATCH_LEVEL |