Função MsiViewGetErrorA (msiquery.h)

A função MsiViewGetError retorna o erro que ocorreu na função MsiViewModify .

Sintaxe

MSIDBERROR MsiViewGetErrorA(
  [in]      MSIHANDLE hView,
  [out]     LPSTR     szColumnNameBuffer,
  [in, out] LPDWORD   pcchBuf
);

Parâmetros

[in] hView

Manipule para o modo de exibição.

[out] szColumnNameBuffer

Ponteiro para o buffer que recebe o nome da coluna terminada em nulo. Não tente determinar o tamanho do buffer passando um nulo (value=0) para szColumnName. Você pode obter o tamanho do buffer passando uma cadeia de caracteres vazia (por exemplo, ""). Em seguida, a função retorna MSIDBERROR_MOREDATA e pcchBuf contém o tamanho do buffer necessário em TCHARs, sem incluir o caractere nulo de terminação. No retorno de MSIDBERROR_NOERROR, pcchBuf contém o número de TCHARs gravados no buffer, sem incluir o caractere nulo de terminação. Esse parâmetro será uma cadeia de caracteres vazia se não houver erros.

[in, out] pcchBuf

Ponteiro para a variável que especifica o tamanho, em TCHARs, do buffer apontado pela variável szColumnNameBuffer. Quando a função retorna MSIDBERROR_NOERROR, essa variável contém o tamanho dos dados copiados para szColumnNameBuffer, sem incluir o caractere nulo de terminação. Se szColumnNameBuffer não for grande o suficiente, a função retornará MSIDBERROR_MOREDATA e armazenará o tamanho necessário, sem incluir o caractere nulo de terminação, na variável apontada por pcchBuf.

Valor retornado

Essa função retorna um dos valores a seguir.

Código do erro Significado
MSIDBERROR_INVALIDARG
Um argumento era inválido.
MSIDBERROR_MOREDATA
O buffer era muito pequeno para receber dados.
MSIDBERROR_FUNCTIONERROR
Falha na função.
MSIDBERROR_NOERROR
A função foi concluída com êxito sem erros.
MSIDBERROR_DUPLICATEKEY
O novo registro duplica as chaves primárias do registro existente em uma tabela.
MSIDBERROR_REQUIRED
Não há valores nulos permitidos; ou a coluna está prestes a ser excluída, mas é referenciada por outra linha.
MSIDBERROR_BADLINK
O registro correspondente em uma tabela estrangeira não foi encontrado.
MSIDBERROR_OVERFLOW
Os dados são maiores que o valor máximo permitido.
MSIDBERROR_UNDERFLOW
Os dados são menores do que o valor mínimo permitido.
MSIDBERROR_NOTINSET
Os dados não são membros dos valores permitidos no conjunto.
MSIDBERROR_BADVERSION
Uma cadeia de caracteres de versão inválida foi fornecida.
MSIDBERROR_BADCASE
O caso era inválido. O caso deve ser todo em letras maiúsculas ou minúsculas.
MSIDBERROR_BADGUID
Um GUID inválido foi fornecido.
MSIDBERROR_BADWILDCARD
Um nome de arquivo curinga inválido foi fornecido ou o uso de curingas era inválido.
MSIDBERROR_BADIDENTIFIER
Um identificador inválido foi fornecido.
MSIDBERROR_BADLANGUAGE
IDs de idioma inválidas foram fornecidas.
MSIDBERROR_BADFILENAME
Um nome de arquivo inválido foi fornecido.
MSIDBERROR_BADPATH
Um caminho inválido foi fornecido.
MSIDBERROR_BADCONDITION
Uma instrução condicional inválida foi fornecida.
MSIDBERROR_BADFORMATTED
Uma cadeia de caracteres de formato inválida foi fornecida.
MSIDBERROR_BADTEMPLATE
Uma cadeia de caracteres de modelo inválida foi fornecida.
MSIDBERROR_BADDEFAULTDIR
Uma cadeia de caracteres inválida foi fornecida na coluna DefaultDir da tabela Directory .
MSIDBERROR_BADREGPATH
Uma cadeia de caracteres de caminho do Registro inválida foi fornecida.
MSIDBERROR_BADCUSTOMSOURCE
Uma cadeia de caracteres inválida foi fornecida na coluna CustomSource da tabela CustomAction .
MSIDBERROR_BADPROPERTY
Uma cadeia de caracteres de propriedade inválida foi fornecida.
MSIDBERROR_MISSINGDATA
A tabela _Validation não tem uma referência a uma coluna.
MSIDBERROR_BADCATEGORY
A coluna de categoria da tabela _Validation da coluna é inválida.
MSIDBERROR_BADCABINET
Um nome de gabinete inválido foi fornecido.
MSIDBERROR_BADKEYTABLE
A tabela na coluna Keytable da tabela _Validation não foi encontrada ou carregada.
MSIDBERROR_BADMAXMINVALUES
O valor na coluna MaxValue da tabela _Validation é menor que o valor na coluna MinValue.
MSIDBERROR_BADSHORTCUT
Um nome de destino de atalho inválido foi fornecido.
MSIDBERROR_STRINGOVERFLOW
A cadeia de caracteres é muito longa para o comprimento especificado pela definição de coluna.
MSIDBERROR_BADLOCALIZEATTRIB
Um atributo de localização inválido foi fornecido. (As chaves primárias não podem ser localizadas.)
 
 

Observe que, em situações de memória baixa, essa função pode gerar uma exceção STATUS_NO_MEMORY.

Comentários

Você só deve chamar a função MsiViewGetError quando MsiViewModify retornar ERROR_INVALID_DATA, indicando que os dados são inválidos. Os erros são registrados apenas para MSIMODIFY_VALIDATE, MSIMODIFY_VALIDATE_NEW e MSIMODIFY_VALIDATEFIELD.

Se ERROR_MORE_DATA for retornado, o parâmetro que é um ponteiro fornecerá o tamanho do buffer necessário para manter a cadeia de caracteres. Após o sucesso, ele fornece o número de caracteres gravados no buffer de cadeia de caracteres. Portanto, você pode obter o tamanho necessário do buffer passando um buffer pequeno (mínimo de um caractere) e examinando o valor em pcchPathBuf quando a função retorna MSIDBERROR_MOREDATA. Não tente determinar o tamanho do buffer passando nulo como szColumnNameBuffer ou um tamanho de buffer de 0 no DWORD referenciado por pcchBuf.

Depois que MSIDBERROR_NOERROR é retornado, não há mais erros de validação. O valor retornado MSIDBERROR indica o tipo de erro de validação que ocorreu para o valor localizado na coluna identificada pelo szColumnNameBuffer.

Observação

O cabeçalho msiquery.h define MsiViewGetError 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

   
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 no Windows Server 2003 ou no Windows XP
Plataforma de Destino Windows
Cabeçalho msiquery.h
Biblioteca Msi.lib
DLL Msi.dll

Confira também

Funções gerais de acesso ao banco de dados

Passando Null como o argumento das funções do Windows Installer