Freigeben über


GetLongPathNameTransactedA-Funktion (winbase.h)

[Microsoft empfiehlt Entwicklern dringend, alternative Mittel zu verwenden, um die Anforderungen Ihrer Anwendung zu erfüllen. Viele Szenarios, für die TxF entwickelt wurde, können mit einfacheren und leichter verfügbaren 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 transaktionalem NTFS.]

Konvertiert den angegebenen Pfad als Transaktionsvorgang in seine lange Form.

Verwenden Sie die GetLongPathName-Funktion , um diesen Vorgang ohne Transaktion auszuführen.

Weitere Informationen zu Datei- und Pfadnamen finden Sie unter Benennen von Dateien, Pfaden und Namespaces.

Syntax

DWORD GetLongPathNameTransactedA(
  [in]  LPCSTR lpszShortPath,
  [out] LPSTR  lpszLongPath,
  [in]  DWORD  cchBuffer,
  [in]  HANDLE hTransaction
);

Parameter

[in] lpszShortPath

Der zu konvertierende Pfad.

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 .

Der Pfad muss sich auf dem lokalen Computer befinden. Andernfalls schlägt die Funktion fehl, und der letzte Fehlercode ist auf ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE festgelegt.

[out] lpszLongPath

Ein Zeiger auf den Puffer, der den langen Pfad empfangen soll.

Sie können denselben Puffer verwenden, den Sie für den lpszShortPath-Parameter verwendet haben.

[in] cchBuffer

Die Größe des Puffers lpszLongPath zeigt in TCHARs auf.

[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 die Länge der in lpszLongPath kopierten Zeichenfolge in TCHARs, ohne das abschließende NULL-Zeichen.

Wenn der lpBuffer-Puffer zu klein ist, um den Pfad zu enthalten, entspricht der Rückgabewert der Größe des Puffers in TCHARs, der zum Speichern des Pfads und des abschließenden NULL-Zeichens erforderlich ist.

Wenn die Funktion aus einem anderen Grund fehlschlägt, z. B. wenn die Datei nicht vorhanden ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

In vielen Dateisystemen enthält ein kurzer Dateiname ein Tildezeichen (~). Allerdings folgen nicht alle Dateisysteme dieser Konvention. Gehen Sie daher nicht davon aus, dass Sie den Aufruf von GetLongPathNameTransacted überspringen können, wenn der Pfad kein Tildezeichen (~) enthält.

Wenn kein langer Pfad gefunden wird, gibt diese Funktion den Namen zurück, der im lpszShortPath-Parameter im lpszLongPath-Parameter angegeben ist.

Wenn der Rückgabewert größer als der in cchBuffer angegebene Wert ist, können Sie die Funktion erneut mit einem Puffer aufrufen, der groß genug ist, um den Pfad zu speichern. Ein Beispiel für diesen Fall finden Sie im Abschnitt Beispielcode für GetFullPathName.

Hinweis Obwohl der Rückgabewert in diesem Fall eine Länge ist, die das abschließende NULL-Zeichen enthält, enthält der Rückgabewert bei Erfolg nicht das abschließende NULL-Zeichen in der Anzahl.
 
Es ist möglich, Zugriff auf eine Datei oder ein Verzeichnis zu haben, aber keinen Zugriff auf einige der übergeordneten Verzeichnisse dieser Datei oder dieses Verzeichnisses. Daher schlägt GetLongPathNameTransacted möglicherweise fehl, wenn das übergeordnete Verzeichnis einer Pfadkomponente nicht abgefragt werden kann, um den langen Namen für diese Komponente zu bestimmen. Diese Überprüfung kann für Verzeichniskomponenten übersprungen werden, deren Dateierweiterungen länger als 3 Zeichen oder eine Gesamtlänge von mehr als 12 Zeichen sind. Weitere Informationen finden Sie im Abschnitt Kurze und lange Namen unter Benennen von Dateien, Pfaden und Namespaces.

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

Technologie Unterstützt
SMB 3.0-Protokoll (Server Message Block) No
SMB 3.0 Transparent Failover (TFO) No
SMB 3.0 mit Dateifreigaben mit horizontaler Skalierung (SO) No
Dateisystem mit freigegebenen Clustervolumes (CsvFS) No
Robustes Dateisystem (Resilient File System, ReFS) No
 

SMB 3.0 unterstützt TxF nicht.

Hinweis

Der winbase.h-Header definiert GetLongPathNameTransacted 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
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

Dateiverwaltungsfunktionen

GetFullPathNameTransacted

GetShortPathName

Benennen von Dateien, Pfaden und Namespaces

Transaktions-NTFS