CreateDirectoryExA-Funktion (winbase.h)
Erstellt ein neues Verzeichnis 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.
Um diesen Vorgang als transaktionierten Vorgang auszuführen, verwenden Sie die CreateDirectoryTransacted-Funktion .
Syntax
BOOL CreateDirectoryExA(
[in] LPCSTR lpTemplateDirectory,
[in] LPCSTR lpNewDirectory,
[in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes
);
Parameter
[in] lpTemplateDirectory
Der Pfad des Verzeichnisses, das beim Erstellen des neuen Verzeichnisses als Vorlage verwendet werden soll.
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] lpNewDirectory
Der Pfad des zu erstellenden Verzeichnisses.
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, optional] lpSecurityAttributes
Ein Zeiger auf eine SECURITY_ATTRIBUTES-Struktur . Der lpSecurityDescriptor-Member der -Struktur gibt einen Sicherheitsdeskriptor für das neue Verzeichnis an.
Wenn lpSecurityAttributesNULL ist, ruft das Verzeichnis einen Standardsicherheitsdeskriptor ab. Die Zugriffssteuerungslisten (Access Control Lists, ACL) im Standardsicherheitsdeskriptor für ein Verzeichnis werden vom übergeordneten Verzeichnis geerbt.
Das Zieldateisystem muss die Sicherheit von Dateien und Verzeichnissen unterstützen, damit dieser Parameter eine Auswirkung hat. Dies wird angezeigt, wenn GetVolumeInformationFS_PERSISTENT_ACLS zurückgibt.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.
Wenn die Funktion fehlschlägt, ist der Rückgabewert null (0). Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf. Mögliche Fehler sind:
Rückgabecode | Beschreibung |
---|---|
|
Das angegebene Verzeichnis ist bereits vorhanden. |
|
Mindestens ein Zwischenverzeichnis ist nicht vorhanden. Diese Funktion erstellt nur das endgültige Verzeichnis im Pfad. Verwenden Sie die ShCreateDirectoryEx-Funktion , um alle Zwischenverzeichnisse für den Pfad zu erstellen. |
Bemerkungen
Mit der CreateDirectoryEx-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 Ressourcendatenstrom verfügen, der benötigt wird, um Verzeichnisinhalte ordnungsgemäß als Attribut zu identifizieren.
Einige Dateisysteme, z. B. das NTFS-Dateisystem, unterstützen die Komprimierung oder Verschlüsselung für einzelne Dateien und Verzeichnisse. Auf Volumes, die für ein solches Dateisystem formatiert sind, erbt ein neues Verzeichnis die Komprimierungs- und Verschlüsselungsattribute des übergeordneten Verzeichnisses.
Sie können ein Handle für ein Verzeichnis abrufen, indem Sie die CreateFile-Funktion mit festgelegtem FILE_FLAG_BACKUP_SEMANTICS-Flag aufrufen. Ein Codebeispiel finden Sie unter CreateFile.
Zur Unterstützung von Vererbungsfunktionen, die den Sicherheitsdeskriptor dieses Objekts abfragen, können heuristisch bestimmt und gemeldet werden, dass die Vererbung wirksam ist. Weitere Informationen finden Sie unter Automatische Weitergabe von vererbbaren ACEs.
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 | Ja |
SMB 3.0 Transparent Failover (TFO) | Ja |
SMB 3.0 mit Dateifreigaben für horizontales Skalieren (SO) | Ja |
Freigegebenes Clustervolume-Dateisystem (CsvFS) | Ja |
Robustes Dateisystem (Resilient File System, ReFS) | Ja |
Hinweis
Der winbase.h-Header definiert CreateDirectoryEx 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 XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | winbase.h (Windows.h einschließen) |
Bibliothek | Kernel32.lib |
DLL | Kernel32.dll |
Siehe auch
Erstellen und Löschen von Verzeichnissen