SetupGetFileCompressionInfoExW 函数 (setupapi.h)

[此函数可用于“要求”部分所示的操作系统。 它可能在后续版本中变更或不可用。 不应再使用 SetupAPI 来安装应用程序。 请改用 Windows Installer 开发应用程序安装程序。 SetupAPI 继续用于安装设备驱动程序。]

SetupGetFileCompressionInfoEx 函数检查可能压缩的文件并获取压缩类型、文件的完整路径 (包括文件名) 、压缩大小和未压缩目标文件的大小。 函数的调用方传入要检查的文件的名称,并传递指向缓冲区和缓冲区大小位置的指针,以接收返回的文件名和路径。

若要确定返回的路径和文件名的缓冲区大小,可以调用 SetupGetFileCompressionInfoEx其中 ActualSourceFileNameBuffer 指定了 NullActualSourceFileNameLen 包含 0。 函数成功,并在返回时填充 RequiredBufferLen

语法

WINSETUPAPI BOOL SetupGetFileCompressionInfoExW(
  [in]      PCWSTR SourceFileName,
  [in, out] PWSTR  ActualSourceFileNameBuffer,
  [in, out] DWORD  ActualSourceFileNameBufferLen,
  [out]     PDWORD RequiredBufferLen,
  [out]     PDWORD SourceFileSize,
  [out]     PDWORD TargetFileSize,
  [out]     PUINT  CompressionType
);

参数

[in] SourceFileName

要检查的潜在压缩文件的文件名。 如果在源媒体上找不到文件,则安装程序将搜索最多两个备用名称。 例如;如果安装程序找不到 F:\x86\cmd.exe,则搜索 F:\mpis\cmd.ex_如果未找到该名称,则搜索 F:\x86\cmd.ex$。

[in, out] ActualSourceFileNameBuffer

指向缓冲区的指针,该缓冲区接收实际文件名和路径(如果此参数不为 NULL)。 仅当函数返回NO_ERROR时,这才有效。

[in, out] ActualSourceFileNameBufferLen

ActualSourceFileNameBuffer 指定的缓冲区的大小(以字符为单位)。 通常使用MAX_PATH的缓冲区大小。 如果 ActualSourceFileNameLen 太小,则函数将失败并ERROR_INSUFFICIENT_BUFFER。 如果 ActualSourceFileNameBuffer 为 NULL,则 ActualSourceFileNameLen 必须包含

[out] RequiredBufferLen

如果此参数不为NULL,则文件名和完整路径的大小(包括终止 NULL)。 如果 ActualSourceFileNameBufferNULLActualSourceFileNameLen 为零,则该函数成功,但填充 RequiredBufferLen。 仅当函数返回NO_ERROR或ERROR_INSUFFICIENT_BUFFER时,此参数才有效。

[out] SourceFileSize

指向变量的指针,在此变量中,此函数以当前形式返回文件的大小,即 由 ActualSourceFileNameBuffer 命名的文件的当前大小。 大小通过检查源文件确定;它不是从 INF 文件中检索的。 仅当函数返回NO_ERROR或ERROR_INSUFFICIENT_BUFFER时,源文件大小才有效。

[out] TargetFileSize

指向变量的指针,在该变量中,此函数返回文件在解压缩或复制时将占用的大小。 如果未压缩文件,此值将与 SourceFileSize 相同。 大小通过检查文件确定;它不是从 INF 文件中检索的。 仅当函数返回NO_ERROR或ERROR_INSUFFICIENT_BUFFER时,目标文件大小才有效。

[out] CompressionType

指向变量的指针,此函数在该变量中返回一个值,该值指示 ActualSourceFileName 上使用的压缩类型。 仅当函数返回NO_ERROR或ERROR_INSUFFICIENT_BUFFER时,压缩类型才有效。 此参数值可以是以下标志之一。

FILE_COMPRESSION_NONE

源文件未使用已识别的压缩算法进行压缩。

FILE_COMPRESSION_WINLZA

源文件使用 LZ 压缩进行压缩。

FILE_COMPRESSION_MSZIP

源文件使用 MSZIP 压缩进行压缩。

返回值

如果函数成功,则返回值为 TRUE (非零) 。

如果函数失败,则返回值为 FALSE (零) 。 该函数还可以返回以下 系统错误代码之一。

要获得更多的错误信息,请调用 GetLastError。

注解

由于 SetupGetFileCompressionInfoEx 通过检查物理文件来确定压缩,因此安装应用程序应确保在调用 SetupGetFileCompressionInfoEx 之前存在该文件。

注意

setupapi.h 标头将 SetupGetFileCompressionInfoEx 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

   
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 setupapi.h
Library Setupapi.lib
DLL Setupapi.dll

请参阅

函数

概述

SetupDecompressOrCopyFile