PathCanonicalizeA-Funktion (shlwapi.h)
Vereinfacht einen Pfad, indem Navigationselemente wie "." und "." entfernt werden, um einen direkten, wohlgeformten Pfad zu erzeugen.
Syntax
BOOL PathCanonicalizeA(
[out] LPSTR pszBuf,
[in] LPCSTR 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 die zurückgegebene Zeichenfolge groß genug ist.
[in] pszPath
Typ: LPCTSTR-
Ein Zeiger auf eine null-beendete Zeichenfolge mit maximaler Länge MAX_PATH, die den zu kanonischen Pfad enthält.
Rückgabewert
Typ: BOOL-
Gibt TRUE zurück, wenn ein Ergebnis berechnet wurde und der Inhalt des lpszDst Ausgabepuffer gültig ist. Gibt FALSE- zurück, und der Inhalt des Puffers, auf den lpszDst verweist, ist ungültig. Rufen Sie GetLastErrorauf, um erweiterte Fehlerinformationen zu erhalten.
Bemerkungen
Mit dieser Funktion kann der Benutzer angeben, was aus einem Pfad entfernt werden soll, indem spezielle Zeichensequenzen in den Pfad eingefügt werden. Die Sequenz "." gibt an, ein Pfadsegment aus der aktuellen Position zum vorherigen Pfadsegment zu entfernen. Die Sequenz "." gibt an, dass das nächste Pfadsegment zum folgenden Pfadsegment übersprungen werden soll. Das Stammsegment des Pfads kann nicht entfernt werden.
Wenn mehr "."-Sequenzen vorhanden sind als Pfadsegmente, gibt die Funktion TRUE- und den Inhalt des Puffers zurück, auf den lpszDst verweist, nur den Stamm "" enthält.
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:\
Anmerkung
Der Header "shlwapi.h" definiert PathCanonicalize 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 |
---|---|
mindestens unterstützte Client- | Windows 2000 Professional, Windows XP [nur Desktop-Apps] |
mindestens unterstützte Server- | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform- | Fenster |
Header- | shlwapi.h |
Library | Shlwapi.lib |
DLL- | Shlwapi.dll (Version 4.71 oder höher) |