Skip to main content
PathCchAppend function

Appends one path to the end of another.

This function differs from PathCchAppendEx in that you are restricted to a final path of length MAX_PATH.

This function differs from PathAppend in that it accepts paths with "\\", "\\?\" and "\\?\UNC\" prefixes.

Note  This function, or PathCchAppendEx, should be used in place of PathAppend to prevent the possibility of a buffer overrun.


HRESULT PathCchAppend(
  _Inout_  PWSTR  pszPath,
  _In_     size_t cchPath,
  _In_opt_ PCWSTR pszMore


pszPath [in, out]

A pointer to a buffer that, on entry, contains the original path. When this function returns successfully, the buffer contains the original path plus the appended path.

cchPath [in]

The size of the buffer pointed to by pszPath, in characters.

pszMore [in, optional]

A pointer to the path to append to the end of the path pointed to by pszPath. UNC paths and paths beginning with the "\\?\" sequence are accepted and recognized as fully-qualified paths. These paths replace the string pointed to by pszPath instead of being appended to it.

Return value

If this function succeeds, it returns S_OK. Otherwise, it returns an HRESULT code, including the following.

Return codeDescription

Either pszPath or pszMore is NULL, cchPath is 0, or cchPath is greater than PATHCCH_MAX_CCH.


The resulting string would exceed PATHCCH_MAX_CCH.


The function could not allocate a buffer of the neccessary size.



This function inserts a backslash between the two strings, if one is not already present.


Minimum supported client

Windows 8 [desktop apps | UWP apps]

Minimum supported server

Windows Server 2012 [desktop apps | UWP apps]





See also