PathCchCanonicalizeEx-Funktion (pathcch.h)
Vereinfacht einen Pfad, indem Navigationselemente wie "." und ".." entfernt werden, um einen direkten, wohlgeformten Pfad zu erzeugen.
Diese Funktion unterscheidet sich von PathCchCanonicalize darin, dass ein längerer endgültiger Pfad erstellt werden kann.
Diese Funktion unterscheidet sich von PathAllocCanonicalize darin, dass der Aufrufer die Größe der zurückgegebenen Zeichenfolge deklarieren muss, die im Stapel gespeichert ist.
Diese Funktion unterscheidet sich von PathCanonicalize darin, dass Pfade mit den Präfixen "\", "\?" und "\?\UNC" akzeptiert werden.
Syntax
WINPATHCCHAPI HRESULT PathCchCanonicalizeEx(
[out] PWSTR pszPathOut,
[in] size_t cchPathOut,
[in] PCWSTR pszPathIn,
[in] ULONG dwFlags
);
Parameter
[out] pszPathOut
Ein Zeiger auf einen Puffer, der die bearbeitete Pfadzeichenfolge empfängt, wenn diese Funktion erfolgreich zurückgibt.
[in] cchPathOut
Die Größe des Puffers, auf den pszPathOut in Zeichen verweist.
[in] pszPathIn
Ein Zeiger auf die ursprüngliche Pfadzeichenfolge. Wenn dieser Wert NULL ist, auf eine leere Zeichenfolge verweist oder zu einer leeren Zeichenfolge führt, sobald die Elemente "." und ".." entfernt werden, wird ein einzelner umgekehrter Schrägstrich in den Puffer kopiert, auf den pszPathOut verweist.
[in] dwFlags
Mindestens eins der folgenden Flags:
Rückgabewert
Wenn diese Funktion erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein HRESULT-Code zurückgegeben, einschließlich, aber nicht beschränkt auf Folgendes.
Rückgabecode | Beschreibung |
---|---|
|
Der cchPathOut-Wert ist größer als PATHCCH_MAX_CCH. |
|
Ein Pfadsegment enthält mehr als PATHCCH_MAX_CCH Zeichen oder überschreitet, wenn das PATHCCH_ALLOW_LONG_PATHS-Flag nicht festgelegt ist, die Standardlänge des Pfadsegments von 256 Zeichen. |
|
Die Funktion konnte keinen Puffer der erforderlichen Größe zuordnen. |
Hinweise
Diese Funktion antwortet auf die in einen Pfad eingebetteten Zeichenfolgen "." und "..". Die Zeichenfolge ".." gibt an, dass das unmittelbar vorangehende Pfadsegment entfernt werden soll. Die Zeichenfolge "." gibt an, dass das nächste Pfadsegment übersprungen werden soll. Beachten Sie, dass das Stammsegment des Pfads nicht entfernt werden kann. Wenn mehr ".."-Zeichenfolgen vorhanden sind, als Pfadsegmente vorhanden sind, gibt die Funktion S_OK zurück, und der Puffer, auf den pszPathOut verweist, enthält einen einzelnen umgekehrten Schrägstrich , "\".
Alle nachfolgenden Zeiträume werden aus dem Pfad entfernt, es sei denn, sie werden mit dem wilden Karte Zeichen "" vorangestellt. In diesem Fall wird ein einzelner Punkt nach dem Zeichen "" beibehalten, aber alle anderen nachfolgenden Zeiträume werden entfernt.
Wenn der resultierende Pfad ein Stammlaufwerk ("x:") ist, wird ein umgekehrter Schrägstrich ("x:\") angefügt.
Diese Funktion konvertiert schräge Schrägstriche (/) nicht in Schrägstriche (\). Bei nicht vertrauenswürdiger Eingabe kann diese Funktion selbst nicht verwendet werden, um Pfade in ein Formular zu konvertieren, das mit anderen Pfaden für Unterpfad oder Identität verglichen werden kann. Aufrufer, die diese Fähigkeit benötigen, sollten schräge Schrägstriche konvertieren, bevor sie diese Funktion verwenden.
Die folgenden Beispiele zeigen die Auswirkungen dieser Zeichenfolgen.
Ursprüngliche Zeichenfolge | Kanonisierte Zeichenfolge |
---|---|
C:\name_1\.\name_2\.. \name_3 | C:\name_1\name_3 |
C:\name_1\.. \name_2\.\name_3 | C:\name_2\name_3 |
C:\name_1\name_2\.\name_3\.. \name_4 | C:\name_1\name_2\name_4 |
C:\name_1\.\name_2\.\name_3\.. \name_4\.. | C:\name_1\name_2 |
C:\name_1\*... | C:\name_1\*. |
C:\.. | C:\ |
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 8 [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2012 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | pathcch.h |
Bibliothek | Pathcch.lib |