| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 
 |  
//////////////////////////////////////////////////////////////////////
// Ecrit une valeur dans toutes les items
//////////////////////////////////////////////////////////////////////
bool CGroupeOPC::EcrireItem(short Valeur)
{
	// test si l'on dispose bien d'une référence sur l'interface IOPCAsyncIO2
	if (!(LPUNKNOWN)m_IOPCAsyncIO2)
	{
		// erreur : la référence sur l'interface IOPCSyncIO n'existe pas
		m_Erreur = 42;
		return false;
	}
 
	unsigned short i;
 
	DWORD pdwCancelID;
 
	HRESULT hr;
	HRESULT* pErrors = NULL;
 
	// copie de la valeur dans un tableau de Variant
	_variant_t * vtValue;
 
	vtValue = new _variant_t[m_NombreItem];
 
	for (i=0 ; i<m_NombreItem ; i++)
	{
		vtValue[i] = Valeur;
	}
 
	hr = m_IOPCAsyncIO2->Write(m_NombreItem,
							   m_hServerItem,
						       vtValue,
						       m_dwConnection,
						       &pdwCancelID,
						       &pErrors);
 
	delete vtValue; // plante
 
	if (hr != S_OK)
	{
		// erreur : échec de la méthode write
		m_Erreur = 43;
		return false;
	}
 
	if(pErrors[0] != S_OK)
	{
		// erreur : impossible d'écrire l'item
		m_Erreur = 44;
		return false;
	}
 
	// Item ecrit avec succes
	CoTaskMemFree(pErrors); // libération de la mémoire allouée par Write
 
 
	return true;
} | 
Partager