Función GetTempFileNameW (fileapi.h)

Crea un nombre para un archivo temporal. Si se genera un nombre de archivo único, se crea un archivo vacío y se libera el identificador para él; de lo contrario, solo se genera un nombre de archivo.

Sintaxis

UINT GetTempFileNameW(
  [in]  LPCWSTR lpPathName,
  [in]  LPCWSTR lpPrefixString,
  [in]  UINT    uUnique,
  [out] LPWSTR  lpTempFileName
);

Parámetros

[in] lpPathName

Ruta de acceso del directorio para el nombre de archivo. Las aplicaciones suelen especificar un punto (.) para el directorio actual o el resultado de la función GetTempPath . La cadena no puede tener más de MAX_PATH–14 caracteres o Se producirá un error en GetTempFileName . Si este parámetro es NULL, se produce un error en la función.

[in] lpPrefixString

Cadena de prefijo terminada en null. La función usa hasta los tres primeros caracteres de esta cadena como prefijo del nombre de archivo. Esta cadena debe constar de caracteres en el juego de caracteres definido por OEM.

[in] uUnique

Entero sin signo que se va a usar para crear el nombre de archivo temporal. Para obtener más información, vea la sección Comentarios.

Si uUnique es cero, la función intenta formar un nombre de archivo único mediante la hora actual del sistema. Si el archivo ya existe, el número aumenta en uno y la función prueba si este archivo ya existe. Esto continúa hasta que se encuentra un nombre de archivo único; la función crea un archivo por ese nombre y lo cierra. Tenga en cuenta que la función no intenta comprobar la unicidad del nombre de archivo cuando uUnique es distinto de cero.

[out] lpTempFileName

Puntero al búfer que recibe el nombre de archivo temporal. Este búfer debe ser MAX_PATH caracteres para dar cabida a la ruta de acceso más el carácter nulo de terminación.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto especifica el valor numérico único utilizado en el nombre de archivo temporal. Si el parámetro uUnique es distinto de cero, el valor devuelto especifica ese mismo número.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

A continuación se muestra un posible valor devuelto.

Valor devuelto Descripción
ERROR_BUFFER_OVERFLOW
La longitud de la cadena a la que apunta el parámetro lpPathName es superior a MAX_PATH-14 caracteres.

Comentarios

La función GetTempFileName crea un nombre de archivo temporal con el siguiente formato:

<path>\<pre><uuuu>. TMP

En la tabla siguiente se describe la sintaxis del nombre de archivo.

Componente Significado
<path> Ruta de acceso especificada por el parámetro lpPathName
<pre> Tres primeras letras de la cadena lpPrefixString
<uuuu> Valor hexadecimal de uUnique
 

Si uUnique es cero, GetTempFileName crea un archivo vacío y lo cierra. Si uUnique no es cero, debe crear el archivo usted mismo. Solo se crea un nombre de archivo, ya que GetTempFileName no puede garantizar que el nombre de archivo sea único.

Solo se usan los 16 bits inferiores del parámetro uUnique . Esto limita GetTempFileName a un máximo de 65 535 nombres de archivo únicos si los parámetros lpPathName y lpPrefixString siguen siendo los mismos.

Debido al algoritmo usado para generar nombres de archivo, GetTempFileName puede funcionar mal al crear un gran número de archivos con el mismo prefijo. En tales casos, se recomienda crear nombres de archivo únicos basados en GUID.

Los archivos temporales cuyos nombres han sido creados por esta función no se eliminan automáticamente. Para eliminar estos archivos, llame a DeleteFile.

Para evitar problemas resultantes al convertir una cadena ANSI, una aplicación debe llamar a la función CreateFile para crear un archivo temporal.

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

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

Ejemplos

Para obtener un ejemplo, vea Crear y usar un archivo temporal.

Nota:

El encabezado fileapi.h define GetTempFileName 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 Convenciones para prototipos de función.

Requisitos

   
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado fileapi.h (incluye Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

CreateFile

DeleteFile

Funciones de administración de archivos

GetTempPath

Asignar nombres a archivos, rutas de acceso y espacios de nombres