Freigeben über


DeleteFileTransactedA-Funktion (winbase.h)

[Microsoft empfiehlt Entwicklern dringend, alternative Mittel zu nutzen, um die Anforderungen Ihrer Anwendung zu erreichen. 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 Transactional NTFS.]

Löscht eine vorhandene Datei als transacted-Vorgang.

Syntax

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

Parameter

[in] lpFileName

Der Name der zu löschenden Datei.

Standardmäßig ist der Name auf MAX_PATH Zeichen beschränkt. Um diesen Grenzwert auf 32.767 breite Zeichen zu erweitern, stellen Sie "\\?\" dem Pfad voran. Weitere Informationen finden Sie unter Namensdateien, Pfade und Namespaces.

Trinkgeld

Ab Windows 10, Version 1607, können Sie sich anmelden, um die MAX_PATH Einschränkung zu entfernen, ohne "\\?\". Weitere Informationen finden Sie im Abschnitt "Maximale Pfadlängenbeschränkung" Benennungsdateien, Pfade und Namespaces.

Die Datei muss sich auf dem lokalen Computer befinden; andernfalls schlägt die Funktion fehl, und der letzte Fehlercode wird auf ERROR_TRANSACTIONS_UNSUPPORTED_REMOTEfestgelegt.

[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). Rufen Sie GetLastErrorauf, um erweiterte Fehlerinformationen zu erhalten.

Bemerkungen

Wenn eine Anwendung versucht, eine datei zu löschen, die nicht vorhanden ist, schlägt die DeleteFileTransacted--Funktion mit ERROR_FILE_NOT_FOUNDfehl. Wenn es sich bei der Datei um eine schreibgeschützte Datei handelt, schlägt die Funktion mit ERROR_ACCESS_DENIEDfehl.

In der folgenden Liste werden einige Tipps zum Löschen, Entfernen oder Schließen von Dateien aufgeführt:

  • 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 untergeordneter Elemente im übergeordneten Verzeichnis verfügen.
  • Um die Dateien in einem Verzeichnis rekursiv zu löschen, verwenden Sie die funktion SHFileOperation.
  • Verwenden Sie zum Entfernen eines leeren Verzeichnisses die RemoveDirectoryTransacted-Funktion.
  • Verwenden Sie zum Schließen einer geöffneten Datei die CloseHandle--Funktion.
Wenn Sie ein Verzeichnis mit allen Zugriffen einrichten, mit Ausnahme des Löschens und Löschens untergeordneter Elemente, und die Zugriffssteuerungslisten (Access Control Lists, ACL) neuer Dateien geerbt werden, können Sie eine Datei erstellen, ohne sie löschen zu können. Anschließend können Sie jedoch eine Datei erstellen und dann den gesamten Zugriff erhalten, den Sie für das Handle anfordern, das sie zum Zeitpunkt der Erstellung der Datei an Sie zurückgibt.

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 Dateisicherheits- und Zugriffsberechtigungen.

Die DeleteFileTransacted-Funktion schlägt fehl, wenn eine Anwendung versucht, eine Datei zu löschen, die für normale E/A oder als speicherzuordnunge Datei geöffnet ist (FILE_SHARE_DELETE muss angegeben werden, wenn 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 Transacted Writer-Handle für die Datei geschlossen wurde, sofern die Transaktion noch aktiv ist. Wenn eine Datei zum Löschen markiert wurde und ein Transacted Writer Handle nach Abschluss der Transaktion noch geöffnet ist, wird die Datei nicht gelöscht.

Symbolische Verknüpfungen: Wenn der Pfad auf eine symbolische Verknüpfung verweist, wird die symbolische Verknüpfung gelöscht, nicht das Ziel. Zum Löschen eines Ziels müssen Sie CreateFile- aufrufen und FILE_FLAG_DELETE_ON_CLOSEangeben.

In Windows 8 und Windows Server 2012 wird diese Funktion von den folgenden Technologien unterstützt.

Technologie Abgestützt
Server Message Block (SMB) 3.0-Protokoll Nein
SMB 3.0 Transparent Failover (TFO) Nein
SMB 3.0 mit Skalierungsdateifreigaben (SO) Nein
Freigegebenes Clustervolumedateisystem (CsvFS) Nein
Resilient File System (ReFS) Nein
 

SMB 3.0 unterstützt TxF nicht.

Anmerkung

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

Anforderung Wert
mindestens unterstützte Client- Windows Vista [nur Desktop-Apps]
mindestens unterstützte Server- Windows Server 2008 [Nur Desktop-Apps]
Zielplattform- Fenster
Header- winbase.h (enthalten Windows.h)
Library Kernel32.lib
DLL- Kernel32.dll

Siehe auch

CloseHandle-

CreateFileTransacted-

Dateiverwaltungsfunktionen

symbolische Verknüpfungen

Transaktions-NTFS-