IOPCSyncIO::Write
Previous  Top  Next

HRESULT Write(
   [in] DWORD dwCount,
   [in, size_is(dwCount)] OPCHANDLE * phServer,
   [in, size_is(dwCount)] VARIANT * pItemValues,
   [out, size_is(,dwCount)] HRESULT ** ppErrors
   );
Descrizione
Scrive uno o più valori negli item di un gruppo. La funzione sarà eseguita fino al completamento. Questi valori sono scritti su DEVICE. La funzione non dovrebbe ritornare nulla fin quando non ha verificato che il device ha accettato (o rigettato) i dati.
Le scritture non sono influenzate dai gruppi o dagli item attivi.
 
Parametri
Descrizione
dwCount
Numero di item da scrivere
phServer
Lista dei server item handles per gli item da scrivere.
pItemValues
Lista dei valori che devono essere scritti per ogni item. Il datatypes del valore da scrivere non è necessario. Tuttavia può essere ritornato un errore se non è stata fatta una conversione opportuna.
ppErrors
Array di HRESULT indicanti il successo nella scrittura di un singolo item. Gli errori corrispondono agli handles passati in phServer. Indica se il device o il sistema ha accettato il valore. Si noti che ogni error code FAILED indica che il corrispondente valore è stato rifiutato.


Codici Restituiti

Codici Restituiti
Descrizione
S_OK
L'operazione ha avuto successo.
S_FALSE
L'operazione ha avuto successo ma ci sono uno o più errori in ppErrors.
E_FAIL
Operazione fallita.
E_OUTOFMEMORY
Memoria insufficiente.
E_INVALIDARG
Un argomento della funzione era non valido.


Codici Di Errore Restituiti

Codici Restituiti
Descrizione
S_OK
La funzione ha avuto successo.
E_FAIL
La funzione non ha avuto successo
OPC_S_CLAMP
Il valore è stato accettato ma è stato ristretto.
OPC_E_RANGE
Il valore è al di fuori del range ammesso.
OPC_E_BADTYPE
Il tipo di dato passato non può essere accettato da questo item.
OPC_E_BADRIGHTS
L'item non è scrivibilie
OPC_E_INVALIDHANDLE
L'item handle passato non era valido.
OPC_E_UNKNOWNITEMID
L'item non è più disponibile nello spazio di indirizzi del server.
E_xxx
S_xxx
Possono essere ritornati degli errori per specifici fornitori. Informazioni descrittive per tali errori possono essere ottenuti tramite GetErrorString.


Commenti
Se HRESULT è S_OK, allora ppError può essere ignorato (tutti i risultati sono garantiti dalla presenza di S_OK).
Se HRESULT è un qualsiasi FAILED code allora il server dovrebbe tornare un puntatore nullo per tutti i parametri d'uscita.
Si noti che un OPC_E_INVALIDHANDLE su uno degli item non avrà effetti sul processamento degli altri item ma causerà un HRESULT che ritorna S_FALSE.
In alternativa all'OPC_E_BADTPYE è possibile per il server ritornare un qualche FAILED error attraverso VariantChangeType o VariantChangeTypeEx.
La scrittura di un DEVICE può richiedere molto tempo (molti secondi o più) e può richiedere l'esecuzione di altre operazioni sul server da parte di altri client.
Per questa ragione ci si aspetta che i client usino una scrittura asincrona piuttosto che una scrittura sincrona.
L'array ppErrors è allocato dal server ma deve essere liberato dal client.