Condividi tramite


Funzione CopyFile2 (winbase.h)

Copia un file esistente in un nuovo file, notificando all'applicazione lo stato di avanzamento tramite una funzione di callback.

Sintassi

HRESULT CopyFile2(
  [in]           PCWSTR                        pwszExistingFileName,
  [in]           PCWSTR                        pwszNewFileName,
  [in, optional] COPYFILE2_EXTENDED_PARAMETERS *pExtendedParameters
);

Parametri

[in] pwszExistingFileName

Nome di un file esistente.

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 per rimuovere la limitazione dei caratteri MAX_PATH senza anteporre "\?\". Per informazioni dettagliate, vedere la sezione "Limite massimo percorso" di Denominazione di file, percorsi e spazi dei nomi .
 
Se lpExistingFileName non esiste, la funzione CopyFile2 non riesce restituisce HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND).

[in] pwszNewFileName

Nome del nuovo file.

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 per rimuovere la limitazione dei caratteri MAX_PATH senza anteporre "\?\". Per informazioni dettagliate, vedere la sezione "Limite massimo percorso" di Denominazione di file, percorsi e spazi dei nomi .
 

[in, optional] pExtendedParameters

Indirizzo facoltativo di una struttura di COPYFILE2_EXTENDED_PARAMETERS .

Valore restituito

Se la funzione ha esito positivo, il valore restituito restituirà TRUE quando viene passato alla macro SUCCEEDED .

Codice restituito Descrizione
S_OK
Operazione di copia completata.
HRESULT_FROM_WIN32(ERROR_REQUEST_PAUSED)
L'operazione di copia è stata sospesa da un COPYFILE2_PROGRESS_PAUSE restituito dalla funzione di callback CopyFile2ProgressRoutine .
HRESULT_FROM_WIN32(ERROR_REQUEST_ABORTED)
L'operazione di copia è stata sospesa da una COPYFILE2_PROGRESS_CANCEL o COPYFILE2_PROGRESS_STOP restituita dalla funzione di callback CopyFile2ProgressRoutine .
HRESULT_FROM_WIN32(ERROR_ALREADY_EXISTS)
Il membro dwCopyFlags della struttura COPYFILE2_EXTENDED_PARAMETERS passato attraverso il parametro pExtendedParameters contiene il flag COPY_FILE_FAIL_IF_EXISTS e esiste un nome in conflitto.
HRESULT_FROM_WIN32(ERROR_FILE_EXISTS)
Il membro dwCopyFlags della struttura COPYFILE2_EXTENDED_PARAMETERS passato attraverso il parametro pExtendedParameters contiene il flag COPY_FILE_FAIL_IF_EXISTS e esiste un nome in conflitto.

Commenti

Questa funzione mantiene gli attributi estesi, l'archiviazione strutturata OLE, i flussi di dati alternativi del file system NTFS e gli attributi dei file. Gli attributi di sicurezza per il file esistente non vengono copiati nel nuovo file. Per copiare gli attributi di sicurezza, usare la funzione SHFileOperation .

Questa funzione ha esito negativo se HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED) il file di destinazione esiste già e ha il set di attributi FILE_ATTRIBUTE_HIDDEN o FILE_ATTRIBUTE_READONLY .

Per compilare un'applicazione che usa questa funzione, definire la macro _WIN32_WINNT come _WIN32_WINNT_WIN8 o versione successiva. Per altre informazioni, vedere Uso delle intestazioni di Windows.

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)

A partire da Windows 10, versione 1903 e Windows Server 2022, è supportato un nuovo valore, COPY_FILE_REQUEST_COMPRESSED_TRAFFIC, per il campo dwCopyFlags della struttura COPYFILE2_EXTENDED_PARAMETERS passata nell'argomento pExtendedParameters a questa funzione. Questo nuovo valore richiede che il canale di trasferimento sottostante comprima i dati durante l'operazione di copia. La richiesta potrebbe non essere supportata per tutti i supporti, nel qual caso viene ignorata. Gli attributi e i parametri di compressione (complessità computazionale, utilizzo della memoria) non sono configurabili tramite questa API e sono soggetti a modifiche tra versioni diverse del sistema operativo. In Windows 10 il flag è supportato per i file che risiedono in condivisioni SMB, in cui la versione del protocollo SMB negoziata è SMB v3.1.1 o successiva.

Requisiti

   
Client minimo supportato Windows 8 [app desktop | App UWP]
Server minimo supportato Windows Server 2012 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione winbase.h (include Windows.h)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

COPYFILE2_EXTENDED_PARAMETERS

Funzioni di gestione file