Compartilhar via


Função LZOpenFileA (lzexpand.h)

Cria, abre, reabre ou exclui o arquivo especificado.

Sintaxe

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

Parâmetros

[in] lpFileName

O nome do arquivo.

[out] lpReOpenBuf

Um ponteiro para a estrutura OFSTRUCT que deve receber informações sobre o arquivo quando o arquivo for aberto pela primeira vez. A estrutura pode ser usada em chamadas subsequentes para a função LZOpenFile para ver o arquivo aberto.

O membro szPathName dessa estrutura contém caracteres do conjunto de caracteres OEM (fabricante do equipamento original).

[in] wStyle

A ação a ser tomada. Esse parâmetro pode usar um dos valores a seguir.

Valor Significado
OF_CANCEL
0x0800
Ignorado. Fornecido apenas para compatibilidade com o Windows de 16 bits. Use o estilo OF_PROMPT para exibir uma caixa de diálogo que contém um botão Cancelar .
OF_CREATE
0x1000
Direciona LZOpenFile para criar um novo arquivo. Se o arquivo já existir, ele será truncado para tamanho zero.
OF_DELETE
0x0200
Exclui o arquivo.
OF_EXIST
0x4000
Abre o arquivo e o fecha para testar a existência de um arquivo.
OF_PARSE
0x0100
Preenche a estrutura OFSTRUCT , mas não executa nenhuma outra ação.
OF_PROMPT
0x2000
Exibe uma caixa de diálogo se o arquivo solicitado não existir. A caixa de diálogo informa ao usuário que o sistema não pode encontrar o arquivo e que ele contém os botões Repetir e Cancelar . Clicar no botão Cancelar direciona LZOpenFile para retornar uma mensagem de erro de arquivo não encontrado.
OF_READ
0x0000
Abre o arquivo para somente leitura.
OF_READWRITE
0x0002
Abre o arquivo para leitura e gravação.
OF_REOPEN
0x8000
Abre o arquivo usando informações no buffer de reabertura.
OF_SHARE_DENY_NONE
0x0040
Abre o arquivo sem negar a outros processos acesso de leitura ou gravação ao arquivo. O LZOpenFile falhará se o arquivo tiver sido aberto no modo de compatibilidade por qualquer outro processo.
OF_SHARE_DENY_READ
0x0030
Abre o arquivo e nega a outros processos acesso de leitura ao arquivo. O LZOpenFile falhará se o arquivo tiver sido aberto no modo de compatibilidade ou tiver sido aberto para acesso de leitura por qualquer outro processo.
OF_SHARE_DENY_WRITE
0x0020
Abre o arquivo e nega a outros processos o acesso de gravação ao arquivo. O LZOpenFile falhará se o arquivo tiver sido aberto no modo de compatibilidade ou tiver sido aberto para acesso de gravação por qualquer outro processo.
OF_SHARE_EXCLUSIVE
0x0010
Abre o arquivo no modo exclusivo, negando a outros processos acesso de leitura e gravação ao arquivo. O LZOpenFile falhará se o arquivo tiver sido aberto em qualquer outro modo para acesso de leitura ou gravação, mesmo pelo processo atual.
OF_WRITE
0x0001
Abre o arquivo somente gravação.

Retornar valor

Se a função for bem-sucedida e o valor especificado pelo parâmetro wStyle não for OF_READ, o valor retornado será um identificador que identifica o arquivo. Se o arquivo for compactado e aberto com wStyle definido como OF_READ, o valor retornado será um identificador de arquivo especial.

Se a função falhar, o valor retornado será um código LZERROR_* . Esses códigos têm valores inferiores a zero. Não há informações de erro estendidas para essa função; não chame GetLastError.

ObservaçãoLZOpenFile não chama SetLastError nem SetLastErrorEx; portanto, sua falha não afeta o código de último erro de um thread.
 
Veja a seguir a lista dos códigos de erro que LZOpenFile pode retornar após falha.
Valor/código retornado Descrição
LZERROR_BADINHANDLE
-1
O identificador que identifica o arquivo de origem não é válido. O arquivo não pode ser lido.
LZERROR_GLOBALLOC
-5
O número máximo de arquivos compactados abertos foi excedido ou a memória local não pode ser alocada.

Comentários

Se o parâmetro wStyle for o sinalizador OF_READ (ou OF_READ e qualquer um dos sinalizadores OF_SHARE_* ) e o arquivo for compactado, LZOpenFile chamará a função LZInit , que executa a inicialização necessária para as operações de descompactação.

O identificador que essa função retorna é compatível apenas com as funções em Lz32.dll; ele não deve ser usado para outras operações de arquivo.

Se LZOpenFile não conseguir abrir o arquivo especificado por lpFileName, em algumas versões do Windows ele tentará abrir um arquivo com quase o mesmo nome de arquivo, exceto que o último caractere será substituído por um sublinhado (""). Assim, se uma tentativa de abrir "MyProgram.exe" falhar, LZOpenFile tentará abrir "MyProgram.ex". Os pacotes de instalação geralmente substituem o sublinhado pela última letra de uma extensão de nome de arquivo para indicar que o arquivo está compactado. Por exemplo, "MyProgram.exe" compactado pode ser chamado de "MyProgram.ex_". Para determinar o nome do arquivo aberto (se houver), examine o membro szPathName da estrutura OFSTRUCT no parâmetro lpReOpenBuf .

No Windows 8 e Windows Server 2012, essa função é compatível com as tecnologias a seguir.

Tecnologia Com suporte
Protocolo SMB (SMB) 3.0 Sim
TFO (Failover transparente) do SMB 3.0 Sim
SMB 3.0 com compartilhamentos de arquivos de expansão (SO) Sim
Sistema de arquivos de Volume Compartilhado Clusterizado (CsvFS) Sim
ReFS (Sistema de Arquivos Resiliente) Sim
 

CsvFs fará E/S redirecionada em caso de arquivos compactados.

Observação

O cabeçalho lzexpand.h define LZOpenFile como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho lzexpand.h (inclua Windows.h)
Biblioteca Lz32.lib
DLL Lz32.dll

Confira também

Descompactação e compactação de arquivo

Funções de gerenciamento de arquivos

LZClose

LZInit

LZRead

OFSTRUCT