Função MsiSourceListEnumMediaDisksA (msi.h)

A função MsiSourceListEnumMediaDisks enumera a lista de discos registrados para a fonte de mídia para um patch ou produto.

Sintaxe

UINT MsiSourceListEnumMediaDisksA(
  [in]                LPCSTR            szProductCodeOrPatchCode,
  [in, optional]      LPCSTR            szUserSid,
  [in]                MSIINSTALLCONTEXT dwContext,
  [in]                DWORD             dwOptions,
  [in]                DWORD             dwIndex,
  [out, optional]     LPDWORD           pdwDiskId,
  [out, optional]     LPSTR             szVolumeLabel,
  [in, out, optional] LPDWORD           pcchVolumeLabel,
  [out, optional]     LPSTR             szDiskPrompt,
  [in, out, optional] LPDWORD           pcchDiskPrompt
);

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
NULO
Um NULL indica o usuário conectado no momento. Ao referenciar a conta de usuário atual, szUserSID pode ser NULL e dwContext pode ser MSIINSTALLCONTEXT_USERMANAGED ou MSIINSTALLCONTEXT_USERUNMANAGED.
SID de 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.
 
Nota 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 sid como s-1-5-18 retorna ERROR_INVALID_PARAMETER.
 

[in] dwContext

Esse parâmetro especifica 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 do produto ou patch existe no contexto por usuário gerenciado.
MSIINSTALLCONTEXT_USERUNMANAGED
A instância do produto ou patch 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 que especifica o significado de szProductCodeOrPatchCode.

Sinalizador Significado
MSICODE_PRODUCT
szProductCodeOrPatchCode é um GUID de código de produto.
MSICODE_PATCH
szProductCodeOrPatchCode é um GUID de 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 MsiSourceListEnumMediaDisks e incrementado para chamadas subsequentes até que a função retorne ERROR_NO_MORE_ITEMS.

[out, optional] pdwDiskId

Na entrada para MsiSourceListEnumMediaDisks , esse parâmetro fornece um ponteiro para um DWORD receber a ID do disco que está sendo enumerado. Esse parâmetro é opcional.

[out, optional] szVolumeLabel

Um buffer de saída que recebe o rótulo de volume do disco que está sendo enumerado. Esse buffer deve ser grande o suficiente para conter as informações. Se o buffer for muito pequeno, a função retornará ERROR_MORE_DATA e definirá *pcchVolumeLabel como o número de TCHAR no valor, sem incluir o caractere NULL de terminação.

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

[in, out, optional] pcchVolumeLabel

Um ponteiro para uma variável que especifica o número de TCHAR no buffer szVolumeLabel . Quando a função retorna, esse parâmetro é o número de TCHAR no valor recebido, não incluindo o caractere nulo de terminação.

Esse parâmetro só poderá ser definido como NULL se szVolumeLabel também for NULL, caso contrário, a função retornará ERROR_INVALID_PARAMETER.

[out, optional] szDiskPrompt

Um buffer de saída que recebe o prompt de disco do disco que está sendo enumerado. Esse buffer deve ser grande o suficiente para conter as informações. Se o buffer for muito pequeno, a função retornará ERROR_MORE_DATA e definirá *pcchDiskPrompt como o número de TCHAR no valor, sem incluir o caractere NULL de terminação.

Se o szDiskPrompt estiver definido como NULL e pcchDiskPrompt estiver definido como um ponteiro válido, a função retornará ERROR_SUCCESS e definirá *pcchDiskPrompt 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 o buffer szDiskPrompt grande o suficiente para conter *pcchDiskPrompt + 1 caracteres.

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

[in, out, optional] pcchDiskPrompt

Um ponteiro para uma variável que especifica o número de TCHAR no buffer szDiskPrompt . 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 só poderá ser definido como NULL se szDiskPrompt também for NULL, caso contrário, a função retornará ERROR_INVALID_PARAMETER.

Retornar valor

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

Valor Significado
ERROR_ACCESS_DENIED
O usuário não tem a capacidade de ler a fonte de mídia especificada ou o produto ou patch especificado. Isso não indica se uma fonte de mídia, 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_NO_MORE_ITEMS
Não há mais discos registrados para este produto ou patch.
ERROR_SUCCESS
O valor é enumerado com êxito.
ERROR_UNKNOWN_PATCH
O patch não foi encontrado.
ERROR_UNKNOWN_PRODUCT
O produto não foi encontrado.
ERROR_MORE_DATA
O buffer fornecido é muito pequeno para conter as informações solicitadas.
ERROR_FUNCTION_FAILED
Falha interna inesperada.

Comentários

Ao fazer várias chamadas para MsiSourceListEnumMediaDisks 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.

Observação

O cabeçalho msi.h define MsiSourceListEnumMediaDisks 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. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Installer 5.0 no Windows Server 2012, no Windows 8, no Windows Server 2008 R2 ou no Windows 7. Windows Installer 4.0 ou Windows Installer 4.5 no Windows Server 2008 ou no Windows Vista. Windows Installer 3.0 ou versões posteriores no Windows Server 2003 ou no Windows XP. Confira os Requisitos de tempo de execução do Windows Installer para obter informações sobre o service pack mínimo do Windows exigido por uma versão do Windows Installer.
Plataforma de Destino Windows
Cabeçalho msi.h
Biblioteca Msi.lib
DLL Msi.dll

Confira também

Contexto de instalação

Sem suporte no Windows Installer 2.0 e nas versões anteriores

ProductCode