CTransaction * COPCItem::writeAsynch(VARIANT &data, ITransactionComplete *transactionCB){ DWORD cancelID; HRESULT * individualResults; CAtlArray<COPCItem *> items; items.Add(this); CTransaction * trans = new CTransaction(items,transactionCB); HRESULT result = group.getAsych2IOInterface()->Write(1,&serversItemHandle,&data,(DWORD)trans,&cancelID,&individualResults); if (FAILED(result)){ delete trans; throw OPCException("Asynch Write failed"); } trans->setCancelId(cancelID); if (FAILED(individualResults[0])){ trans->setItemError(this,individualResults[0]); trans->setCompleted(); // if all items return error then no callback will occur. p 104 } COPCClient::comFree(individualResults); return trans; }