GetLongPathNameW-Funktion (fileapi.h)

Konvertiert den angegebenen Pfad in seine lange Form.

Um diesen Vorgang als transaktionierten Vorgang auszuführen, verwenden Sie die GetLongPathNameTransacted-Funktion .

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

Wichtig

Um diese Funktion verwenden zu können, muss der Aufrufer über die folgenden Berechtigungen für den angegebenen Pfad und die übergeordneten Verzeichnisse verfügen:

  • Listenordner
  • Daten lesen
  • Attribute lesen

Syntax

DWORD GetLongPathNameW(
  [in]  LPCWSTR lpszShortPath,
  [out] LPWSTR  lpszLongPath,
  [in]  DWORD   cchBuffer
);

Parameter

[in] lpszShortPath

Der zu konvertierende Pfad.

Standardmäßig ist der Name auf MAX_PATH Zeichen beschränkt. Um dieses Limit auf 32.767 breite Zeichen zu erweitern, müssen Sie dem Pfad "\\?\" voranstellen. 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 entfernen, ohne "\\?\" vorauszustellen. Weitere Informationen finden Sie im Abschnitt "Maximale Pfadlängenbegrenzung" unter Benennung von Dateien, Pfaden und Namespaces .

[out] lpszLongPath

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

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

[in] cchBuffer

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

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert die Länge der in lpszLongPath kopierten Zeichenfolge in TCHARs, ohne das beendende NULL-Zeichen.

Wenn der lpBuffer-Puffer zu klein ist, um den Pfad zu enthalten, ist der Rückgabewert die Größe des Puffers in TCHARs, der erforderlich ist, um den Pfad und das beendende NULL-Zeichen zu enthalten.

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

Bemerkungen

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

Wenn die Datei oder das Verzeichnis vorhanden ist, aber kein langer Pfad gefunden wird, ist GetLongPathName erfolgreich, nachdem die Zeichenfolge, auf die vom parameter lpszShortPath verwiesen wird, in den Puffer kopiert wurde, auf den der lpszLongPath-Parameter verweist.

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 aufzunehmen. 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 hat, die das beendende NULL-Zeichen enthält, enthält der Rückgabewert bei Erfolg nicht das beendende 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 GetLongPathName möglicherweise fehl, wenn das übergeordnete Verzeichnis einer Pfadkomponente nicht abfragt werden kann, um den langen Namen für diese Komponente zu ermitteln. Diese Überprüfung kann für Verzeichniskomponenten übersprungen werden, deren Dateierweiterungen länger als 3 Zeichen sind, oder für Gesamtlängen von mehr als 12 Zeichen. Weitere Informationen finden Sie im Abschnitt Kurze und lange Namen unter Benennungsdateien, Pfade und Namespaces.

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 Horizontalskalieren von Dateifreigaben (SO) Ja
Freigegebenes Clustervolume-Dateisystem (CsvFS) Ja
Robustes Dateisystem (Resilient File System, ReFS) Ja
 

Beispiele

Ein Beispiel, das GetLongPathName verwendet, finden Sie im Abschnitt Beispielcode für GetFullPathName.

Hinweis

Der Fileapi.h-Header definiert GetLongPathName 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 nicht codierungsneutralem Code 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 [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile fileapi.h (Einschließen von Windows.h)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

Dateiverwaltungsfunktionen

GetFullPathName

GetLongPathNameTransacted

GetShortPathName

Benennen von Dateien, Pfaden und Namespaces