Freigeben über


CreateDirectoryTransactedA-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.]

Erstellt ein neues Verzeichnis als Transaktionsvorgang mit den Attributen eines angegebenen Vorlagenverzeichnisses. Wenn das zugrunde liegende Dateisystem die Sicherheit für Dateien und Verzeichnisse unterstützt, wendet die Funktion einen angegebenen Sicherheitsdeskriptor auf das neue Verzeichnis an. Das neue Verzeichnis behält die anderen Attribute des angegebenen Vorlagenverzeichnisses bei.

Syntax

BOOL CreateDirectoryTransactedA(
  [in, optional] LPCSTR                lpTemplateDirectory,
  [in]           LPCSTR                lpNewDirectory,
  [in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  [in]           HANDLE                hTransaction
);

Parameter

[in, optional] lpTemplateDirectory

Der Pfad des Verzeichnisses, das beim Erstellen des neuen Verzeichnisses als Vorlage verwendet werden soll. Dieser Parameter kann NULL-sein.

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.

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

[in] lpNewDirectory

Der Pfad des zu erstellenden Verzeichnisses.

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.

[in, optional] lpSecurityAttributes

Ein Zeiger auf eine SECURITY_ATTRIBUTES Struktur. Der lpSecurityDescriptor Mitglied der Struktur gibt einen Sicherheitsdeskriptor für das neue Verzeichnis an.

Wenn lpSecurityAttributesNULL-ist, erhält das Verzeichnis einen Standardsicherheitsdeskriptor. Die Zugriffssteuerungslisten (Access Control Lists, ACL) im Standardsicherheitsdeskriptor für ein Verzeichnis werden vom übergeordneten Verzeichnis geerbt.

Das Zieldateisystem muss die Sicherheit für Dateien und Verzeichnisse unterstützen, damit dieser Parameter wirksam wird. Dies wird angegeben, wenn GetVolumeInformationFS_PERSISTENT_ACLSzurückgibt.

[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 null (0). Rufen Sie GetLastErrorauf, um erweiterte Fehlerinformationen zu erhalten. Mögliche Fehler sind:

Rückgabecode Beschreibung
ERROR_ALREADY_EXISTS
Das angegebene Verzeichnis ist bereits vorhanden.
ERROR_EFS_NOT_ALLOWED_IN_TRANSACTION
Sie können kein untergeordnetes Verzeichnis mit einem übergeordneten Verzeichnis erstellen, das die Verschlüsselung deaktiviert hat.
ERROR_PATH_NOT_FOUND
Mindestens ein Zwischenverzeichnis ist nicht vorhanden. Diese Funktion erstellt nur das endgültige Verzeichnis im Pfad.

Bemerkungen

Mit der CreateDirectoryTransacted-Funktion können Sie Verzeichnisse erstellen, die Datenstrominformationen von anderen Verzeichnissen erben. Diese Funktion ist z. B. nützlich, wenn Sie Macintosh-Verzeichnisse verwenden, die über einen Ressourcenstrom verfügen, der zum ordnungsgemäßen Identifizieren von Verzeichnisinhalten als Attribut erforderlich ist.

Einige Dateisysteme, z. B. das NTFS-Dateisystem, unterstützen die Komprimierung oder Verschlüsselung für einzelne Dateien und Verzeichnisse. Bei Volumes, die für ein solches Dateisystem formatiert sind, erbt ein neues Verzeichnis die Komprimierungs- und Verschlüsselungsattribute des übergeordneten Verzeichnisses.

Diese Funktion schlägt mit ERROR_EFS_NOT_ALLOWED_IN_TRANSACTION fehl, wenn Sie versuchen, ein untergeordnetes Verzeichnis mit einem übergeordneten Verzeichnis zu erstellen, das die Verschlüsselung deaktiviert hat.

Sie können ein Handle für ein Verzeichnis abrufen, indem Sie die CreateFileTransacted--Funktion mit dem FILE_FLAG_BACKUP_SEMANTICS Flagsatz aufrufen.

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 CreateDirectoryTransacted 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

CreateFileTransacted-

Erstellen und Löschen von Verzeichnissen

Verzeichnisverwaltungsfunktionen

RemoveDirectoryTransacted-

SECURITY_ATTRIBUTES

Transaktions-NTFS-