Función SetupGetFileCompressionInfoA (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 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, 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