PathCchCombineEx-Funktion (pathcch.h)

Kombiniert zwei Pfadfragmente zu einem einzelnen Pfad. Diese Funktion kanonisiert auch alle relativen Pfadelemente und entfernt die Elemente "." und ".", um den endgültigen Pfad zu vereinfachen.

Diese Funktion unterscheidet sich von PathCchCombine dadurch, dass ein längerer endgültiger Pfad erstellt werden kann.

Diese Funktion unterscheidet sich von PathAllocCombine darin, dass der Aufrufer die Größe der zurückgegebenen Zeichenfolge deklarieren muss, die im Stapel gespeichert ist.

Diese Funktion unterscheidet sich von PathCombine dadurch, dass sie Pfade mit den Präfixen "\", "\?" und "\?\UNC" akzeptiert.

Hinweis Diese Funktion, PathCchCombine oder PathAllocCombine sollte anstelle von PathCombine verwendet werden, um die Möglichkeit eines Pufferüberlaufs zu verhindern.

Syntax

WINPATHCCHAPI HRESULT PathCchCombineEx(
  [out]          PWSTR  pszPathOut,
  [in]           size_t cchPathOut,
  [in, optional] PCWSTR pszPathIn,
  [in, optional] PCWSTR pszMore,
  [in]           ULONG  dwFlags
);

Parameter

[out] pszPathOut

Ein Zeiger auf einen Puffer, der bei erfolgreicher Rückgabe dieser Funktion die kombinierte Pfadzeichenfolge empfängt. Dieser Parameter kann auf denselben Puffer wie pszPathIn oder pszMore verweisen.

[in] cchPathOut

Die Größe des Puffers, auf den pszPathOut in Zeichen verweist.

[in, optional] pszPathIn

Ein Zeiger auf die erste Pfadzeichenfolge. Dieser Wert kann NULL sein.

[in, optional] pszMore

Ein Zeiger auf die zweite Pfadzeichenfolge. Wenn dieser Pfad mit einem einzelnen umgekehrten Schrägstrich beginnt, wird er nur mit dem Stamm des Pfads kombiniert, auf den von pszPathIn verwiesen wird. Wenn dieser Pfad voll qualifiziert ist, wird er direkt in den Ausgabepuffer kopiert, ohne mit dem anderen Pfad kombiniert zu werden. Dieser Wert kann NULL sein.

[in] dwFlags

Mindestens eins der folgenden Flags:

Wert Bedeutung
PATHCCH_NONE
0x0000000
Lassen Sie die Erstellung von \\?\ Pfaden (d. h. lange Pfade) nicht zu, die länger als MAX_PATH sind.
PATHCCH_ALLOW_LONG_PATHS
0x00000001
Lassen Sie die Erstellung von \\?\-Pfaden zu, die länger als MAX_PATH sind. Beachten Sie, dass cchPathOut größer als MAX_PATH sein muss. Andernfalls wird dieses Flag ignoriert.
PATHCCH_FORCE_ENABLE_LONG_NAME_PROCESS
0x00000002
Erzwingt die API, den Aufrufer unabhängig vom Zustand des langen Namens des Prozesses als aktivierten langen Pfad zu behandeln. Diese Option kann nur verwendet werden, wenn PATHCCH_ALLOW_LONG_PATHS angegeben ist, und kann nicht mit PATHCCH_FORCE_DISABLE_LONG_NAME_PROCESS verwendet werden.

Hinweis Dieser Wert ist ab Windows 10 Version 1703 verfügbar.

PATHCCH_FORCE_DISABLE_LONG_NAME_PROCESS
0x00000004
Erzwingt die API, den Aufrufer unabhängig vom Zustand des langen Namens des Prozesses als deaktiviert zu behandeln. Diese Option kann nur verwendet werden, wenn PATHCCH_ALLOW_LONG_PATHS angegeben ist, und kann nicht mit PATHCCH_FORCE_ENABLE_LONG_NAME_PROCESS verwendet werden.

Hinweis Dieser Wert ist ab Windows 10 Version 1703 verfügbar.

PATHCCH_DO_NOT_NORMALIZE_SEGMENTS
0x00000008
Deaktiviert die Normalisierung von Pfadsegmenten, die das Entfernen von nachfolgenden Punkten und Leerzeichen umfasst. Dadurch wird der Zugriff auf Pfade ermöglicht, die durch die Win32-Pfadnormalisierung blockiert werden.

Hinweis Dieser Wert ist ab Windows 10 Version 1703 verfügbar.

PATHCCH_ENSURE_IS_EXTENDED_LENGTH_PATH
0x00000010
Konvertiert den Eingabepfad in das DOS-Gerätepfadformular mit erweiterter Länge (mit dem Präfix \\?\), falls nicht bereits in diesem Formular vorhanden. Dies ermöglicht den Zugriff auf Pfade, die aufgrund von Win32-Normalisierungsregeln (die nachfolgende Punkte und Leerzeichen entfernen können) und Pfadlängenbeschränkungen andernfalls nicht adressierbar sind. Diese Option impliziert das gleiche Verhalten wie PATHCCH_DO_NOT_NORMALIZE_SEGMENTS.

Hinweis Dieser Wert ist ab Windows 10 Version 1703 verfügbar.

Rückgabewert

Diese Funktion gibt einen HRESULT-Code zurück, einschließlich des folgenden.

Rückgabecode BESCHREIBUNG
S_OK
Die Funktion wurde erfolgreich ausgeführt. Beachten Sie, dass dies auch den Fall einer leeren Erweiterung umfasst, z. B. einen Punkt ohne Zeichen. In diesem Fall wird die ursprüngliche Zeichenfolge unverändert zurückgegeben.
E_INVALIDARG
Dieser Wert kann durch mehrere Dinge verursacht werden, z. B. dass der pszPathOut-Param auf NULL festgelegt wird, oder der cchPathOut-Wert auf 0 oder ein Wert größer als PATHCCH_MAX_CCH festgelegt wird.
E_OUTOFMEMORY
Die Funktion konnte nicht genügend Arbeitsspeicher für die Ausführung des Vorgangs zuweisen.
PATHCCH_E_FILENAME_TOO_LONG
Die Größe eines oder beider ursprünglichen Pfade wurde PATHCCH_MAX_CCH überschritten.

Hinweise

Wenn sowohl pszPathIn als auch pszMoreNULL sind oder auf leere Zeichenfolgen zeigen, wird ein einzelner umgekehrter Schrägstrich in den Puffer kopiert, auf den von pszPathOut verwiesen wird.

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

Weitere Informationen

PathCchCanonicalize

PathCchCanonicalizeEx

PathCchCombine