Функция MsiViewGetErrorA (msiquery.h)
Функция msiViewGetError
Синтаксис
MSIDBERROR MsiViewGetErrorA(
[in] MSIHANDLE hView,
[out] LPSTR szColumnNameBuffer,
[in, out] LPDWORD pcchBuf
);
Параметры
[in] hView
Дескриптор представления.
[out] szColumnNameBuffer
Указатель на буфер, получающий имя столбца, завершаемого значением NULL. Не пытайтесь определить размер буфера, передав значение NULL (value=0) для szColumnName. Размер буфера можно получить, передав пустую строку (например, ""). Затем функция возвращает MSIDBERROR_MOREDATA и pcchBuf содержит требуемый размер буфера в TCHARs, а не в том числе завершающий символ NULL. При возвращении MSIDBERROR_NOERROR pcchBuf содержит количество TCHAR, записанных в буфер, не включая завершающийся символ NULL. Этот параметр является пустой строкой, если ошибки отсутствуют.
[in, out] pcchBuf
Указатель на переменную, указывающую размер буфера, на который указывает переменная szColumnNameBuffer. Когда функция возвращает MSIDBERROR_NOERROR, эта переменная содержит размер данных, скопированных в szColumnNameBuffer, не включая завершающий символ NULL. Если szColumnNameBuffer недостаточно большой, функция возвращает MSIDBERROR_MOREDATA и сохраняет требуемый размер, не включая конечный символ NULL, в переменной, на которую указывает pcchBuf.
Возвращаемое значение
Эта функция возвращает одно из следующих значений.
Код ошибки | Значение |
---|---|
|
Недопустимый аргумент. |
|
Буфер слишком мал, чтобы получать данные. |
|
Не удалось выполнить функцию. |
|
Функция успешно завершена без ошибок. |
|
Новая запись дублирует первичные ключи существующей записи в таблице. |
|
Допустимые значения NULL отсутствуют; или столбец будет удален, но ссылается на другую строку. |
|
Соответствующая запись в внешней таблице не найдена. |
|
Данные больше допустимого максимального значения. |
|
Данные меньше минимально допустимого значения. |
|
Данные не являются членом значений, разрешенных в наборе. |
|
Указана недопустимая строка версии. |
|
Дело было недействительным. Регистр должен быть всем верхним регистром или всем строчным регистром. |
|
Указан недопустимый GUID. |
|
Введено недопустимое имя файла подстановочного знака или недопустимое использование подстановочных знаков. |
|
Указан недопустимый идентификатор. |
|
Были предоставлены недопустимые идентификаторы языков. |
|
Введено недопустимое имя файла. |
|
Указан недопустимый путь. |
|
Указан недопустимый условный оператор. |
|
Указана недопустимая строка формата. |
|
Указана недопустимая строка шаблона. |
|
Недопустимая строка была предоставлена в столбце DefaultDir таблицы Directory. |
|
Указана недопустимая строка пути реестра. |
|
Недопустимая строка была предоставлена в столбце 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 |
целевая платформа | Виндоус |
заголовка | msiquery.h |
библиотеки |
Msi.lib |
DLL | Msi.dll |
См. также
Функции общего доступа к базам данных
передачи null в качестве аргумента функций установщика Windows