Función OpenFile (winbase.h)

Crea, abre, vuelve a abrir o elimina un archivo.

Nota Esta función tiene funcionalidades limitadas y no se recomienda. Para el nuevo desarrollo de aplicaciones, use la función CreateFile .
 

Sintaxis

HFILE OpenFile(
  [in]  LPCSTR     lpFileName,
  [out] LPOFSTRUCT lpReOpenBuff,
  [in]  UINT       uStyle
);

Parámetros

[in] lpFileName

Nombre del archivo.

La cadena debe constar de caracteres del juego de caracteres de Windows de 8 bits. La función OpenFile no admite nombres de archivo Unicode ni canalizaciones con nombre de apertura.

[out] lpReOpenBuff

Puntero a la estructura OFSTRUCT que recibe información sobre un archivo cuando se abre por primera vez.

La estructura se puede usar en llamadas posteriores a la función OpenFile para ver un archivo abierto.

La estructura OFSTRUCT contiene un miembro de cadena de ruta de acceso con una longitud limitada a OFS_MAXPATHNAME caracteres, que es de 128 caracteres. Debido a esto, no puede usar la función OpenFile para abrir un archivo con una longitud de ruta de acceso superior a 128 caracteres. La función CreateFile no tiene esta limitación de longitud de ruta de acceso.

[in] uStyle

Acción que se va a realizar.

Este parámetro puede ser uno o más de los siguientes valores.

Value Significado
OF_CANCEL
0x00000800
ignorado.

Para generar un cuadro de diálogo que contenga un botón Cancelar , use OF_PROMPT.

OF_CREATE
0x00001000
Crea un nuevo archivo.

Si el archivo existe, se trunca a cero (0) longitud.

OF_DELETE
0x00000200
Elimina un archivo.
OF_EXIST
0x00004000
Abre un archivo y, a continuación, lo cierra.

Úselo para probar la existencia de un archivo.

OF_PARSE
0x00000100
Rellena la estructura OFSTRUCT , pero no hace nada más.
OF_PROMPT
0x00002000
Muestra un cuadro de diálogo si no existe un archivo solicitado.

Un cuadro de diálogo informa a un usuario de que el sistema no encuentra un archivo y contiene los botones Reintentar y Cancelar . El botón Cancelar dirige OpenFile para devolver un mensaje de error de archivo no encontrado.

OF_READ
0x00000000
Abre un archivo únicamente para leerlo.
OF_READWRITE
0x00000002
abre un archivo con permisos de lectura y escritura.
OF_REOPEN
0x00008000
Abre un archivo mediante la información del búfer de reapertura.
OF_SHARE_COMPAT
0x00000000
En el caso de los sistemas de archivos basados en MS-DOS, abre un archivo con modo de compatibilidad, permite que cualquier proceso de un equipo especificado abra el archivo en cualquier número de veces.

Se produce un error en otros esfuerzos para abrir un archivo con otros modos de uso compartido. Esta marca se asigna a las marcas FILE_SHARE_READ|FILE_SHARE_WRITE de la función CreateFile .

OF_SHARE_DENY_NONE
0x00000040
Abre un archivo sin denegar el acceso de lectura o escritura a otros procesos.

En los sistemas de archivos basados en MS-DOS, si cualquier otro proceso ha abierto el archivo en modo de compatibilidad, se produce un error en la función.

Esta marca se asigna a las marcas FILE_SHARE_READ|FILE_SHARE_WRITE de la función CreateFile .

OF_SHARE_DENY_READ
0x00000030
Abre un archivo y deniega el acceso de lectura a otros procesos.

En los sistemas de archivos basados en MS-DOS, si el archivo se ha abierto en modo de compatibilidad o para el acceso de lectura por cualquier otro proceso, se produce un error en la función.

Esta marca se asigna a la marca FILE_SHARE_WRITE de la función CreateFile .

OF_SHARE_DENY_WRITE
0x00000020
Abre un archivo y deniega el acceso de escritura a otros procesos.

En los sistemas de archivos basados en MS-DOS, si se ha abierto un archivo en modo de compatibilidad o para el acceso de escritura por cualquier otro proceso, se produce un error en la función.

Esta marca se asigna a la marca FILE_SHARE_READ de la función CreateFile .

OF_SHARE_EXCLUSIVE
0x00000010
Abre un archivo con modo exclusivo y deniega el acceso de lectura y escritura a otros procesos. Si se ha abierto un archivo en cualquier otro modo para el acceso de lectura y escritura, incluso en el proceso actual, se produce un error en la función.
OF_VERIFY
Comprueba que la fecha y hora de un archivo son las mismas que cuando se abrió anteriormente.

Esto es útil como una comprobación adicional de los archivos de solo lectura.

OF_WRITE
0x00000001
abre un archivo para acceso de escritura únicamente.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto especifica un identificador de archivo que se va a usar al realizar la E/S de archivo. Para cerrar el archivo, llame a la función CloseHandle mediante este identificador.

Si se produce un error en la función, el valor devuelto es HFILE_ERROR. Para obtener información de error extendida, llame a GetLastError.

Comentarios

Si el parámetro lpFileName especifica solo un nombre de archivo y una extensión, esta función busca un archivo coincidente en los directorios siguientes y el orden mostrado:

  1. Directorio donde se carga una aplicación.
  2. El directorio actual.
  3. Directorio del sistema de Windows.

    Use la función GetSystemDirectory para obtener la ruta de acceso de este directorio.

  4. Directorio del sistema windows de 16 bits.

    No hay una función que recupere la ruta de acceso de este directorio, pero se busca.

  5. El directorio de Windows.

    Use la función GetWindowsDirectory para obtener la ruta de acceso de este directorio.

  6. Los directorios que aparecen en la variable de entorno PATH.
El parámetro lpFileName no puede contener caracteres comodín.

La función OpenFile no admite la marca OF_SEARCH que admite la función OpenFile de 16 bits de Windows. La marca OF_SEARCH dirige al sistema para buscar un archivo coincidente incluso cuando un nombre de archivo incluye una ruta de acceso completa. Use la función SearchPath para buscar un archivo.

Se produce una infracción de uso compartido si se intenta abrir un archivo o directorio para su eliminación en un equipo remoto cuando el valor del parámetro uStyle es la marca de acceso OF_DELETE OR'ed con cualquier otra marca de acceso y el archivo o directorio remoto no se ha abierto con FILE_SHARE_DELETE acceso compartido. Para evitar la infracción de uso compartido en este escenario, abra el archivo o directorio remoto con solo acceso OF_DELETE o llame a DeleteFile sin abrir primero el archivo o directorio para su eliminación.

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)
 

CsvFs realizará la E/S redirigida para los archivos comprimidos.

Requisitos

   
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winbase.h (incluya Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

CreateFile

Funciones de administración de archivos

GetSystemDirectory

GetWindowsDirectory

OFSTRUCT

SearchPath