GetLongPathNameA-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.
Syntax
DWORD GetLongPathNameA(
[in] LPCSTR lpszShortPath,
[out] LPSTR lpszLongPath,
[in] DWORD cchBuffer
);
Parameter
[in] lpszShortPath
Der zu konvertierende Pfad.
[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 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 abschließende NULL-Zeichen.
Wenn der lpBuffer-Puffer zu klein ist, um den Pfad zu enthalten, entspricht der Rückgabewert in TCHARs der Größe des Puffers, 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 das Aufrufen von GetLongPathName überspringen können, wenn der Pfad kein Tildezeichen (~) enthält.
Wenn die Datei oder das Verzeichnis vorhanden ist, aber kein langer Pfad gefunden wird, ist GetLongPathName erfolgreich, nachdem die Zeichenfolge, auf die durch den 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 zu speichern. Ein Beispiel für diesen Fall finden Sie im Abschnitt Beispielcode für GetFullPathName.
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) | Ja |
SMB 3.0 Transparent Failover (TFO) | Ja |
SMB 3.0 mit Dateifreigaben mit horizontaler Skalierung (SO) | Ja |
Dateisystem mit freigegebenen Clustervolumes (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 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 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 |