1 2 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