PathCanonicalizeW-Funktion (shlwapi.h)
Vereinfacht einen Pfad, indem Navigationselemente wie "." und ".." entfernt werden, um einen direkten, wohlgeformten Pfad zu erzeugen.
Syntax
BOOL PathCanonicalizeW(
[out] LPWSTR pszBuf,
[in] LPCWSTR pszPath
);
Parameter
[out] pszBuf
Typ: LPTSTR
Ein Zeiger auf eine Zeichenfolge, die den kanonisierten Pfad empfängt. Sie müssen die Größe dieses Puffers auf MAX_PATH festlegen, um sicherzustellen, dass er groß genug ist, um die zurückgegebene Zeichenfolge zu enthalten.
[in] pszPath
Typ: LPCTSTR
Ein Zeiger auf eine NULL-Zeichenfolge mit maximaler Länge MAX_PATH, die den zu kanonisierenden Pfad enthält.
Rückgabewert
Typ: BOOL
Gibt TRUE zurück, wenn ein Ergebnis berechnet wurde und der Inhalt des lpszDst-Ausgabepuffers gültig ist. Gibt andernfalls FALSE zurück, und der Inhalt des Puffers, auf den von lpszDst verwiesen wird, ist ungültig. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.
Hinweise
Mit dieser Funktion kann der Benutzer angeben, was aus einem Pfad entfernt werden soll, indem spezielle Zeichenfolgensequenzen in den Pfad eingefügt werden. Die Sequenz ".." gibt an, ein Pfadsegment von der aktuellen Position in das vorherige Pfadsegment zu entfernen. Die Sequenz "." gibt an, das nächste Pfadsegment zum folgenden Pfadsegment zu überspringen. Das Stammsegment des Pfads kann nicht entfernt werden.
Wenn mehr ".."-Sequenzen als Pfadsegmente vorhanden sind, gibt die Funktion TRUE zurück, und der Inhalt des Puffers, auf den von lpszDst verwiesen wird, enthält nur den Stamm "".
Beispiele
#include <windows.h>
#include <iostream>
#include "Shlwapi.h"
using namespace std;
int main( void )
{
// Path_1 destination buffer.
char buffer_1[MAX_PATH] = "JustABufferToHoldTheCanonicalizedPathForAnExample";
char *lpStr1;
lpStr1 = buffer_1;
// Path_2 to be Canonicalized.
char buffer_2[ ] = "A:\\name_1\\.\\name_2\\..\\name_3";
char *lpStr2;
lpStr2 = buffer_2;
// Path_3 to be Canonicalized.
char buffer_3[ ] = "A:\\name_1\\..\\name_2\\.\\name_3";
char *lpStr3;
lpStr3 = buffer_3;
// Path_4 to be Canonicalized.
char buffer_4[ ] = "A:\\name_1\\name_2\\.\\name_3\\..\\name_4";
char *lpStr4;
lpStr4 = buffer_4;
// Path_5 to be Canonicalized.
char buffer_5[ ] = "A:\\name_1\\.\\name_2\\.\\name_3\\..\\name_4\\..";
char *lpStr5;
lpStr5 = buffer_5;
// Path_6 to be Canonicalized.
char buffer_6[ ] = "C:\\..";
char *lpStr6;
lpStr6 = buffer_6;
cout << "The un-canonicalized path 2 is : " << lpStr2
<< "\nThe return value is : "
<< PathCanonicalize(lpStr1,lpStr2)
<< "\nThe canonicalized path 1 is : " << lpStr1 << endl;
cout << "\nThe un-canonicalized path 3 is : " << lpStr3
<< "\nThe return value is : "
<< PathCanonicalize(lpStr1,lpStr3)
<< "\nThe canonicalized path 1 is : " << lpStr1 << endl;
cout << "\nThe un-canonicalized path 4 is : " << lpStr4
<< "\nThe return value is : "
<< PathCanonicalize(lpStr1,lpStr4)
<< "\nThe canonicalized path 1 is : " << lpStr1 << endl;
cout << "\nThe un-canonicalized path 5 is : " << lpStr5
<< "\nThe return value is : "
<< PathCanonicalize(lpStr1,lpStr5)
<< "\nThe canonicalized path 1 is : " << lpStr1 << endl;
cout << "\nThe un-canonicalized path 6 is : " << lpStr6
<< "\nThe return value is : "
<< PathCanonicalize(lpStr1,lpStr6)
<< "\nThe canonicalized path 1 is : " << lpStr1 << endl;
}
OUTPUT:
---------
The un-canonicalized path 2 is : A:\name_1\.\name_2\..\name_3
The return value is : 1
The canonicalized path 1 is : A:\name_1\name_3
The un-canonicalized path 3 is : A:\name_1\..\name_2\.\name_3
The return value is : 1
The canonicalized path 1 is : A:\name_2\name_3
The un-canonicalized path 4 is : A:\name_1\name_2\.\name_3\..\name_4
The return value is : 1
The canonicalized path 1 is : A:\name_1\name_2\name_4
The un-canonicalized path 5 is : A:\name_1\.\name_2\.\name_3\..\name_4\..
The return value is : 1
The canonicalized path 1 is : A:\name_1\name_2
The un-canonicalized path 6 is : C:\..
The return value is : 1
The canonicalized path 1 is : C:\
Hinweis
Der shlwapi.h-Header definiert PathCanonicalize 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
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional, Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | shlwapi.h |
Bibliothek | Shlwapi.lib |
DLL | Shlwapi.dll (Version 4.71 oder höher) |
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für