Compartilhar via


Função SetupGetFileCompressionInfoA (setupapi.h)

[Essa função está disponível para uso nos sistemas operacionais indicados na seção Requisitos. Ele poderá ser alterado ou ficar indisponível em versões subsequentes. SetupAPI não deve mais ser usado para instalar aplicativos. Em vez disso, use o Windows Installer para desenvolver instaladores de aplicativos. SetupAPI continua a ser usado para instalar drivers de dispositivo.]

A função SetupGetFileCompressionInfo examina um arquivo físico para determinar se ele é compactado e obtém o caminho completo, o tamanho e o tamanho do arquivo de destino descompactado.

Observe que essa função está obsoleta e foi substituída por SetupGetFileCompressionInfoEx. Não use SetupGetFileCompressionInfo, em vez disso, sempre use SetupGetFileCompressionInfoEx.

Sintaxe

WINSETUPAPI DWORD SetupGetFileCompressionInfoA(
  [in]      PCSTR  SourceFileName,
  [in, out] PSTR   *ActualSourceFileName,
  [in, out] PDWORD SourceFileSize,
  [in, out] PDWORD TargetFileSize,
  [in, out] PUINT  CompressionType
);

Parâmetros

[in] SourceFileName

Nome do arquivo sobre quais informações são necessárias. Se o arquivo não for encontrado na mídia de origem exatamente como nomeado, o arquivo será pesquisado com até dois nomes alternativos de "forma compactada". Por exemplo, se o arquivo for F:\x86\cmd.exe e não for encontrado, F:\mpis\cmd.ex_ será pesquisado e, se isso não for encontrado, uma pesquisa será feita para F:\x86\cmd.ex$. Você deve usar uma cadeia de caracteres terminada em nulo.

[in, out] ActualSourceFileName

Ponteiro para uma variável que recebe o caminho completo do arquivo que ele foi capaz de localizar. O chamador pode liberar o ponteiro com uma chamada para LocalFree. O caminho será válido somente se a função retornar NO_ERROR. Observe que, se a versão do SetupAPI.dll for menor que 5.0.2195, o chamador precisará usar a função exportada MyFree da SetupAPI para liberar a memória alocada por essa função, em vez de usar LocalFree. Consulte a seção Comentários.

[in, out] SourceFileSize

Ponteiro para uma variável na qual essa função retorna o tamanho do arquivo em sua forma atual, que é o tamanho atual do arquivo nomeado por ActualSourceFileName. O tamanho é determinado examinando o arquivo de origem; ele não é recuperado de um arquivo INF. O tamanho do arquivo de origem só será válido se a função retornar NO_ERROR.

[in, out] TargetFileSize

Ponteiro para uma variável na qual essa função retorna o tamanho que o arquivo ocupará quando for descompactado ou copiado. Se o arquivo não for compactado, esse valor será o mesmo que SourceFileSize. O tamanho é determinado examinando o arquivo; ele não é recuperado de um arquivo INF. O tamanho do arquivo de destino só será válido se a função retornar NO_ERROR.

[in, out] CompressionType

Ponteiro para uma variável na qual essa função retorna um valor que indica o tipo de compactação usado em ActualSourceFileName. O tipo de compactação só será válido se a função retornar NO_ERROR. O valor pode ser um dos sinalizadores a seguir.

FILE_COMPRESSION_NONE

O arquivo de origem não é compactado com um algoritmo de compactação reconhecido.

FILE_COMPRESSION_WINLZA

O arquivo de origem é compactado com compactação LZ.

FILE_COMPRESSION_MSZIP

O arquivo de origem é compactado com compactação MSZIP.

Retornar valor

A função retorna um código de erro do sistema que indica o resultado da pesquisa de arquivo. O código de erro pode ser um dos valores a seguir.

Para obter informações de erro estendidas, chame GetLastError.

Comentários

Não use SetupGetFileCompressionInfo, em vez disso, sempre use SetupGetFileCompressionInfoEx.

Como SetupGetFileCompressionInfo determina a compactação referenciando o arquivo físico, seu aplicativo de instalação deve garantir que o arquivo esteja presente antes de chamar SetupGetFileCompressionInfo.

Observe que, se a versão do SetupAPI.dll for menor que 5.0.2195, o chamador precisará usar a função exportada MyFree da SetupAPI para liberar a memória alocada por essa função, em vez de usar LocalFree. Se a chamada para LocalFree causar uma Violação de Acesso, você deverá resolver o problema usando MyFree.

Veja a seguir um exemplo de como obter a função MyFree do SetupAPI.dll:

typedef VOID (WINAPI* MYFREEFUNC)(LPVOID lpBuff);
   MYFREEFUNC MyFree;

   HMODULE hDll=NULL;
   hDll = GetModuleHandle("SETUPAPI.DLL");
   MyFree = (MYFREEFUNC)GetProcAddress(hDll, "MyFree");
   ...
   other code here to prepare file queue
   ...
   PTSTR lpActualSourceFileName;
   SetupGetFileCompressionInfo(...,&lpActualSourceFileName,...,...,...);
   ...
   MyFree(lpActualSourceFileName); 

Observação

O cabeçalho setupapi.h define SetupGetFileCompressionInfo 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 setupapi.h
Biblioteca Setupapi.lib
DLL Setupapi.dll

Confira também

Funções

Visão geral

SetupDecompressOrCopyFile