Compartir a través de


Función GetLongPathNameTransactedA (winbase.h)

[Microsoft recomienda encarecidamente que los desarrolladores usen medios alternativos para lograr las necesidades de la aplicación. Muchos escenarios para los que se desarrolló TxF se pueden lograr a través de técnicas más sencillas y disponibles con mayor facilidad. Además, es posible que TxF no esté disponible en versiones futuras de Microsoft Windows. Para obtener más información y alternativas a TxF, consulte Alternativas al uso de NTFS transaccional.]

Convierte la ruta de acceso especificada en su formato largo como una operación de transacción.

Para realizar esta operación sin una transacción, use la función GetLongPathName.

Para obtener más información sobre los nombres de archivo y ruta de acceso, vea archivos de nomenclatura, rutas de acceso y espacios de nombres.

Sintaxis

DWORD GetLongPathNameTransactedA(
  [in]  LPCSTR lpszShortPath,
  [out] LPSTR  lpszLongPath,
  [in]  DWORD  cchBuffer,
  [in]  HANDLE hTransaction
);

Parámetros

[in] lpszShortPath

Ruta de acceso que se va a convertir.

De forma predeterminada, el nombre se limita a MAX_PATH caracteres. Para ampliar este límite a 32 767 caracteres anchos, anteponga "\\?\\ " a la ruta de acceso. Para obtener más información, vea Archivos de nomenclatura, rutas de acceso y espacios de nombres.

Propina

A partir de Windows 10, versión 1607, puedes optar por quitar la limitación del MAX_PATH sin tener que prepending "\\?\". Consulte la sección "Limitación máxima de longitud de ruta de acceso" de Archivos de nomenclatura, rutas de acceso y espacios de nombres para obtener más información.

La ruta de acceso debe residir en el equipo local; De lo contrario, se produce un error en la función y el último código de error se establece en ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE.

[out] lpszLongPath

Puntero al búfer para recibir la ruta de acceso larga.

Puede usar el mismo búfer que usó para el parámetro lpszShortPath.

[in] cchBuffer

El tamaño del búfer lpszLongPath apunta, en TCHARs.

[in] hTransaction

Identificador de la transacción. El función createTransaction devuelve este identificador.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es la longitud, en TCHARs, de la cadena copiada en lpszLongPath, sin incluir el carácter nulo de terminación.

Si el búfer lpBuffer es demasiado pequeño para contener la ruta de acceso, el valor devuelto es el tamaño, en TCHARs, del búfer necesario para contener la ruta de acceso y el carácter nulo de terminación.

Si se produce un error en la función por cualquier otro motivo, como si el archivo no existe, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Observaciones

En muchos sistemas de archivos, un nombre de archivo corto contiene un carácter tilde (~). Sin embargo, no todos los sistemas de archivos siguen esta convención. Por lo tanto, no suponga que puede omitir la llamada a GetLongPathNameTransacted si la ruta de acceso no contiene un carácter de tilde (~).

Si no se encuentra una ruta de acceso larga, esta función devuelve el nombre especificado en el parámetro lpszShortPath en el parámetro lpszLongPath.

Si el valor devuelto es mayor que el valor especificado en cchBuffer, puede llamar a la función de nuevo con un búfer lo suficientemente grande como para contener la ruta de acceso. Para obtener un ejemplo de este caso, vea la sección Código de ejemplo para GetFullPathName.

Nota Aunque el valor devuelto en este caso es una longitud que incluye el carácter nulo de terminación, el valor devuelto en success no incluye el carácter nulo de terminación en el recuento.
 
Es posible tener acceso a un archivo o directorio, pero no tener acceso a algunos de los directorios primarios de ese archivo o directorio. Como resultado, GetLongPathNameTransacted puede producir un error cuando no puede consultar el directorio primario de un componente de ruta de acceso para determinar el nombre largo de ese componente. Esta comprobación se puede omitir para los componentes de directorio que tienen extensiones de archivo de más de 3 caracteres o longitudes totales de más de 12 caracteres. Para obtener más información, vea la sección nombres cortos frente a nombres largos de archivos de nomenclatura, rutas de acceso y espacios de nombres.

En Windows 8 y Windows Server 2012, esta función es compatible con las siguientes tecnologías.

Tecnología Soportado
Protocolo bloque de mensajes del servidor (SMB) 3.0 No
Conmutación por error transparente (TFO) de SMB 3.0 No
SMB 3.0 con recursos compartidos de archivos de escalabilidad horizontal (SO) No
Sistema de archivos de volumen compartido de clúster (CsvFS) No
Sistema de archivos resistente (ReFS) No
 

SMB 3.0 no admite TxF.

Nota

El encabezado winbase.h define GetLongPathNameTransacted como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows Vista [solo aplicaciones de escritorio]
servidor mínimo admitido Windows Server 2008 [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
encabezado de winbase.h (incluya Windows.h)
biblioteca de Kernel32.lib
DLL de Kernel32.dll

Consulte también

funciones de administración de archivos

GetFullPathNameTransacted

GetShortPathName

archivos de nomenclatura, rutas de acceso y espacios de nombres

NTFS transaccional