Compartilhar via


Função MsiSourceListEnumSourcesA (msi.h)

A função MsiSourceListEnumSources enumera as fontes na lista de origem de um patch ou produto especificado.

Sintaxe

UINT MsiSourceListEnumSourcesA(
  [in]                LPCSTR            szProductCodeOrPatchCode,
  [in, optional]      LPCSTR            szUserSid,
  [in]                MSIINSTALLCONTEXT dwContext,
  [in]                DWORD             dwOptions,
  [in]                DWORD             dwIndex,
  [in, optional]      LPSTR             szSource,
  [in, out, optional] LPDWORD           pcchSource
);

Parâmetros

[in] szProductCodeOrPatchCode

O ProductCode ou o GUID de patch do produto ou patch. Use uma cadeia de caracteres terminada em nulo. Se a cadeia de caracteres tiver mais de 39 caracteres, a função falhará e retornará ERROR_INVALID_PARAMETER. Esse parâmetro não pode ser NULL.

[in, optional] szUserSid

Um SID de cadeia de caracteres que especifica a conta de usuário que contém o produto ou patch. O SID não é validado ou resolvido. Um SID incorreto pode retornar ERROR_UNKNOWN_PRODUCT ou ERROR_UNKNOWN_PATCH. Ao referenciar um contexto de computador, szUserSID deve ser NULL e dwContext deve ser MSIINSTALLCONTEXT_MACHINE.

Tipo de SID Significado
NULL
Um NULL indica o usuário atual que está conectado. Ao referenciar a conta de usuário atual, szUserSID pode ser NULL e dwContext pode ser MSIINSTALLCONTEXT_USERMANAGED ou MSIINSTALLCONTEXT_USERUNMANAGED.
sid do usuário
Uma enumeração para um usuário específico no sistema. Um exemplo de SID de usuário é "S-1-3-64-2415071341-1358098788-3127455600-2561".
s-1-1-0
A cadeia de caracteres sid especial s-1-1-0 (todos) especifica a enumeração entre todos os usuários no sistema.
 
Observação A cadeia de caracteres sid especial s-1-5-18 (sistema) não pode ser usada para enumerar produtos ou patches instalados como por computador. Definir o valor de SID como s-1-5-18 retorna ERROR_INVALID_PARAMETER.
 

[in] dwContext

O contexto da instância do produto ou patch. Esse parâmetro pode conter um dos valores a seguir.

Tipo de contexto Significado
MSIINSTALLCONTEXT_USERMANAGED
A instância de patch ou produto existe no contexto gerenciado por usuário.
MSIINSTALLCONTEXT_USERUNMANAGED
A instância de patch ou produto existe no contexto por usuário não gerenciado.
MSIINSTALLCONTEXT_MACHINE
A instância do produto ou patch existe no contexto por computador.

[in] dwOptions

O valor dwOptions determina a interpretação do valor szProductCodeOrPatchCode e o tipo de fontes a serem desmarcadas. Esse parâmetro deve ser uma combinação de uma das seguintes constantes MSISOURCETYPE_* e uma das seguintes constantes MSICODE_*.

Bandeira Significado
MSISOURCETYPE_NETWORK
A origem é um tipo de rede.
MSISOURCETYPE_URL
A origem é um tipo de URL.
MSICODE_PRODUCT
szProductCodeOrPatchCode é um código do produto.
MSICODE_PATCH
szProductCodeOrPatchCode é um código de patch.

[in] dwIndex

O índice da origem a ser recuperada. Esse parâmetro deve ser 0 (zero) para a primeira chamada para a função MsiSourceListEnumSources e incrementado para chamadas subsequentes até que a função retorne ERROR_NO_MORE_ITEMS. O índice deve ser incrementado somente se a chamada anterior retornar ERROR_SUCCESS.

[in, optional] szSource

Um ponteiro para um buffer que recebe o caminho para a origem que está sendo enumerada. Esse buffer deve ser grande o suficiente para conter o valor recebido. Se o buffer for muito pequeno, a função retornará ERROR_MORE_DATA e definirá *pcchSource ao número de TCHAR no valor, não incluindo o caractere NULL de terminação.

Se szSource estiver definido como NULL e pcchSource for definido como um ponteiro válido, a função retornará ERROR_SUCCESS e definirá *pcchSource para o número de TCHAR no valor, sem incluir o caractere NULL de terminação. Em seguida, a função pode ser chamada novamente para recuperar o valor, com szSource buffer grande o suficiente para conter *pcchSource + 1 caracteres.

Se szSource e pcchSource estiverem definidos como NULL, a função retornará ERROR_SUCCESS se o valor existir, sem recuperar o valor.

[in, out, optional] pcchSource

Um ponteiro para uma variável que especifica o número de TCHAR no buffer szSource do . Quando a função retorna, esse parâmetro é definido como o tamanho do valor solicitado se a função copia ou não o valor para o buffer especificado. O tamanho é retornado como o número de TCHAR no valor solicitado, não incluindo o caractere nulo de terminação.

Esse parâmetro pode ser definido como NULL somente se szSource também estiver NULL, caso contrário, a função retornará ERROR_INVALID_PARAMETER.

Valor de retorno

A função MsiSourceListEnumSources retorna os valores a seguir.

Valor Significado
ERROR_ACCESS_DENIED
O usuário não tem a capacidade de ler a lista de origem especificada. Isso não indica se um produto ou patch foi encontrado.
ERROR_BAD_CONFIGURATION
Os dados de configuração estão corrompidos.
ERROR_INVALID_PARAMETER
Um parâmetro inválido é passado para a função.
ERROR_MORE_DATA
O buffer fornecido não é suficiente para conter os dados solicitados.
ERROR_NO_MORE_ITEMS
Não há mais fontes na lista especificada para enumerar.
ERROR_SUCCESS
Uma origem é enumerada com êxito.
ERROR_UNKNOWN_PATCH
O patch especificado não está instalado no computador nos contextos especificados.
ERROR_UNKNOWN_PRODUCT
O produto especificado não está instalado no computador nos contextos especificados.
ERROR_FUNCTION_FAILED
Falha interna inesperada.

Observações

Ao fazer várias chamadas para MsiSourceListEnumSources para enumerar todas as fontes de uma única instância do produto, cada chamada deve ser feita do mesmo thread.

Um administrador pode enumerar instalações gerenciadas e não gerenciadas por usuário para si mesmo, instalações por computador e instalações gerenciadas por usuário para qualquer usuário. Um administrador não pode enumerar instalações não gerenciadas por usuário para outros usuários. Os não administradores só podem enumerar suas próprias instalações não gerenciadas e gerenciadas por usuário e instalações por computador.

Nota

O cabeçalho msi.h define MsiSourceListEnumSources como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows Installer 5.0 no Windows Server 2012, Windows 8, Windows Server 2008 R2 ou Windows 7. Windows Installer 4.0 ou Windows Installer 4.5 no Windows Server 2008 ou Windows Vista. Windows Installer 3.0 ou posterior no Windows Server 2003 ou Windows XP. Consulte os Requisitos de Run-Time do Windows Installer para obter informações sobre o service pack mínimo do Windows exigido por uma versão do Windows Installer.
da Plataforma de Destino Windows
cabeçalho msi.h
biblioteca Msi.lib
de DLL Msi.dll

Consulte também

de contexto de instalação

sem suporte no Windows Installer 2.0 e anteriores

ProductCode