Compartir a través de


Función MsiEnumPatchesExA (msi.h)

La función MsiEnumPatchesEx enumera todas las revisiones en un contexto específico o en todos los contextos. Las revisiones que ya se aplican a los productos se enumeran. También se enumeran las revisiones registradas pero que aún no se han aplicado a los productos.

Sintaxis

UINT MsiEnumPatchesExA(
  [in, optional]      LPCSTR            szProductCode,
  [in, optional]      LPCSTR            szUserSid,
  [in]                DWORD             dwContext,
  [in]                DWORD             dwFilter,
  [in]                DWORD             dwIndex,
  [out, optional]     CHAR [39]         szPatchCode,
  [out, optional]     CHAR [39]         szTargetProductCode,
  [out, optional]     MSIINSTALLCONTEXT *pdwTargetProductContext,
  [out, optional]     LPSTR             szTargetUserSid,
  [in, out, optional] LPDWORD           pcchTargetUserSid
);

Parámetros

[in, optional] szProductCode

Cadena terminada en null que especifica el ProductCode GUID del producto cuyas revisiones se enumeran. Si noNULL, la enumeración de revisiones está restringida a instancias de este producto en el usuario y el contexto especificados por szUserSid y dwContext. Si null, se enumeran las revisiones de todos los productos en el contexto especificado.

[in, optional] szUserSid

Cadena terminada en NULL que especifica un identificador de seguridad (SID) que restringe el contexto de la enumeración. La cadena de SID especial "S-1-1-0" (Todos) especifica la enumeración en todos los usuarios del sistema. Un valor de SID distinto de "S-1-1-0" se considera un SID de usuario y restringe la enumeración a ese usuario. Al enumerar para un usuario distinto del usuario actual, no se enumeran las revisiones que se aplicaron en un contexto no administrado por usuario mediante una versión inferior a la versión 3.0 de Windows Installer. Este parámetro se puede establecer en NULL para especificar el usuario actual.

Tipo de SID Significado
NULL
Especifica el usuario que ha iniciado sesión actualmente.
siD de usuario de
Enumeración para un usuario específico del sistema. Un ejemplo de SID de usuario es "S-1-3-64-2415071341-1358098788-3127455600-2561".
s-1-1-0
Enumeración en todos los usuarios del sistema.
 
Nota La cadena de SID especial "S-1-5-18" (Sistema) no se puede usar para enumerar productos o revisiones instalados según la máquina. Si se establece el valor de SID en "S-1-5-18" se devuelve ERROR_INVALID_PARAMETER. Cuando dwContext solo se establece en MSIINSTALLCONTEXT_MACHINE, szUserSid debe ser NULL.
 

[in] dwContext

Restringe la enumeración a una o una combinación de contextos. Este parámetro puede ser cualquiera o una combinación de los valores siguientes.

Contexto Significado
MSIINSTALLCONTEXT_USERMANAGED
Enumeración que se extiende a todas las instalaciones administradas por usuario para los usuarios que szUserSid especifica. Un SID no válido no devuelve ningún elemento.
MSIINSTALLCONTEXT_USERUNMANAGED
En este contexto, solo se enumeran las revisiones instaladas con Windows Installer versión 3.0 para los usuarios que no son el usuario actual. Para el usuario actual, la función enumera todas las revisiones instaladas y nuevas. Un SID no válido para szUserSid no devuelve ningún elemento.
MSIINSTALLCONTEXT_MACHINE
Enumeración que se extiende a todas las instalaciones por máquina. Cuando dwContext solo se establece en MSIINSTALLCONTEXT_MACHINE, el parámetro szUserSid debe ser NULL.

[in] dwFilter

Filtro de enumeración. Este parámetro puede ser una o una combinación de los parámetros siguientes.

Filtro Significado
MSIPATCHSTATE_APPLIED
1
La enumeración incluye revisiones que se han aplicado. La enumeración no incluye revisiones reemplazadas ni obsoletas.
MSIPATCHSTATE_SUPERSEDED
2
La enumeración incluye revisiones marcadas como reemplazadas.
MSIPATCHSTATE_OBSOLETED
4
La enumeración incluye revisiones marcadas como obsoletas.
MSIPATCHSTATE_REGISTERED
8
La enumeración incluye revisiones registradas pero que aún no se han aplicado. La función MsiSourceListAddSourceEx puede registrar nuevas revisiones.
Nota Revisiones registradas para usuarios distintos del usuario actual y aplicados en el contexto no administrado por usuario no se enumeran.
 
MSIPATCHSTATE_ALL
15
La enumeración incluye todas las revisiones aplicadas, obsoletas, reemplazadas y registradas.

