// ModifyInstancePacket.cpp: implementation of the CModifyInstancePacket class. // ////////////////////////////////////////////////////////////////////// #include "XMLTransportClientHelper.h" #include "XMLClientPacket.h" #include "ModifyInstancePacket.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CModifyInstancePacket::CModifyInstancePacket(const WCHAR *pwszObjPath, const WCHAR *pwszNameSpace) : CXMLClientPacket(pwszObjPath, pwszNameSpace, L"ModifyInstance") { m_ePathstyle = NOVAPATH; //assume nova path if this ctor is called. } ////////////////////////////////////////////////////////////////////// // Member functions ////////////////////////////////////////////////////////////////////// HRESULT CModifyInstancePacket::GetBody(WCHAR **ppwszBody, DWORD *pdwLengthofPacket) { if(NULL == m_pWbemClassObject || m_ePathstyle == WHISTLERPATH) return E_INVALIDARG; HRESULT hr = S_OK; IStream *pStream = NULL; if(SUCCEEDED(hr = GetBodyTillLocalNamespacePathInStream(&pStream))) { WRITETOSTREAM(pStream, L""); WCHAR pwszFlags[16]; pwszFlags[15] = '\0'; wsprintf(pwszFlags,L"%u",m_lFlags); WRITETOSTREAM(pStream, pwszFlags); WRITETOSTREAM(pStream, L""); // This is a VALUE.NAMEDINSTANCE WRITETOSTREAM(pStream, L"") WRITETOSTREAM(pStream, L""); if(SUCCEEDED(hr = GetKeyBindingsInStream(pStream))) { if(SUCCEEDED(hr = ConvertWbemObjectToXMLStream(pStream))) { WRITETOSTREAM(pStream, L""); WRITETOSTREAM(pStream, L""); hr = GetWStringFromStream(pStream,ppwszBody,pdwLengthofPacket); } } pStream->Release(); } return hr; } // This assumes that pwszXMLObj contains a valid VALUE.NAMEDINSTANCE element HRESULT CModifyInstancePacket::GetBodyDirect(const WCHAR *pwszXMLObj, DWORD dwLengthofObj, WCHAR **ppwszBody, DWORD *pdwLengthofPacket) { if(NULL == m_pWbemClassObject || m_ePathstyle == WHISTLERPATH) return E_INVALIDARG; HRESULT hr = S_OK; IStream *pStream = NULL; if(SUCCEEDED(hr = GetBodyTillLocalNamespacePathInStream(&pStream))) { WRITETOSTREAM(pStream, L""); WCHAR pwszFlags[16]; pwszFlags[15] = '\0'; wsprintf(pwszFlags,L"%u",m_lFlags); WRITETOSTREAM(pStream, pwszFlags); WRITETOSTREAM(pStream, L""); WRITETOSTREAM(pStream, L""); pStream->Write(pwszXMLObj, dwLengthofObj*sizeof(WCHAR), NULL); WRITETOSTREAM(pStream, L""); hr = GetWStringFromStream(pStream,ppwszBody,pdwLengthofPacket); pStream->Release(); } return hr; }