DeleteFileTransactedW-Funktion (winbase.h)
[Microsoft empfiehlt Entwicklern dringend, alternative Mittel zu verwenden, um die Anforderungen Ihrer Anwendung zu erfüllen. Viele Szenarien, für die TxF entwickelt wurde, können durch einfachere und leichter verfügbare Techniken erreicht werden. Darüber hinaus ist TxF in zukünftigen Versionen von Microsoft Windows möglicherweise nicht verfügbar. Weitere Informationen und Alternativen zu TxF finden Sie unter Alternativen zur Verwendung von Transaktions-NTFS.]
Löscht eine vorhandene Datei als transaktionierten Vorgang.
Syntax
BOOL DeleteFileTransactedW(
[in] LPCWSTR lpFileName,
[in] HANDLE hTransaction
);
Parameter
[in] lpFileName
Der Name der zu löschenden Datei.
Die Datei muss sich auf dem lokalen Computer befinden. Andernfalls schlägt die Funktion fehl, und der letzte Fehlercode ist auf ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE festgelegt.
Standardmäßig ist der Name auf MAX_PATH Zeichen beschränkt. Um diesen Grenzwert auf 32.767 Breitzeichen zu erweitern, stellen Sie dem Pfad "\\?\" voran. Weitere Informationen finden Sie unter Benennen von Dateien, Pfaden und Namespaces.
Tipp
Ab Windows 10 Version 1607 können Sie die MAX_PATH-Einschränkung aufheben, ohne "\\?\" vorab ausstehen zu müssen. Ausführliche Informationen finden Sie im Abschnitt "Maximale Längenbeschränkung für Pfade" unter Benennen von Dateien, Pfaden und Namespaces .
[in] hTransaction
Ein Handle für die Transaktion. Dieses Handle wird von der CreateTransaction-Funktion zurückgegeben.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.
Wenn die Funktion fehlschlägt, ist der Rückgabewert 0 (null). Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.
Bemerkungen
Wenn eine Anwendung versucht, eine Datei zu löschen, die nicht vorhanden ist, schlägt die DeleteFileTransacted-Funktion mit ERROR_FILE_NOT_FOUND fehl. Wenn es sich bei der Datei um eine schreibgeschützte Datei handelt, schlägt die Funktion mit ERROR_ACCESS_DENIED fehl.
Die folgende Liste enthält einige Tipps zum Löschen, Entfernen oder Schließen von Dateien:
- Um eine schreibgeschützte Datei zu löschen, müssen Sie zuerst das schreibgeschützte Attribut entfernen.
- Um eine Datei zu löschen oder umzubenennen, müssen Sie entweder über die Berechtigung zum Löschen der Datei oder über die Berechtigung zum Löschen einer untergeordneten Datei im übergeordneten Verzeichnis verfügen.
- Verwenden Sie die ShFileOperation-Funktion , um die Dateien in einem Verzeichnis rekursiv zu löschen.
- Um ein leeres Verzeichnis zu entfernen, verwenden Sie die RemoveDirectoryTransacted-Funktion .
- Um eine geöffnete Datei zu schließen, verwenden Sie die CloseHandle-Funktion .
Wenn Sie zum Zeitpunkt der Erstellung einer Datei die Löschberechtigung anfordern, können Sie die Datei mit diesem Handle löschen oder umbenennen, jedoch nicht mit einem anderen Handle. Weitere Informationen finden Sie unter Dateisicherheit und Zugriffsrechte.
Die DeleteFileTransacted-Funktion schlägt fehl, wenn eine Anwendung versucht, eine Datei zu löschen, die andere Handles für normale E/A-Vorgänge geöffnet hat, oder als datei mit Speicherzuordnung (FILE_SHARE_DELETE muss angegeben worden sein, als andere Handles geöffnet wurden).
Die DeleteFileTransacted-Funktion markiert eine Datei zum Löschen beim Schließen. Die Datei wird gelöscht, nachdem das letzte transaktionierte Writerhandle für die Datei geschlossen wurde, sofern die Transaktion noch aktiv ist. Wenn eine Datei zum Löschen markiert wurde und ein Transaktionsschreiberhandle nach Abschluss der Transaktion weiterhin geöffnet ist, wird die Datei nicht gelöscht.
Symbolische Links: Wenn der Pfad auf einen symbolischen Link verweist, wird der symbolische Link gelöscht, nicht das Ziel. Zum Löschen eines Ziels müssen Sie CreateFile aufrufen und FILE_FLAG_DELETE_ON_CLOSE angeben.
In Windows 8 und Windows Server 2012 wird diese Funktion von den folgenden Technologien unterstützt.
Technologie | Unterstützt |
---|---|
Server Message Block (SMB) 3.0-Protokoll | Nein |
SMB 3.0 Transparent Failover (TFO) | Nein |
SMB 3.0 mit Dateifreigaben für horizontales Skalieren (SO) | Nein |
Freigegebenes Clustervolume-Dateisystem (CsvFS) | Nein |
Robustes Dateisystem (Resilient File System, ReFS) | Nein |
SMB 3.0 unterstützt TxF nicht.
Hinweis
Der winbase.h-Header definiert DeleteFileTransacted als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht Codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.
Anforderungen
Unterstützte Mindestversion (Client) | Windows Vista [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | winbase.h (Windows.h einschließen) |
Bibliothek | Kernel32.lib |
DLL | Kernel32.dll |
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für