[in] dwIndex

Índice de la revisión que se va a recuperar. Este parámetro debe ser cero para la primera llamada a la función MsiEnumPatchesEx y, a continuación, se incrementa para las llamadas posteriores. El parámetro dwIndex debe incrementarse solo si la llamada anterior devolvió ERROR_SUCCESS.

[out, optional] szPatchCode

Búfer de salida que contiene el GUID de la revisión que se va a enumerar. El búfer debe ser lo suficientemente grande como para contener el GUID. Este parámetro puede ser null.

[out, optional] szTargetProductCode

Búfer de salida que contiene el ProductCode GUID del producto que recibe esta revisión. El búfer debe ser lo suficientemente grande como para contener el GUID. Este parámetro puede ser null.

[out, optional] pdwTargetProductContext

Devuelve el contexto de la revisión que se está enumerando. El valor de salida puede ser MSIINSTALLCONTEXT_USERMANAGED, MSIINSTALLCONTEXT_USERUNMANAGEDo MSIINSTALLCONTEXT_MACHINE. Este parámetro puede ser null.

[out, optional] szTargetUserSid

Búfer de salida que recibe el SID de cadena de la cuenta en la que existe esta instancia de revisión. Este búfer devuelve una cadena vacía para un contexto por máquina.

Este búfer debe ser lo suficientemente grande como para contener el SID. Si el búfer es demasiado pequeño, la función devuelve ERROR_MORE_DATA y establece *pcchTargetUserSid al número de TCHAR en el valor, sin incluir el carácter NULL de terminación.

Si el szTargetUserSid de se establece en NULL y pcchTargetUserSid se establece en un puntero válido, la función devuelve ERROR_SUCCESS y establece *pcchTargetUserSid al número de TCHAR en el valor, sin incluir el carácter de NULL de terminación. A continuación, se puede llamar a la función de nuevo para recuperar el valor, con szTargetUserSid búfer lo suficientemente grande como para contener *pcchTargetUserSid + 1 caracteres.

Si szTargetUserSid y pcchTargetUserSid se establecen en NULL, la función devuelve ERROR_SUCCESS si el valor existe, sin recuperar el valor.

[in, out, optional] pcchTargetUserSid

Puntero a una variable que especifica el número de TCHAR en el búfer de szTargetUserSid. Cuando se devuelve la función, este parámetro se establece en el tamaño del valor solicitado si la función copia o no el valor en el búfer especificado. El tamaño se devuelve como el número de TCHAR en el valor solicitado, sin incluir el carácter nulo de terminación.

Este parámetro se puede establecer en null solo si szTargetUserSid también es NULL; de lo contrario, la función devuelve ERROR_INVALID_PARAMETER.

Valor devuelto

La función MsiEnumPatchesEx devuelve uno de los valores siguientes.

Código devuelto Descripción
ERROR_ACCESS_DENIED
La función no puede intentar acceder a un recurso con privilegios insuficientes.
ERROR_BAD_CONFIGURATION
Los datos de configuración están dañados.
ERROR_INVALID_PARAMETER
Se pasa un parámetro no válido a la función .
ERROR_NO_MORE_ITEMS
No hay más revisiones para enumerar.
ERROR_SUCCESS
La revisión se enumera correctamente.
ERROR_UNKNOWN_PRODUCT
El producto que szProduct especifica no está instalado en el equipo en los contextos especificados.
ERROR_MORE_DATA
Esto se devuelve cuando pcchTargetUserSid apunta a un tamaño de búfer inferior al necesario para copiar el SID. En este caso, el usuario puede corregir el búfer y llamar a MsiEnumPatchesEx de nuevo para el mismo valor de índice.

Observaciones

Los no administradores solo pueden enumerar las revisiones dentro de su visibilidad. Los administradores pueden enumerar revisiones para otros contextos de usuario.

Nota

El encabezado msi.h define MsiEnumPatchesEx 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 Installer 5.0 en Windows Server 2012, Windows 8, Windows Server 2008 R2 o Windows 7. Windows Installer 4.0 o Windows Installer 4.5 en Windows Server 2008 o Windows Vista. Consulte Windows Installer Run-Time Requirements (Requisitos de Windows Installer) para obtener información sobre el Service Pack mínimo de Windows que requiere una versión de Windows Installer.
de la plataforma de destino de Windows
encabezado de msi.h
biblioteca de Msi.lib
DLL de Msi.dll

Consulte también

contexto de instalación de

MsiSourceListAddSourceEx

no compatibles con Windows Installer 2.0 y versiones anteriores

productCode