Partager via


MsiViewGetErrorW, fonction (msiquery.h)

La fonction MsiViewGetError retourne l’erreur qui s’est produite dans la fonction MsiViewModify .

Syntaxe

MSIDBERROR MsiViewGetErrorW(
  [in]      MSIHANDLE hView,
  [out]     LPWSTR    szColumnNameBuffer,
  [in, out] LPDWORD   pcchBuf
);

Paramètres

[in] hView

Gérez la vue.

[out] szColumnNameBuffer

Pointeur vers la mémoire tampon qui reçoit le nom de colonne terminée par null. N’essayez pas de déterminer la taille de la mémoire tampon en transmettant une valeur null (valeur=0) pour szColumnName. Vous pouvez obtenir la taille de la mémoire tampon en transmettant une chaîne vide (par exemple « »). La fonction retourne ensuite MSIDBERROR_MOREDATA et pcchBuf contient la taille de mémoire tampon requise dans les TCHAR, sans inclure le caractère null de fin. Au retour de MSIDBERROR_NOERROR, pcchBuf contient le nombre de TCHAR écrits dans la mémoire tampon, sans inclure le caractère null de fin. Ce paramètre est une chaîne vide s’il n’y a aucune erreur.

[in, out] pcchBuf

Pointeur vers la variable qui spécifie la taille, en TCHAR, de la mémoire tampon pointée par la variable szColumnNameBuffer. Lorsque la fonction retourne MSIDBERROR_NOERROR, cette variable contient la taille des données copiées dans szColumnNameBuffer, sans inclure le caractère null de fin. Si szColumnNameBuffer n’est pas assez grand, la fonction retourne MSIDBERROR_MOREDATA et stocke la taille requise, sans inclure le caractère null de fin, dans la variable pointée par pcchBuf.

Valeur retournée

Cette fonction retourne l’une des valeurs suivantes.

Code d'erreur Signification
MSIDBERROR_INVALIDARG
Un argument n'était pas valide.
MSIDBERROR_MOREDATA
La mémoire tampon était trop petite pour recevoir des données.
MSIDBERROR_FUNCTIONERROR
La fonction a échoué.
MSIDBERROR_NOERROR
La fonction s’est terminée avec succès sans erreur.
MSIDBERROR_DUPLICATEKEY
Le nouvel enregistrement duplique les clés primaires de l’enregistrement existant dans une table.
MSIDBERROR_REQUIRED
Aucune valeur null n’est autorisée ; ou la colonne est sur le point d’être supprimée, mais est référencée par une autre ligne.
MSIDBERROR_BADLINK
L’enregistrement correspondant dans une table étrangère est introuvable.
MSIDBERROR_OVERFLOW
Les données sont supérieures à la valeur maximale autorisée.
MSIDBERROR_UNDERFLOW
Les données sont inférieures à la valeur minimale autorisée.
MSIDBERROR_NOTINSET
Les données ne sont pas membres des valeurs autorisées dans l’ensemble.
MSIDBERROR_BADVERSION
Une chaîne de version non valide a été fournie.
MSIDBERROR_BADCASE
Le cas n’était pas valide. La casse doit être en majuscules ou en minuscules.
MSIDBERROR_BADGUID
Un GUID non valide a été fourni.
MSIDBERROR_BADWILDCARD
Un nom de fichier générique non valide a été fourni ou l’utilisation de caractères génériques n’était pas valide.
MSIDBERROR_BADIDENTIFIER
Un identificateur non valide a été fourni.
MSIDBERROR_BADLANGUAGE
Des ID de langue non valides ont été fournis.
MSIDBERROR_BADFILENAME
Un nom de fichier non valide a été fourni.
MSIDBERROR_BADPATH
Un chemin d’accès non valide a été fourni.
MSIDBERROR_BADCONDITION
Une instruction conditionnelle non valide a été fournie.
MSIDBERROR_BADFORMATTED
Une chaîne de format non valide a été fournie.
MSIDBERROR_BADTEMPLATE
Une chaîne de modèle non valide a été fournie.
MSIDBERROR_BADDEFAULTDIR
Une chaîne non valide a été fournie dans la colonne DefaultDir de la table Directory .
MSIDBERROR_BADREGPATH
Une chaîne de chemin d’accès de Registre non valide a été fournie.
MSIDBERROR_BADCUSTOMSOURCE
Une chaîne non valide a été fournie dans la colonne CustomSource de la table CustomAction .
MSIDBERROR_BADPROPERTY
Une chaîne de propriété non valide a été fournie.
MSIDBERROR_MISSINGDATA
La table _Validation ne contient pas de référence à une colonne.
MSIDBERROR_BADCATEGORY
La colonne de catégorie de la table _Validation pour la colonne n’est pas valide.
MSIDBERROR_BADCABINET
Un nom d’armoire non valide a été fourni.
MSIDBERROR_BADKEYTABLE
La table de la colonne Keytable de la table _Validation a été introuvable ou chargée.
MSIDBERROR_BADMAXMINVALUES
La valeur de la colonne MaxValue de la table _Validation est inférieure à la valeur de la colonne MinValue.
MSIDBERROR_BADSHORTCUT
Un nom de cible de raccourci non valide a été fourni.
MSIDBERROR_STRINGOVERFLOW
La chaîne est trop longue pour la longueur spécifiée par la définition de colonne.
MSIDBERROR_BADLOCALIZEATTRIB
Un attribut de localisation non valide a été fourni. (Les clés primaires ne peuvent pas être localisées.)
 
 

Notez que dans les situations de mémoire insuffisante, cette fonction peut déclencher une exception STATUS_NO_MEMORY.

Remarques

Vous devez appeler la fonction MsiViewGetError uniquement lorsque MsiViewModify retourne ERROR_INVALID_DATA, ce qui indique que les données ne sont pas valides. Les erreurs sont enregistrées uniquement pour les MSIMODIFY_VALIDATE, les MSIMODIFY_VALIDATE_NEW et les MSIMODIFY_VALIDATEFIELD.

Si ERROR_MORE_DATA est retourné, le paramètre qui est un pointeur donne la taille de la mémoire tampon nécessaire pour contenir la chaîne. En cas de réussite, il indique le nombre de caractères écrits dans la mémoire tampon de chaîne. Par conséquent, vous pouvez obtenir la taille requise de la mémoire tampon en passant une petite mémoire tampon (un caractère minimum) et en examinant la valeur à pcchPathBuf lorsque la fonction retourne MSIDBERROR_MOREDATA. N’essayez pas de déterminer la taille de la mémoire tampon en transmettant null comme szColumnNameBuffer ou une taille de mémoire tampon de 0 dans le DWORD référencé par pcchBuf.

Une fois MSIDBERROR_NOERROR retournée, il ne reste plus d’erreurs de validation. La valeur de retour MSIDBERROR indique le type d’erreur de validation qui s’est produite pour la valeur située dans la colonne identifiée par le szColumnNameBuffer.

Notes

L’en-tête msiquery.h définit MsiViewGetError comme un alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Installer 5.0 sur Windows Server 2012, Windows 8, Windows Server 2008 R2 ou Windows 7. Windows Installer 4.0 ou Windows Installer 4.5 sur Windows Server 2008 ou Windows Vista. Windows Installer sur Windows Server 2003 ou Windows XP
Plateforme cible Windows
En-tête msiquery.h
Bibliothèque Msi.lib
DLL Msi.dll

Voir aussi

Fonctions générales d’accès à la base de données

Passage de la valeur Null en tant qu’argument des fonctions Windows Installer