Функция MsiViewGetErrorA (msiquery.h)
Функция MsiViewGetError возвращает ошибку, которая произошла в функции MsiViewModify .
Синтаксис
MSIDBERROR MsiViewGetErrorA(
[in] MSIHANDLE hView,
[out] LPSTR szColumnNameBuffer,
[in, out] LPDWORD pcchBuf
);
Параметры
[in] hView
Дескриптор представления.
[out] szColumnNameBuffer
Указатель на буфер, который получает имя столбца, завершающееся null. Не пытайтесь определить размер буфера, передав значение NULL (value=0) для szColumnName. Размер буфера можно получить, передав пустую строку (например, ""). Затем функция возвращает MSIDBERROR_MOREDATA и pcchBuf содержит требуемый размер буфера в TCHAR, не включая завершающий символ NULL. При возвращении MSIDBERROR_NOERROR pcchBuf содержит число TCHAR, записанных в буфер, не включая завершающий символ NULL. Этот параметр является пустой строкой, если ошибки отсутствуют.
[in, out] pcchBuf
Указатель на переменную, указывающую размер буфера, на который указывает переменная szColumnNameBuffer, в TCHAR. Когда функция возвращает MSIDBERROR_NOERROR, эта переменная содержит размер данных, скопированных в szColumnNameBuffer, не включая завершающий символ NULL. Если szColumnNameBuffer недостаточно велик, функция возвращает MSIDBERROR_MOREDATA и сохраняет требуемый размер, не включая завершающий символ NULL, в переменной, на которую указывает pcchBuf.
Возвращаемое значение
Эта функция возвращает одно из следующих значений.
Код ошибки | Значение |
---|---|
|
Аргумент был недопустимым. |
|
Буфер был слишком мал для получения данных. |
|
Сбой функции. |
|
Функция успешно завершена без ошибок. |
|
Новая запись дублирует первичные ключи существующей записи в таблице. |
|
Значения NULL не допускаются; или столбец будет удален, но на который ссылается другая строка. |
|
Соответствующая запись во внешней таблице не найдена. |
|
Данные больше максимального допустимого значения. |
|
Данные меньше минимально допустимого значения. |
|
Данные не являются частью значений, разрешенных в наборе. |
|
Указана недопустимая строка версии. |
|
Дело было недопустимым. Регистр должен быть в верхнем или нижнем регистре. |
|
Указан недопустимый ИДЕНТИФИКАТОР GUID. |
|
Указано недопустимое имя файла с подстановочными знаками или недопустимое использование подстановочных знаков. |
|
Указан недопустимый идентификатор. |
|
Указаны недопустимые языковые идентификаторы. |
|
Указано недопустимое имя файла. |
|
Указан недопустимый путь. |
|
Указан недопустимый условный оператор. |
|
Указана недопустимая строка формата. |
|
Указана недопустимая строка шаблона. |
|
В столбце DefaultDir таблицы Каталог указана недопустимая строка. |
|
Указана недопустимая строка пути к реестру. |
|
Указана недопустимая строка в столбце CustomSource таблицы CustomAction . |
|
Указана недопустимая строка свойства. |
|
В _Validation таблице отсутствует ссылка на столбец. |
|
Недопустимый столбец категорий таблицы _Validation столбца. |
|
Указано недопустимое имя шкафа. |
|
Таблица в столбце Keytable таблицы _Validation не найдена и не загружена. |
|
Значение в столбце MaxValue таблицы _Validation меньше значения в столбце MinValue. |
|
Указано недопустимое имя целевого объекта ярлыка. |
|
Строка слишком длинна для длины, указанной определением столбца. |
|
Указан недопустимый атрибут локализации. (Первичные ключи не могут быть локализованы.) |
Обратите внимание, что при нехватке памяти эта функция может вызвать исключение STATUS_NO_MEMORY.
Комментарии
Функцию MsiViewGetError следует вызывать только тогда, когда MsiViewModify возвращает ERROR_INVALID_DATA, указывая, что данные недопустимы. Ошибки записываются только для MSIMODIFY_VALIDATE, MSIMODIFY_VALIDATE_NEW и MSIMODIFY_VALIDATEFIELD.
Если возвращается ERROR_MORE_DATA, параметр, представляющий собой указатель, задает размер буфера, необходимый для хранения строки. При успешном выполнении он возвращает количество символов, записанных в буфер строки. Таким образом, вы можете получить требуемый размер буфера, передав небольшой буфер (не менее одного символа) и проверив значение в pcchPathBuf , когда функция возвращает MSIDBERROR_MOREDATA. Не пытайтесь определить размер буфера, передав значение NULL как szColumnNameBuffer или размер буфера 0 в DWORD , на который ссылается pcchBuf.
После возврата MSIDBERROR_NOERROR ошибки проверки больше не сохраняются. Возвращаемое значение MSIDBERROR указывает тип ошибки проверки, которая произошла для значения, расположенного в столбце, определяемом szColumnNameBuffer.
Примечание
Заголовок msiquery.h определяет MsiViewGetError в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Минимальная версия клиента | Установщик Windows 5.0 в Windows Server 2012, Windows 8, Windows Server 2008 R2 или Windows 7. Установщик Windows 4.0 или Установщик Windows 4.5 в Windows Server 2008 или Windows Vista. Установщик Windows в Windows Server 2003 или Windows XP |
Целевая платформа | Windows |
Header | msiquery.h |
Библиотека | Msi.lib |
DLL | Msi.dll |
См. также раздел
Общие функции доступа к базе данных
Передача null в качестве аргумента функций установщика Windows