// GetInstancePacket.cpp: implementation of the CExecQueryPacket class.
//
//////////////////////////////////////////////////////////////////////
#include "XMLTransportClientHelper.h"
#include "XMLClientPacket.h"
#include "ExecQueryPacket.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CExecQueryPacket::CExecQueryPacket(const WCHAR *pwszObjPath,const WCHAR *pwszNameSpace)
: CXMLClientPacket(pwszObjPath,pwszNameSpace,L"ExecQuery")
{
m_ePathstyle = NOVAPATH; //assume nova path if this ctor is called.
//default query language.
wcscpy(m_pwszQueryLanguage,L"WQL");
m_pwszQueryString = NULL;
}
HRESULT CExecQueryPacket::GetBody(WCHAR **ppwszBody,DWORD *pdwLengthofPacket)
{
//Client must first set the query string using SetQueryString fn.
//we need a valid query for processing.
if(NULL == m_pwszQueryString || (NULL == ppwszBody))
return E_INVALIDARG;
HRESULT hr = S_OK;
IStream *pStream = NULL;
if(SUCCEEDED(hr = GetBodyTillLocalNamespacePathInStream(&pStream)))
{
WRITETOSTREAM(pStream, L"");
WRITETOSTREAM(pStream, m_pwszQueryString);
WRITETOSTREAM(pStream, L"");
WRITETOSTREAM(pStream, m_pwszQueryLanguage);
WRITETOSTREAM(pStream, L"");
hr = GetWStringFromStream(pStream, ppwszBody, pdwLengthofPacket);
pStream->Release();
}
return hr;
}