Compartir a través de


Función LZOpenFileA (lzexpand.h)

Crea, abre, vuelve a abrir o elimina el archivo especificado.

Sintaxis

INT LZOpenFileA(
  [in]  LPSTR      lpFileName,
  [out] LPOFSTRUCT lpReOpenBuf,
  [in]  WORD       wStyle
);

Parámetros

[in] lpFileName

Nombre del archivo.

[out] lpReOpenBuf

Puntero a la estructura OFSTRUCT que va a recibir información sobre el archivo cuando se abre el archivo por primera vez. La estructura se puede usar en llamadas posteriores a la función LZOpenFile para ver el archivo abierto.

El miembro szPathName de esta estructura contiene caracteres del juego de caracteres del fabricante de equipos originales (OEM).

[in] wStyle

Acción que se va a realizar. Este parámetro puede ser uno o más de los siguientes valores.

Valor Significado
OF_CANCEL
0x0800
ignorado. Solo se proporciona para la compatibilidad con Windows de 16 bits. Use el estilo OF_PROMPT para mostrar un cuadro de diálogo que contiene un botón Cancelar .
OF_CREATE
0x1000
Dirige LZOpenFile para crear un nuevo archivo. Si el archivo ya existe, se trunca a una longitud cero.
OF_DELETE
0x0200
Elimina el archivo.
OF_EXIST
0x4000
Abre el archivo y, a continuación, lo cierra para probar la existencia de un archivo.
OF_PARSE
0x0100
Rellena la estructura OFSTRUCT , pero no realiza ninguna otra acción.
OF_PROMPT
0x2000
Muestra un cuadro de diálogo si el archivo solicitado no existe. El cuadro de diálogo informa al usuario de que el sistema no encuentra el archivo y contiene los botones Reintentar y Cancelar . Al hacer clic en el botón Cancelar se dirige LZOpenFile para devolver un mensaje de error no encontrado.
OF_READ
0x0000
Abre el archivo únicamente para leerlo.
OF_READWRITE
0x0002
Abre el archivo para leer y escribir.
OF_REOPEN
0x8000
Abre el archivo con información en el búfer de reapertura.
OF_SHARE_DENY_NONE
0x0040
Abre el archivo sin denegar a otros procesos acceso de lectura o escritura al archivo. LZOpenFile produce un error si cualquier otro proceso ha abierto el archivo en modo de compatibilidad.
OF_SHARE_DENY_READ
0x0030
Abre el archivo y deniega a otros procesos acceso de lectura al archivo. LZOpenFile produce un error si el archivo se ha abierto en modo de compatibilidad o se ha abierto para el acceso de lectura por cualquier otro proceso.
OF_SHARE_DENY_WRITE
0x0020
Abre el archivo y deniega a otros procesos acceso de escritura al archivo. LZOpenFile produce un error si el archivo se ha abierto en modo de compatibilidad o se ha abierto para el acceso de escritura por cualquier otro proceso.
OF_SHARE_EXCLUSIVE
0x0010
Abre el archivo en modo exclusivo, deniega a otros procesos acceso de lectura y escritura al archivo. LZOpenFile produce un error si el archivo se ha abierto en cualquier otro modo para el acceso de lectura o escritura, incluso mediante el proceso actual.
OF_WRITE
0x0001
Abre el archivo únicamente para escribir en él.

Valor devuelto

Si la función se ejecuta correctamente y el valor especificado por el parámetro wStyle no es OF_READ, el valor devuelto es un identificador que identifica el archivo. Si el archivo se comprime y se abre con wStyle establecido en OF_READ, el valor devuelto es un identificador de archivo especial.

Si se produce un error en la función, el valor devuelto es un código LZERROR_* . Estos códigos tienen valores inferiores a cero. No hay información de error extendida para esta función; no llame a GetLastError.

NotaLZOpenFile no llama a SetLastError ni SetLastErrorEx; por lo tanto, su error no afecta al código de último error de un subproceso.
 
A continuación se muestra la lista de códigos de error que LZOpenFile puede devolver tras un error.
Código o valor devuelto Descripción
LZERROR_BADINHANDLE
-1
El identificador que identifica el archivo de origen no es válido. No se puede leer el archivo.
LZERROR_GLOBALLOC
-5
No se puede asignar el número máximo de archivos comprimidos abiertos o no se puede asignar memoria local.

Comentarios

Si el parámetro wStyle es la marca de OF_READ (o OF_READ y cualquiera de las marcas OF_SHARE_* ) y el archivo está comprimido, LZOpenFile llama a la función LZInit , que realiza la inicialización necesaria para las operaciones de descompresión.

El identificador que devuelve esta función solo es compatible con las funciones de Lz32.dll; no debe usarse para otras operaciones de archivo.

Si LZOpenFile no puede abrir el archivo especificado por lpFileName, en algunas versiones de Windows intenta abrir un archivo con casi el mismo nombre de archivo, excepto que el último carácter se reemplaza por un carácter de subrayado (""). Por lo tanto, si se produce un error en un intento de abrir "MyProgram.exe", LZOpenFile intenta abrir "MyProgram.ex". Los paquetes de instalación suelen sustituir el carácter de subrayado de la última letra de una extensión de nombre de archivo para indicar que el archivo está comprimido. Por ejemplo, "MyProgram.exe" comprimido podría denominarse "MyProgram.ex_". Para determinar el nombre del archivo abierto (si existe), examine el miembro szPathName de la estructura OFSTRUCT en el parámetro lpReOpenBuf .

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.

Nota

El encabezado lzexpand.h define LZOpenFile 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 neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

Requisito Value
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 lzexpand.h (incluya Windows.h)
Library Lz32.lib
Archivo DLL Lz32.dll

Consulte también

Compresión y descompresión de archivos

Funciones de administración de archivos

LZClose

LZInit

LZRead

OFSTRUCT