CreateHardLinkTransactedW-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.]
Stellt eine feste Verknüpfung zwischen einer vorhandenen Datei und einer neuen Datei als Transaktionsvorgang her. Diese Funktion wird nur im NTFS-Dateisystem unterstützt, und nur für Dateien, nicht für Verzeichnisse.
Syntax
BOOL CreateHardLinkTransactedW(
[in] LPCWSTR lpFileName,
[in] LPCWSTR lpExistingFileName,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
[in] HANDLE hTransaction
);
Parameter
[in] lpFileName
Der Name der neuen Datei.
Dieser Parameter kann den Namen eines Verzeichnisses nicht angeben.
[in] lpExistingFileName
Der Name der vorhandenen Datei.
Dieser Parameter kann den Namen eines Verzeichnisses nicht angeben.
lpSecurityAttributes
Reserviert; muss NULL-sein.
[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.
Die maximale Anzahl harter Verknüpfungen, die mit dieser Funktion erstellt werden können, beträgt 1023 pro Datei. Wenn für eine Datei mehr als 1023 Verknüpfungen erstellt werden, führt ein Fehler zu einem Fehler.
Die Dateien müssen sich auf dem lokalen Computer befinden; andernfalls schlägt die Funktion fehl, und der letzte Fehlercode wird auf ERROR_TRANSACTIONS_UNSUPPORTED_REMOTEfestgelegt.
Bemerkungen
Jeder Verzeichniseintrag für eine Datei, die mit CreateFileTransacted oder CreateHardLinkTransacted erstellt wird, ist eine harte Verknüpfung zu einer zugeordneten Datei. Eine zusätzliche feste Verknüpfung, die mit der CreateHardLinkTransacted-Funktion erstellt wird, ermöglicht es Ihnen, mehrere Verzeichniseinträge für eine Datei zu haben, d. h. mehrere feste Verknüpfungen zu derselben Datei, die unterschiedliche Namen im selben Verzeichnis sein können, oder die gleichen oder verschiedene Namen in verschiedenen Verzeichnissen. Alle harten Links zu einer Datei müssen sich jedoch auf demselben Volume befinden.
Da hardlinks nur Verzeichniseinträge für eine Datei sind, sehen alle Anwendungen, die eine andere feste Verknüpfung verwenden, die Änderungen, wenn eine Anwendung eine Datei über eine feste Verknüpfung ändert. Außerdem werden alle Verzeichniseinträge aktualisiert, wenn sich die Datei ändert. Wenn sich beispielsweise eine Dateigröße ändert, werden alle harten Verknüpfungen zur Datei die neue Dateigröße angezeigt.
Der Sicherheitsdeskriptor gehört zu der Datei, auf die ein harter Link verweist. Der Link selbst ist nur ein Verzeichniseintrag und verfügt nicht über einen Sicherheitsdeskriptor. Wenn Sie daher den Sicherheitsdeskriptor eines hardlinks ändern, ändern Sie die Sicherheitsbeschreibung der zugrunde liegenden Datei, und alle hardlinks, die auf die Datei verweisen, ermöglichen den neu angegebenen Zugriff. Sie können einer Datei keine anderen Sicherheitsdeskriptoren pro Hardlink entziehen.
Diese Funktion ändert nicht den Sicherheitsdeskriptor der Datei, mit der verknüpft werden soll, auch wenn Sicherheitsbeschreibungsinformationen im lpSecurityAttributes Parameter übergeben werden.
Verwenden Sie DeleteFileTransacted-, um feste Links zu löschen. Sie können sie in beliebiger Reihenfolge löschen, unabhängig von der Reihenfolge, in der sie erstellt werden.
Flags, Attribute, Zugriff und Freigabe, die in CreateFileTransacted pro Datei ausgeführt werden. Wenn Sie eine Datei öffnen, die die Freigabe nicht zulässt, kann eine andere Anwendung die Datei nicht freigeben, indem Sie eine neue feste Verknüpfung mit der Datei erstellen.
Wenn Sie eine feste Verknüpfung im NTFS-Dateisystem erstellen, werden die Dateiattributeinformationen im Verzeichniseintrag nur aktualisiert, wenn die Datei geöffnet wird, oder wenn GetFileInformationByHandle mit dem Handle einer bestimmten Datei aufgerufen wird.
Symbolische Verknüpfungen: Wenn der Pfad auf eine symbolische Verknüpfung zeigt, erstellt die Funktion eine harte Verknüpfung mit dem Ziel.
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 |
Beachten Sie, dass SMB 3.0 TxF nicht unterstützt.
Anmerkung
Der winbase.h-Header definiert CreateHardLinkTransacted als Alias, der automatisch die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante 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 |