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érer la vue.

[out] szColumnNameBuffer

Pointeur vers la mémoire tampon qui reçoit le nom de la colonne terminée par null. N’essayez pas de déterminer la taille de la mémoire tampon en transmettant une valeur Null (value=0) pour szColumnName. Vous pouvez obtenir la taille de la mémoire tampon en passant 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. Lors du 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, dans les 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 suffisamment volumineux, 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 de retour

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
Échec de la fonction.
MSIDBERROR_NOERROR
La fonction s’est terminée correctement 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 n’a pas été trouvé.
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
L’affaire 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 n’a pas été trouvée 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 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. (Impossible de localiser les clés primaires.)
 
 

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

Remarques

Vous devez uniquement appeler la fonction MsiViewGetError lorsque MsiViewModify retourne ERROR_INVALID_DATA, indiquant que les données ne sont pas valides. Les erreurs ne sont enregistrées que 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 requise pour contenir la chaîne. En cas de réussite, il donne 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 en tant que szColumnNameBuffer ou une taille de mémoire tampon de 0 dans la DWORD référencée par pcchBuf.

Une fois MSIDBERROR_NOERROR retourné, aucune autre erreur de validation ne reste. 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.

Note

L’en-tête msiquery.h définit MsiViewGetError comme 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.

Exigences

Exigence Valeur
client minimum 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
d’en-tête msiquery.h
bibliothèque Msi.lib
DLL Msi.dll

Voir aussi

fonctions d’accès aux bases de données générales

passage de null en tant qu’argument des fonctions Windows Installer