Funzione GetLongPathNameW (fileapi.h)
Converte il percorso specificato nel formato lungo.
Per eseguire questa operazione come operazione transazionata, usare la funzione getLongPathNameTransacted
Per altre informazioni sui nomi di file e percorsi, vedere Denominazione di file, percorsi e spazi dei nomi.
Importante
Per usare questa funzione, il chiamante deve disporre delle autorizzazioni seguenti per il percorso e le directory padre specificate:
- Cartella elenco
- Leggere i dati
- Lettura degli attributi
Sintassi
DWORD GetLongPathNameW(
[in] LPCWSTR lpszShortPath,
[out] LPWSTR lpszLongPath,
[in] DWORD cchBuffer
);
Parametri
[in] lpszShortPath
Percorso da convertire.
Per impostazione predefinita, il nome è limitato a MAX_PATH caratteri. Per estendere questo limite a 32.767 caratteri wide, anteporre "\\?\" al percorso. Per altre informazioni, vedere denominazione di file, percorsi e spazi dei nomi.
Mancia
A partire da Windows 10, versione 1607, è possibile acconsentire esplicitamente alla rimozione della limitazione MAX_PATH senza anteporre "\\?\". Per informazioni dettagliate, vedere la sezione "Limitazione massima della lunghezza del percorso" di nomi, percorsi e spazi dei nomi.
[out] lpszLongPath
Puntatore al buffer per ricevere il percorso lungo.
È possibile usare lo stesso buffer usato per il parametro lpszShortPath
[in] cchBuffer
Le dimensioni del buffer lpszLongPath puntano, in TCHARs.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è la lunghezza, in TCHARs, della stringa copiata in lpszLongPath, senza includere il carattere null di terminazione.
Se il buffer lpBuffer
Se la funzione ha esito negativo per qualsiasi altro motivo, ad esempio se il file non esiste, il valore restituito è zero. Per ottenere informazioni estese sull'errore, chiamare GetLastError.
Osservazioni
In molti file system, un nome di file breve contiene un carattere tilde (~). Tuttavia, non tutti i file system seguono questa convenzione. Pertanto, non presupporre che sia possibile ignorare la chiamata GetLongPathName se il percorso non contiene un carattere tilde (~).
Se il file o la directory esiste ma non viene trovato un percorso lungo,
Se il valore restituito è maggiore del valore specificato in cchBuffer, è possibile chiamare di nuovo la funzione con un buffer sufficientemente grande da contenere il percorso. Per un esempio di questo caso, vedere la sezione Codice di esempio per GetFullPathName.
In Windows 8 e Windows Server 2012 questa funzione è supportata dalle tecnologie seguenti.
Tecnologia | Sostenuto |
---|---|
Protocollo SMB (Server Message Block) 3.0 | Sì |
SMB 3.0 Transparent Failover (TFO) | Sì |
SMB 3.0 con condivisioni file con scalabilità orizzontale (SO) | Sì |
Cluster Shared Volume File System (CsvFS) | Sì |
Resilient File System (ReFS) | Sì |
Esempi
Per un esempio che usa GetLongPathName, vedere la sezione Codice di esempio per GetFullPathName.
Nota
L'intestazione fileapi.h definisce GetLongPathName come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows XP [app desktop | App UWP] |
server minimo supportato | Windows Server 2003 [app desktop | App UWP] |
piattaforma di destinazione | Finestre |
intestazione |
fileapi.h (include Windows.h) |
libreria |
Kernel32.lib |
dll | Kernel32.dll |