Funzione MsiViewGetErrorA (msiquery.h)

La funzione MsiViewGetError restituisce l'errore che si è verificato nella funzione MsiViewModify .

Sintassi

MSIDBERROR MsiViewGetErrorA(
  [in]      MSIHANDLE hView,
  [out]     LPSTR     szColumnNameBuffer,
  [in, out] LPDWORD   pcchBuf
);

Parametri

[in] hView

Handle per la visualizzazione.

[out] szColumnNameBuffer

Puntatore al buffer che riceve il nome della colonna con terminazione Null. Non tentare di determinare le dimensioni del buffer passando un valore Null (value=0) per szColumnName. È possibile ottenere le dimensioni del buffer passando una stringa vuota (ad esempio ""). La funzione restituisce quindi MSIDBERROR_MOREDATA e pcchBuf contiene le dimensioni del buffer necessarie in TCHAR, senza includere il carattere null di terminazione. In caso di restituzione di MSIDBERROR_NOERROR, pcchBuf contiene il numero di TCHAR scritti nel buffer, senza includere il carattere Null di terminazione. Questo parametro è una stringa vuota se non sono presenti errori.

[in, out] pcchBuf

Puntatore alla variabile che specifica le dimensioni, in TCHAR, del buffer a cui punta la variabile szColumnNameBuffer. Quando la funzione restituisce MSIDBERROR_NOERROR, questa variabile contiene le dimensioni dei dati copiati in szColumnNameBuffer, senza includere il carattere Null di terminazione. Se szColumnNameBuffer non è sufficientemente grande, la funzione restituisce MSIDBERROR_MOREDATA e archivia le dimensioni necessarie, senza includere il carattere Null di terminazione, nella variabile a cui punta pcchBuf.

Valore restituito

Questa funzione restituisce uno dei valori seguenti.

Codice di errore Significato
MSIDBERROR_INVALIDARG
Un argomento non è valido.
MSIDBERROR_MOREDATA
Il buffer era troppo piccolo per ricevere i dati.
MSIDBERROR_FUNCTIONERROR
La funzione non è riuscita.
MSIDBERROR_NOERROR
La funzione è stata completata correttamente senza errori.
MSIDBERROR_DUPLICATEKEY
Il nuovo record duplica le chiavi primarie del record esistente in una tabella.
MSIDBERROR_REQUIRED
Non sono consentiti valori Null; o la colonna sta per essere eliminata, ma viene fatto riferimento da un'altra riga.
MSIDBERROR_BADLINK
Impossibile trovare il record corrispondente in una tabella esterna.
MSIDBERROR_OVERFLOW
I dati sono maggiori del valore massimo consentito.
MSIDBERROR_UNDERFLOW
I dati sono inferiori al valore minimo consentito.
MSIDBERROR_NOTINSET
I dati non sono membri dei valori consentiti nel set.
MSIDBERROR_BADVERSION
È stata specificata una stringa di versione non valida.
MSIDBERROR_BADCASE
Il caso non è valido. La maiuscola deve essere tutte maiuscole o minuscole.
MSIDBERROR_BADGUID
È stato fornito un GUID non valido.
MSIDBERROR_BADWILDCARD
È stato specificato un nome di file con caratteri jolly non validi oppure l'uso di caratteri jolly non è valido.
MSIDBERROR_BADIDENTIFIER
È stato fornito un identificatore non valido.
MSIDBERROR_BADLANGUAGE
Sono stati specificati ID lingua non validi.
MSIDBERROR_BADFILENAME
È stato specificato un nome file non valido.
MSIDBERROR_BADPATH
È stato fornito un percorso non valido.
MSIDBERROR_BADCONDITION
È stata fornita un'istruzione condizionale non valida.
MSIDBERROR_BADFORMATTED
È stata specificata una stringa di formato non valida.
MSIDBERROR_BADTEMPLATE
È stata fornita una stringa di modello non valida.
MSIDBERROR_BADDEFAULTDIR
Nella colonna DefaultDir della tabella Directory è stata specificata una stringa non valida.
MSIDBERROR_BADREGPATH
È stata specificata una stringa di percorso del Registro di sistema non valida.
MSIDBERROR_BADCUSTOMSOURCE
È stata specificata una stringa non valida nella colonna CustomSource della tabella CustomAction .
MSIDBERROR_BADPROPERTY
È stata specificata una stringa di proprietà non valida.
MSIDBERROR_MISSINGDATA
La tabella _Validation manca un riferimento a una colonna.
MSIDBERROR_BADCATEGORY
La colonna category della tabella _Validation per la colonna non è valida.
MSIDBERROR_BADCABINET
È stato specificato un nome cab non valido.
MSIDBERROR_BADKEYTABLE
La tabella nella colonna Keytable della tabella _Validation non è stata trovata o caricata.
MSIDBERROR_BADMAXMINVALUES
Il valore nella colonna MaxValue della tabella _Validation è minore del valore nella colonna MinValue.
MSIDBERROR_BADSHORTCUT
È stato specificato un nome di destinazione del collegamento non valido.
MSIDBERROR_STRINGOVERFLOW
La stringa è troppo lunga per la lunghezza specificata dalla definizione di colonna.
MSIDBERROR_BADLOCALIZEATTRIB
È stato fornito un attributo di localizzazione non valido. Le chiavi primarie non possono essere localizzate.
 
 

Si noti che in situazioni di memoria insufficiente questa funzione può generare un'eccezione STATUS_NO_MEMORY.

Commenti

È consigliabile chiamare la funzione MsiViewGetError solo quando MsiViewModify restituisce ERROR_INVALID_DATA, a indicare che i dati non sono validi. Gli errori vengono registrati solo per MSIMODIFY_VALIDATE, MSIMODIFY_VALIDATE_NEW e MSIMODIFY_VALIDATEFIELD.

Se viene restituito ERROR_MORE_DATA, il parametro che è un puntatore restituisce le dimensioni del buffer necessarie per contenere la stringa. In caso di esito positivo, assegna il numero di caratteri scritti nel buffer di stringhe. È quindi possibile ottenere le dimensioni necessarie del buffer passando un buffer piccolo (un carattere minimo) ed esaminando il valore in pcchPathBuf quando la funzione restituisce MSIDBERROR_MOREDATA. Non tentare di determinare le dimensioni del buffer passando null come szColumnNameBuffer o una dimensione del buffer pari a 0 nella DWORD a cui fa riferimento pcchBuf.

Una volta restituito MSIDBERROR_NOERROR, non rimangono altri errori di convalida. Il valore restituito MSIDBERROR indica il tipo di errore di convalida che si è verificato per il valore presente nella colonna identificata da szColumnNameBuffer.

Nota

L'intestazione msiquery.h definisce MsiViewGetError come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.

Requisiti

   
Client minimo supportato Windows Installer 5.0 in Windows Server 2012, Windows 8, Windows Server 2008 R2 o Windows 7. Windows Installer 4.0 o Windows Installer 4.5 in Windows Server 2008 o Windows Vista. Windows Installer in Windows Server 2003 o Windows XP
Piattaforma di destinazione Windows
Intestazione msiquery.h
Libreria Msi.lib
DLL Msi.dll

Vedi anche

Funzioni di accesso al database generale

Passaggio di Null come argomento delle funzioni di Windows Installer