Funzione DeleteFileTransactedA (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.

Elimina un file esistente come operazione transazionata.

Sintassi

BOOL DeleteFileTransactedA(
  [in] LPCSTR lpFileName,
  [in] HANDLE hTransaction
);

Parametri

[in] lpFileName

Nome del file da eliminare.

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.

Suggerimento

A partire da Windows 10, versione 1607, è possibile acconsentire esplicitamente a rimuovere la limitazione MAX_PATH senza anteporre "\?\". Per informazioni dettagliate, vedere la sezione "Limitazione massima della lunghezza del percorso" di Denominazione di file, percorsi e spazi dei nomi .

Il file 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.

[in] hTransaction

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

Valore restituito

Se la funzione ha esito positivo, il valore restituito è diverso da zero.

Se la funzione ha esito negativo, il valore restituito è 0 (zero). Per informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

Se un'applicazione tenta di eliminare un file che non esiste, la funzione DeleteFileTransacted ha esito negativo con ERROR_FILE_NOT_FOUND. Se il file è di sola lettura, la funzione ha esito negativo con ERROR_ACCESS_DENIED.

L'elenco seguente identifica alcuni suggerimenti per l'eliminazione, la rimozione o la chiusura di file:

  • Per eliminare un file di sola lettura, è innanzitutto necessario rimuovere l'attributo di sola lettura.
  • Per eliminare o rinominare un file, è necessario disporre dell'autorizzazione di eliminazione per il file o eliminare l'autorizzazione figlio nella directory padre.
  • Per eliminare in modo ricorsivo i file in una directory, usare la funzione SHFileOperation .
  • Per rimuovere una directory vuota, usare la funzione RemoveDirectoryTransacted .
  • Per chiudere un file aperto, usare la funzione CloseHandle .
Se si configura una directory con tutti gli accessi tranne eliminare ed eliminare elementi figlio e gli elenchi di controllo di accesso (ACL) dei nuovi file vengono ereditati, è possibile creare un file senza poterlo eliminare. Tuttavia, è possibile creare un file e quindi ottenere tutto l'accesso richiesto nell'handle restituito al momento della creazione del file.

Se si richiede l'autorizzazione di eliminazione al momento della creazione di un file, è possibile eliminare o rinominare il file con tale handle, ma non con qualsiasi altro handle. Per altre informazioni, vedere Protezione dei file e diritti di accesso.

La funzione DeleteFileTransacted ha esito negativo se un'applicazione tenta di eliminare un file con altri handle aperti per le operazioni di I/O normali o come file mappato alla memoria (FILE_SHARE_DELETE deve essere stato specificato quando sono stati aperti altri handle).

La funzione DeleteFileTransacted contrassegna un file per l'eliminazione alla chiusura. Il file viene eliminato dopo la chiusura dell'ultimo handle del writer transazionale nel file, purché la transazione sia ancora attiva. Se un file è stato contrassegnato per l'eliminazione e un handle writer transazionale è ancora aperto al termine della transazione, il file non verrà eliminato.

Collegamenti simbolici: Se il percorso punta a un collegamento simbolico, il collegamento simbolico viene eliminato, non la destinazione. Per eliminare una destinazione, è necessario chiamare CreateFile e specificare FILE_FLAG_DELETE_ON_CLOSE.

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

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

SMB 3.0 non supporta TxF.

Nota

L'intestazione winbase.h definisce DeleteFileTransacted 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 Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winbase.h (include Windows.h)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

Closehandle

CreateFileTransacted

Funzioni di gestione file

Collegamenti simbolici

NTFS transazionale