Compartir a través de


Función PathCchCombineEx (pathcch.h)

Combina dos fragmentos de ruta de acceso en una sola ruta de acceso. Esta función también canónicamente cualquier elemento de ruta de acceso relativa, quitando los elementos "." y ".." para simplificar la ruta de acceso final.

Esta función difiere de PathCchCombine en que permite construir una ruta de acceso final más larga.

Esta función difiere de PathAllocCombine en que el autor de la llamada debe declarar el tamaño de la cadena devuelta, que se almacena en la pila.

Esta función difiere de PathCombine en que acepta rutas de acceso con prefijos "\", "\?" y "\?\UNC".

Nota Esta función, PathCchCombine o PathAllocCombine se debe usar en lugar de PathCombine para evitar la posibilidad de que se supere un búfer.

Sintaxis

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

Parámetros

[out] pszPathOut

Puntero a un búfer que, cuando esta función vuelve correctamente, recibe la cadena de ruta de acceso combinada. Este parámetro puede apuntar al mismo búfer que pszPathIn o pszMore.

[in] cchPathOut

Tamaño del búfer al que apunta pszPathOut, en caracteres.

[in, optional] pszPathIn

Puntero a la primera cadena de ruta de acceso. Este valor puede ser NULL.

[in, optional] pszMore

Puntero a la segunda cadena de ruta de acceso. Si esta ruta de acceso comienza con una sola barra diagonal inversa, se combina solo con la raíz de la ruta de acceso a la que apunta pszPathIn. Si esta ruta de acceso está completa, se copia directamente en el búfer de salida sin combinarse con la otra ruta de acceso. Este valor puede ser NULL.

[in] dwFlags

Una o varias de las marcas siguientes:

Valor Significado
PATHCCH_NONE
0x0000000
No permita la construcción de rutas \\?\ (es decir, rutas largas) más largas que MAX_PATH .
PATHCCH_ALLOW_LONG_PATHS
0x00000001
Permita la construcción de rutas \\?\ más largas que MAX_PATH. Tenga en cuenta que cchPathOut debe ser mayor que MAX_PATH. Si no es así, se omite esta marca.
PATHCCH_FORCE_ENABLE_LONG_NAME_PROCESS
0x00000002
Obliga a la API a tratar al autor de la llamada como la ruta de acceso larga habilitada, independientemente del estado habilitado para el nombre largo del proceso. Esta opción solo se puede usar cuando se especifica PATHCCH_ALLOW_LONG_PATHS y no se puede usar con PATHCCH_FORCE_DISABLE_LONG_NAME_PROCESS.

Nota Este valor está disponible a partir de Windows 10, versión 1703.

PATHCCH_FORCE_DISABLE_LONG_NAME_PROCESS
0x00000004
Obliga a la API a tratar al autor de la llamada como la ruta de acceso larga deshabilitada, independientemente del estado habilitado del nombre largo del proceso. Esta opción solo se puede usar cuando se especifica PATHCCH_ALLOW_LONG_PATHS y no se puede usar con PATHCCH_FORCE_ENABLE_LONG_NAME_PROCESS.

Nota Este valor está disponible a partir de Windows 10, versión 1703.

PATHCCH_DO_NOT_NORMALIZE_SEGMENTS
0x00000008
Deshabilita la normalización de segmentos de ruta de acceso que incluye quitar puntos y espacios finales. Esto permite el acceso a las rutas de acceso que bloqueará la normalización de la ruta de acceso win32.

Nota Este valor está disponible a partir de Windows 10, versión 1703.

PATHCCH_ENSURE_IS_EXTENDED_LENGTH_PATH
0x00000010
Convierte la ruta de acceso de entrada en el formulario de ruta de acceso del dispositivo DOS de longitud extendida (con el prefijo \\?\ ) si aún no está en ese formulario. Esto permite el acceso a las rutas de acceso que, de lo contrario, no se pueden direccionar debido a las reglas de normalización de Win32 (que pueden quitar los puntos y espacios finales) y las limitaciones de longitud de la ruta de acceso. Esta opción implica el mismo comportamiento de PATHCCH_DO_NOT_NORMALIZE_SEGMENTS.

Nota Este valor está disponible a partir de Windows 10, versión 1703.

Valor devuelto

Esta función devuelve un código HRESULT , incluido lo siguiente.

Código devuelto Descripción
S_OK
La función se ha realizado correctamente. Tenga en cuenta que esto también incluye el caso de una extensión vacía, como un punto sin caracteres después. En ese caso, la cadena original se devuelve sin modificar.
E_INVALIDARG
Este valor puede deberse a que varias cosas, como el parámetro pszPathOut se establece en NULL o el valor cchPathOut se establece en 0 o un valor mayor que PATHCCH_MAX_CCH .
E_OUTOFMEMORY
La función no pudo asignar suficiente memoria para realizar la operación.
PATHCCH_E_FILENAME_TOO_LONG
El tamaño de una o ambas rutas de acceso originales superó PATHCCH_MAX_CCH .

Comentarios

Si pszPathIn y pszMore son NULL o apuntan a cadenas vacías, se copia una sola barra diagonal inversa en el búfer al que apunta pszPathOut.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8 [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2012 [aplicaciones de escritorio | Aplicaciones para UWP]
Plataforma de destino Windows
Encabezado pathcch.h
Library Pathcch.lib

Consulte también

PathCchCanonicalize

PathCchCanonicalizeEx

PathCchCombine