Condividi tramite


Funzione GetLongPathNameTransactedA (winbase.h)

[Microsoft consiglia vivamente agli sviluppatori di usare mezzi alternativi per soddisfare le esigenze dell'applicazione. Molti scenari per cui è stato sviluppato TxF possono essere ottenuti tramite tecniche più semplici e più facilmente disponibili. Inoltre, TxF potrebbe non essere disponibile nelle versioni future di Microsoft Windows. Per altre informazioni e alternative a TxF, vedere Alternative all'uso di NTFS transazionale.]

Converte il percorso specificato nel formato lungo come operazione transazionata.

Per eseguire questa operazione senza una transazione, utilizzare la funzione GetLongPathName.

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

Sintassi

DWORD GetLongPathNameTransactedA(
  [in]  LPCSTR lpszShortPath,
  [out] LPSTR  lpszLongPath,
  [in]  DWORD  cchBuffer,
  [in]  HANDLE hTransaction
);

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.

Il percorso deve risiedere nel computer locale; in caso contrario, la funzione ha esito negativo e l'ultimo codice di errore è impostato su ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE.

[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.

[in] hTransaction

Handle per la transazione. Questo handle viene restituito dalla funzione CreateTransaction.

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 TCHARs, 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 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 GetLongPathNameTransacted se il percorso non contiene un carattere tilde (~).

Se non viene trovato un percorso lungo, questa funzione restituisce il nome specificato nel parametro lpszShortPath nel 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, GetLongPathNameTransacted 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 della directory con estensioni di file più lunghe di 3 caratteri o lunghezze totali superiori a 12 caratteri. Per altre informazioni, vedere la sezione short e long names di Naming Files, Paths e Namespaces.

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

Tecnologia Sostenuto
Protocollo SMB (Server Message Block) 3.0 No
SMB 3.0 Transparent Failover (TFO) No
SMB 3.0 con condivisioni file con scalabilità orizzontale (SO) No
Cluster Shared Volume File System (CsvFS) No
Resilient File System (ReFS) No
 

SMB 3.0 non supporta TxF.

Nota

L'intestazione winbase.h definisce GetLongPathNameTransacted 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 Vista [solo app desktop]
server minimo supportato Windows Server 2008 [solo app desktop]
piattaforma di destinazione Finestre
intestazione winbase.h (include Windows.h)
libreria Kernel32.lib
dll Kernel32.dll

Vedere anche

funzioni di gestione file

GetFullPathNameTransacted

GetShortPathName

denominazione di file, percorsi e spazi dei nomi

NTFS transazionale