Freigeben über


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

Wandelt den angegebenen Pfad in sein langes Formular als Transaktionsvorgang um.

Verwenden Sie zum Ausführen dieses Vorgangs ohne Transaktion die GetLongPathName--Funktion.

Weitere Informationen zu Datei- und Pfadnamen finden Sie unter Namensdateien, Pfade 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 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.

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

[out] lpszLongPath

Ein Zeiger auf den Puffer, um den langen Pfad zu empfangen.

Sie können den gleichen Puffer verwenden, den Sie für den parameter lpszShortPath verwendet haben.

[in] cchBuffer

Die Größe des Puffers lpszLongPath in TCHARs.

[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 in TCHAR-s der in lpszLongPathkopierten Zeichenfolge, nicht einschließlich des endenden Nullzeichens.

Wenn der lpBuffer Puffer zu klein ist, um den Pfad zu enthalten, ist der Rückgabewert die Größe des Puffers in TCHARs des Puffers, der zum Speichern des Pfads und des endenden Nullzeichens erforderlich ist.

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

Bemerkungen

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 GetLongPathNameTransacted- überspringen können, wenn der Pfad kein Tildezeichen (~) enthält.

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

Wenn der Rückgabewert größer als der in cchBufferangegebene 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 beendende NULL-Zeichen enthält, enthält der Rückgabewert für Erfolg nicht das endende Nullzeichen 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 zu haben. Daher kann GetLongPathNameTransacted- fehlschlagen, wenn das übergeordnete Verzeichnis einer Pfadkomponente nicht abgefragt werden kann, um den langen Namen für diese Komponente zu ermitteln. Diese Überprüfung kann für Verzeichniskomponenten mit Dateierweiterungen mit mehr als 3 Zeichen oder gesamter Länge übersprungen werden, die länger als 12 Zeichen sind. Weitere Informationen finden Sie im Abschnitt Short vs. Long Names Abschnitt Benennungsdateien, Pfade und Namespaces.

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

Siehe auch

Dateiverwaltungsfunktionen

GetFullPathNameTransacted-

GetShortPathName-

Namensdateien, Pfade und Namespaces

Transaktions-NTFS-