Condividi tramite


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

Vedi anche

RtlIsNameLegalDOS8Dot3

RtlIsValidOemCharacter

UNICODE_STRING