Compartir a través de


Función SetupGetFileCompressionInfoW (setupapi.h)

[Esta función está disponible para su uso en los sistemas operativos indicados en la sección Requisitos. Puede modificarse o no estar disponible en versiones posteriores. 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 dispositivo.]

La función SetupGetFileCompressionInfo examina un archivo físico para determinar si está comprimido y obtiene su ruta de acceso completa, su tamaño y el tamaño 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 SetupGetFileCompressionInfoW(
  [in]      PCWSTR SourceFileName,
  [in, out] PWSTR  *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, el archivo se busca con hasta dos nombres alternativos de "formato comprimido". Por ejemplo, si el archivo es 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 mediante el examen del 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 mediante el examen del 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 usado 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 siguientes valores.

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

Observaciones

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 Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows XP [solo aplicaciones de escritorio]
servidor mínimo admitido Windows Server 2003 [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
encabezado de setupapi.h
biblioteca de Setupapi.lib
DLL de Setupapi.dll

Consulte también

funciones de

información general

SetupDecompressOrCopyFile