Función MsiViewGetErrorW (msiquery.h)
La función MsiViewGetError devuelve el error que se produjo en la función MsiViewModify .
Sintaxis
MSIDBERROR MsiViewGetErrorW(
[in] MSIHANDLE hView,
[out] LPWSTR szColumnNameBuffer,
[in, out] LPDWORD pcchBuf
);
Parámetros
[in] hView
Identificador de la vista.
[out] szColumnNameBuffer
Puntero al búfer que recibe el nombre de columna terminada en NULL. No intente determinar el tamaño del búfer pasando un valor NULL (value=0) para szColumnName. Puede obtener el tamaño del búfer pasando una cadena vacía (por ejemplo, ""). A continuación, la función devuelve MSIDBERROR_MOREDATA y pcchBuf contiene el tamaño de búfer necesario en TCHAR, sin incluir el carácter nulo de terminación. Al devolver MSIDBERROR_NOERROR, pcchBuf contiene el número de TCHAR escritos en el búfer, sin incluir el carácter nulo de terminación. Este parámetro es una cadena vacía si no hay errores.
[in, out] pcchBuf
Puntero a la variable que especifica el tamaño, en TCHAR, del búfer al que apunta la variable szColumnNameBuffer. Cuando la función devuelve MSIDBERROR_NOERROR, esta variable contiene el tamaño de los datos copiados en szColumnNameBuffer, sin incluir el carácter nulo de terminación. Si szColumnNameBuffer no es lo suficientemente grande, la función devuelve MSIDBERROR_MOREDATA y almacena el tamaño necesario, sin incluir el carácter nulo de terminación, en la variable a la que apunta pcchBuf.
Valor devuelto
Esta función devuelve uno de los valores siguientes.
Código de error | Significado |
---|---|
|
Un argumento no era válido. |
|
El búfer era demasiado pequeño para recibir datos. |
|
Error en la función. |
|
La función se completó correctamente sin errores. |
|
El nuevo registro duplica las claves principales del registro existente en una tabla. |
|
No se permiten valores NULL; o la columna está a punto de eliminarse, pero otra fila hace referencia a esta. |
|
No se encontró el registro correspondiente en una tabla externa. |
|
Los datos son mayores que el valor máximo permitido. |
|
Los datos son menores que el valor mínimo permitido. |
|
Los datos no son miembros de los valores permitidos en el conjunto. |
|
Se proporcionó una cadena de versión no válida. |
|
El caso no era válido. El caso debe estar en mayúsculas o en minúsculas. |
|
Se proporcionó un GUID no válido. |
|
Se proporcionó un nombre de archivo comodín no válido o el uso de caracteres comodín no era válido. |
|
Se proporcionó un identificador no válido. |
|
Se proporcionaron identificadores de idioma no válidos. |
|
Se proporcionó un nombre de archivo no válido. |
|
Se proporcionó una ruta de acceso no válida. |
|
Se proporcionó una instrucción condicional no válida. |
|
Se proporcionó una cadena de formato no válida. |
|
Se proporcionó una cadena de plantilla no válida. |
|
Se proporcionó una cadena no válida en la columna DefaultDir de la tabla Directory . |
|
Se proporcionó una cadena de ruta de acceso del Registro no válida. |
|
Se proporcionó una cadena no válida en la columna CustomSource de la tabla CustomAction . |
|
Se proporcionó una cadena de propiedad no válida. |
|
A la tabla _Validation le falta una referencia a una columna. |
|
La columna de categoría de la tabla _Validation de la columna no es válida. |
|
Se proporcionó un nombre de gabinete no válido. |
|
La tabla de la columna Keytable de la tabla _Validation no se encontró ni cargó. |
|
El valor de la columna MaxValue de la tabla _Validation es menor que el valor de la columna MinValue. |
|
Se proporcionó un nombre de destino de acceso directo no válido. |
|
La cadena es demasiado larga para la longitud especificada por la definición de columna. |
|
Se proporcionó un atributo de localización no válido. (No se pueden localizar las claves principales). |
Tenga en cuenta que, en situaciones de memoria baja, esta función puede generar una excepción de STATUS_NO_MEMORY.
Comentarios
Solo debe llamar a la función MsiViewGetError cuando MsiViewModify devuelve ERROR_INVALID_DATA, lo que indica que los datos no son válidos. Los errores solo se registran para MSIMODIFY_VALIDATE, MSIMODIFY_VALIDATE_NEW y MSIMODIFY_VALIDATEFIELD.
Si se devuelve ERROR_MORE_DATA, el parámetro que es un puntero proporciona el tamaño del búfer necesario para contener la cadena. Si se ejecuta correctamente, proporciona el número de caracteres escritos en el búfer de cadenas. Por lo tanto, puede obtener el tamaño necesario del búfer pasando un búfer pequeño (un carácter mínimo) y examinando el valor en pcchPathBuf cuando la función devuelve MSIDBERROR_MOREDATA. No intente determinar el tamaño del búfer pasando null como szColumnNameBuffer o un tamaño de búfer de 0 en el DWORD al que hace referencia pcchBuf.
Una vez que se devuelve MSIDBERROR_NOERROR, no quedan más errores de validación. El valor devuelto MSIDBERROR indica el tipo de error de validación que se produjo para el valor ubicado en la columna identificada por szColumnNameBuffer.
Nota
El encabezado msiquery.h define MsiViewGetError como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Installer 5.0 en Windows Server 2012, Windows 8, Windows Server 2008 R2 o Windows 7. Windows Installer 4.0 o Windows Installer 4.5 en Windows Server 2008 o Windows Vista. Windows Installer en Windows Server 2003 o Windows XP |
Plataforma de destino | Windows |
Encabezado | msiquery.h |
Library | Msi.lib |
Archivo DLL | Msi.dll |
Consulte también
Funciones generales de acceso a base de datos
Pasar Null como argumento de las funciones de Windows Installer