HRESULT XMLHelper::SetAttributeId(MSXML2::IXMLDOMNode *node, const TCHAR *attribute, const Id &id) { MSXML2::IXMLDOMElement *pElem = 0; HRESULT hr = node->QueryInterface(IID_IXMLDOMElement, reinterpret_cast<void **>(&pElem)); if(hr == S_OK) { BSTR attr = SysAllocString(attribute); VARIANTARG varg; VariantInit(&varg); varg.vt = VT_BSTR; TCHAR buf[128] = {}; varg.bstrVal = SysAllocStringLen(id.AsHex(buf), 128); hr = pElem->setAttribute(attr, varg); SysFreeString(attr); SysFreeString(varg.bstrVal); pElem->Release(); } return hr; }