Condividi tramite


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
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. Il maiuscolo deve essere tutto maiuscolo o minuscolo.
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 forniti ID lingua non validi.
MSIDBERROR_BADFILENAME
È stato specificato un nome di 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 specificata una stringa di modello non valida.
MSIDBERROR_BADDEFAULTDIR
È stata specificata una stringa non valida nella colonna DefaultDir della tabella directory .
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 di 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. Non è possibile localizzare le chiavi primarie.
 
 

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

Osservazioni

È 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 necessario per contenere la stringa. In caso di esito positivo, fornisce 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 nel 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 dal 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 del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.

Fabbisogno

Requisito Valore
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 Finestre
intestazione msiquery.h
libreria Msi.lib
dll Msi.dll

Vedere anche

funzioni generali di accesso al database

passaggio di Null come argomento delle funzioni di Windows Installer