Função MsiViewGetErrorW (msiquery.h)
A função MsiViewGetError retorna o erro que ocorreu na função MsiViewModify .
Sintaxe
MSIDBERROR MsiViewGetErrorW(
[in] MSIHANDLE hView,
[out] LPWSTR 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.
Retornar valor
Essa função retorna um dos valores a seguir.
Código do erro | Significado |
---|---|
|
Um argumento era inválido. |
|
O buffer era muito pequeno para receber dados. |
|
Falha na função. |
|
A função foi concluída com êxito sem erros. |
|
O novo registro duplica as chaves primárias do registro existente em uma tabela. |
|
Não há valores nulos permitidos; ou a coluna está prestes a ser excluída, mas é referenciada por outra linha. |
|
O registro correspondente em uma tabela estrangeira não foi encontrado. |
|
Os dados são maiores que o valor máximo permitido. |
|
Os dados são menores do que o valor mínimo permitido. |
|
Os dados não são membros dos valores permitidos no conjunto. |
|
Uma cadeia de caracteres de versão inválida foi fornecida. |
|
O caso era inválido. O caso deve ser todo em letras maiúsculas ou minúsculas. |
|
Um GUID inválido foi fornecido. |
|
Um nome de arquivo curinga inválido foi fornecido ou o uso de curingas era inválido. |
|
Um identificador inválido foi fornecido. |
|
IDs de idioma inválidas foram fornecidas. |
|
Um nome de arquivo inválido foi fornecido. |
|
Um caminho inválido foi fornecido. |
|
Uma instrução condicional inválida foi fornecida. |
|
Uma cadeia de caracteres de formato inválida foi fornecida. |
|
Uma cadeia de caracteres de modelo inválida foi fornecida. |
|
Uma cadeia de caracteres inválida foi fornecida na coluna DefaultDir da tabela Directory . |
|
Uma cadeia de caracteres de caminho do Registro inválida foi fornecida. |
|
Uma cadeia de caracteres inválida foi fornecida na coluna CustomSource da tabela CustomAction . |
|
Uma cadeia de caracteres de propriedade inválida foi fornecida. |
|
A tabela _Validation não tem uma referência a uma coluna. |
|
A coluna de categoria da tabela _Validation da coluna é inválida. |
|
Um nome de gabinete inválido foi fornecido. |
|
A tabela na coluna Keytable da tabela _Validation não foi encontrada ou carregada. |
|
O valor na coluna MaxValue da tabela _Validation é menor que o valor na coluna MinValue. |
|
Um nome de destino de atalho inválido foi fornecido. |
|
A cadeia de caracteres é muito longa para o comprimento especificado pela definição de coluna. |
|
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
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 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