Condividi tramite


Funzione GetLongPathNameA (fileapi.h)

Converte il percorso specificato nel formato lungo.

Per eseguire questa operazione come operazione transazionata, utilizzare la funzione GetLongPathNameTransacted .

Per altre informazioni sui nomi di file e percorsi, vedere Denominazione di file, percorsi e spazi dei nomi.

Sintassi

DWORD GetLongPathNameA(
  [in]  LPCSTR lpszShortPath,
  [out] LPSTR  lpszLongPath,
  [in]  DWORD  cchBuffer
);

Parametri

[in] lpszShortPath

Percorso da convertire.

[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 a, in TCHAR.

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 è troppo piccolo per contenere il percorso, il valore restituito è la dimensione, in TCHAR, del buffer necessario per contenere il percorso e il carattere Null di terminazione.

Se la funzione ha esito negativo per qualsiasi altro motivo, ad esempio se il file non esiste, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

In molti file system, un nome di file breve contiene un carattere tilde (~). Tuttavia, non tutti i file system seguono questa convenzione. Non presupporre pertanto che sia possibile ignorare la chiamata a GetLongPathName se il percorso non contiene un carattere tilde (~).

Se il file o la directory esiste ma non viene trovato un percorso lungo, GetLongPathName ha esito positivo, dopo aver copiato la stringa a cui fa riferimento il parametro lpszShortPath al buffer a cui fa riferimento il parametro lpszLongPath .

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.

Nota Anche se il valore restituito in questo caso è una lunghezza che include il carattere Null di terminazione, il valore restituito in caso di esito positivo non include il carattere null di terminazione nel conteggio.
 
È possibile avere accesso a un file o a una directory, ma non avere accesso ad alcune delle directory padre di tale file o directory. Di conseguenza, GetLongPathName potrebbe non riuscire quando non è in grado di eseguire una query sulla directory padre di un componente di percorso per determinare il nome lungo per tale componente. Questo controllo può essere ignorato per i componenti di directory con estensioni di file più lunghe di 3 caratteri o lunghezze totali superiori a 12 caratteri. Per altre informazioni, vedere la sezione Nomi brevi e lunghi di Denominazione di file, percorsi e spazi dei nomi.

In Windows 8 e Windows Server 2012 questa funzione è supportata dalle tecnologie seguenti.

Tecnologia Supportato
Protocollo SMB (Server Message Block) 3.0
Failover trasparente SMB 3.0 (TFO)
SMB 3.0 con condivisioni file di scalabilità orizzontale (SO)
File system del volume condiviso cluster (CsvFS)
Resilient File System (ReFS)
 

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 che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.

Requisiti

Requisito Valore
Client minimo supportato Windows XP [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione fileapi.h (include Windows.h)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

Funzioni di gestione file

GetFullPathName

GetLongPathNameTransacted

GetShortPathName

Denominazione di file, percorsi e spazi dei nomi