Función SetupGetFileCompressionInfoA (setupapi.h)

[Esta función está disponible para su uso en los sistemas operativos indicados en la sección Requisitos. En versiones posteriores podría modificarse o no estar disponible. SetupAPI ya no debe usarse para instalar aplicaciones. En su lugar, use Windows Installer para desarrollar instaladores de aplicaciones. SetupAPI sigue usándose para instalar controladores de dispositivos.

La función SetupGetFileCompressionInfo examina un archivo físico para determinar si está comprimido y obtiene su ruta de acceso, tamaño y tamaño completos del archivo de destino sin comprimir.

Tenga en cuenta que esta función está obsoleta y se ha reemplazado por SetupGetFileCompressionInfoEx. No use SetupGetFileCompressionInfo; en su lugar, use siempre SetupGetFileCompressionInfoEx.

Sintaxis

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

Nombre de archivo del archivo sobre qué información es necesaria. Si el archivo no se encuentra en el medio de origen exactamente como se denomina, se busca el archivo con un máximo de dos nombres alternativos de "formato comprimido". Por ejemplo, si el archivo está F:\x86\cmd.exe y no se encuentra, se busca F:\mpis\cmd.ex_ y, si no se encuentra, se realiza una búsqueda para F:\x86\cmd.ex$. Debe usar una cadena terminada en NULL.

[in, out] ActualSourceFileName

Puntero a una variable que recibe la ruta de acceso completa del archivo que ha podido localizar. El autor de la llamada puede liberar el puntero con una llamada a LocalFree. La ruta de acceso solo es válida si la función devuelve NO_ERROR. Tenga en cuenta que si la versión de SetupAPI.dll es inferior a la 5.0.2195, el autor de la llamada debe usar la función exportada MyFree desde SetupAPI para liberar la memoria asignada por esta función, en lugar de usar LocalFree. Consulte la sección Comentarios.

[in, out] SourceFileSize

Puntero a una variable en la que esta función devuelve el tamaño del archivo en su forma actual, que es el tamaño actual del archivo denominado Por ActualSourceFileName. El tamaño se determina examinando el archivo de origen; no se recupera de un archivo INF. El tamaño del archivo de origen solo es válido si la función devuelve NO_ERROR.

[in, out] TargetFileSize

Puntero a una variable en la que esta función devuelve el tamaño que ocupará el archivo cuando se descomprima o se copie. Si el archivo no está comprimido, este valor será el mismo que SourceFileSize. El tamaño se determina examinando el archivo; no se recupera de un archivo INF. El tamaño del archivo de destino solo es válido si la función devuelve NO_ERROR.

[in, out] CompressionType

Puntero a una variable en la que esta función devuelve un valor que indica el tipo de compresión utilizado en ActualSourceFileName. El tipo de compresión solo es válido si la función devuelve NO_ERROR. El valor puede ser una de las marcas siguientes.

FILE_COMPRESSION_NONE

El archivo de origen no se comprime con un algoritmo de compresión reconocido.

FILE_COMPRESSION_WINLZA

El archivo de origen se comprime con la compresión LZ.

FILE_COMPRESSION_MSZIP

El archivo de origen se comprime con compresión MSZIP.

Valor devuelto

La función devuelve un código de error del sistema que indica el resultado de la búsqueda de archivos. El código de error puede ser uno de los valores siguientes.

Para obtener información de error extendida, llame a GetLastError.

Comentarios

No use SetupGetFileCompressionInfo; en su lugar, use siempre SetupGetFileCompressionInfoEx.

Dado que SetupGetFileCompressionInfo determina la compresión haciendo referencia al archivo físico, la aplicación de instalación debe asegurarse de que el archivo está presente antes de llamar a SetupGetFileCompressionInfo.

Tenga en cuenta que si la versión de SetupAPI.dll es inferior a la 5.0.2195, el autor de la llamada debe usar la función exportada MyFree desde SetupAPI para liberar la memoria asignada por esta función, en lugar de usar LocalFree. Si la llamada a LocalFree provoca una infracción de acceso, debe resolver el problema mediante MyFree.

A continuación se muestra un ejemplo de cómo obtener la función MyFree de la 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); 

Nota

El encabezado setupapi.h define SetupGetFileCompressionInfo 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

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 setupapi.h
Library Setupapi.lib
Archivo DLL Setupapi.dll

Vea también

Funciones

Información general

SetupDecompressOrCopyFile