msi.h) (MsiExtractPatchXMLDataA 函数

MsiExtractPatchXMLData 函数从可用于确定修补程序是否适用于目标系统的修补程序中提取信息。 该函数返回一个 XML 字符串,该字符串可以提供给 MsiDeterminePatchSequenceMsiDetermineApplicablePatches ,而不是完整的修补程序文件。 返回的信息可用于确定修补程序是否适用。

语法

UINT MsiExtractPatchXMLDataA(
  [in]                LPCSTR  szPatchPath,
  [in]                DWORD   dwReserved,
  [out, optional]     LPSTR   szXMLData,
  [in, out, optional] LPDWORD pcchXMLData
);

参数

[in] szPatchPath

要查询的修补程序的完整路径。 作为以 null 结尾的字符串传入。 此参数不能为 NULL

[in] dwReserved

一个保留参数,该参数必须为 0 (零) 。

[out, optional] szXMLData

指向缓冲区的指针,用于保存包含提取的修补程序信息的 XML 字符串。 此缓冲区应足够大,足以包含接收的信息。 如果缓冲区太小,该函数将返回ERROR_MORE_DATA并将 *pcchXMLData 设置为值中的 TCHAR 数,不包括终止 NULL 字符。

如果 szXMLData 设置为 NULLpcchXMLData 设置为有效指针,则该函数将返回ERROR_SUCCESS并将 *pcchXMLData 设置为值中的 TCHAR 数,不包括终止 NULL 字符。 然后,可以再次调用 该函数来检索值,其中 szXMLData 缓冲区足够大,可以包含 *pcchXMLData + 1 个字符。

[in, out, optional] pcchXMLData

指向变量的指针,该变量指定 szXMLData 缓冲区中的 TCHAR 数。 当函数返回时,无论函数是否将值复制到指定的缓冲区中,此参数都设置为请求的值的大小。 大小作为请求值中的 TCHAR 数返回,不包括终止 null 字符。

如果此参数设置为 NULL,则该函数将返回ERROR_INVALID_PARAMETER。

返回值

MsiExtractPatchXMLData 函数可以返回以下值。

返回代码 说明
ERROR_FUNCTION_FAILED
此函数失败的方式未由此表中的任何返回值标识。
ERROR_INVALID_PARAMETER
向该函数传递了无效参数。
ERROR_MORE_DATA
该值不适合提供的缓冲区。
ERROR_PATCH_OPEN_FAILED
无法打开修补程序文件。
ERROR_SUCCESS
函数成功。
ERROR_PATCH_PACKAGE_INVALID
无法打开修补程序文件。
ERROR_CALL_NOT_IMPLEMENTED
如果未安装 MSXML 3.0,则可能会返回此错误。

注解

Installer 对象的 ExtractPatchXMLData 方法使用 MsiExtractPatchXMLData 函数。

注意

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

要求

要求
最低受支持的客户端 Windows Server 2008 或 Windows Vista 上的 Windows Installer 4.0 或 Windows Installer 4.5。 Windows Server 2003 或 Windows XP 上的 Windows Installer 3.0 或更高版本。 若要了解 Windows Installer 版本所需的最低 Windows Service Pack,请参阅 Windows Installer 运行时要求。
目标平台 Windows
标头 msi.h
Library Msi.lib
DLL Msi.dll

另请参阅

MsiDetermineApplicablePatches

MsiDeterminePatchSequence

在 Windows Installer 2.0 及更低版本中不受支持