169 lines
3.6 KiB
C++
169 lines
3.6 KiB
C++
#include "XMLProx.h"
|
|
#include "XMLClientPacket.h"
|
|
#include "XMLClientPacketFactory.h"
|
|
#include "SinkMap.h"
|
|
#include "MapXMLtoWMI.h"
|
|
#include "XMLWbemServices.h"
|
|
|
|
|
|
NOVABASEPACKET::NOVABASEPACKET()
|
|
{
|
|
m_strNsOrObjPath = NULL;
|
|
m_lFlags = 0;
|
|
m_pCtx = NULL;
|
|
m_pResponseHandler = NULL;
|
|
m_pCallResult = NULL;
|
|
m_pWbemClassObject = NULL;
|
|
m_pCallingObject = NULL;
|
|
m_pEnum = NULL;
|
|
};
|
|
|
|
HRESULT NOVABASEPACKET::Initialize(const BSTR strNsOrObjPath,
|
|
ULONG lFlags,
|
|
CXMLWbemServices *pCallingObject,
|
|
IWbemContext *pCtx,
|
|
CXMLWbemCallResult *pCallResult,
|
|
IWbemClassObject *pObject,
|
|
IEnumWbemClassObject *pEnum,
|
|
bool bDedicatedEnum)
|
|
{
|
|
m_lFlags = lFlags;
|
|
m_bDedicatedEnum = bDedicatedEnum;
|
|
|
|
HRESULT hr = S_OK;
|
|
if(strNsOrObjPath)
|
|
{
|
|
if(!(m_strNsOrObjPath = SysAllocString(strNsOrObjPath)) )
|
|
hr = E_OUTOFMEMORY;
|
|
}
|
|
|
|
if(SUCCEEDED(hr))
|
|
{
|
|
if(m_pCallingObject = pCallingObject)
|
|
pCallingObject->AddRef();
|
|
if(m_pCtx = pCtx)
|
|
pCtx->AddRef();
|
|
if(m_pCallResult = pCallResult)
|
|
pCallResult->AddRef();
|
|
if(m_pWbemClassObject = pObject)
|
|
pObject->AddRef();
|
|
if(m_pEnum = pEnum)
|
|
pEnum->AddRef();
|
|
}
|
|
return hr;
|
|
}
|
|
|
|
|
|
NOVABASEPACKET::~NOVABASEPACKET()
|
|
{
|
|
SysFreeString(m_strNsOrObjPath);
|
|
RELEASEINTERFACE(m_pCallingObject);
|
|
RELEASEINTERFACE(m_pCtx);
|
|
RELEASEINTERFACE(m_pCallResult);
|
|
RELEASEINTERFACE(m_pWbemClassObject);
|
|
RELEASEINTERFACE(m_pResponseHandler);
|
|
}
|
|
|
|
HRESULT NOVABASEPACKET::SetResponsehandler(IWbemObjectSink *pCallback)
|
|
{
|
|
if(m_pResponseHandler = pCallback)
|
|
m_pResponseHandler->AddRef();
|
|
return S_OK;
|
|
}
|
|
|
|
ASYNC_QUERY_PACKAGE::ASYNC_QUERY_PACKAGE()
|
|
{
|
|
m_strQueryLanguage = NULL;
|
|
m_strQuery = NULL;
|
|
}
|
|
|
|
ASYNC_QUERY_PACKAGE::~ASYNC_QUERY_PACKAGE()
|
|
{
|
|
SysFreeString(m_strQueryLanguage);
|
|
SysFreeString(m_strQuery);
|
|
}
|
|
|
|
HRESULT ASYNC_QUERY_PACKAGE::Initialize(const BSTR strQueryLanguage, const BSTR strQuery,
|
|
ULONG lFlags,
|
|
CXMLWbemServices *pCallingObject,
|
|
IWbemContext *pCtx,
|
|
IEnumWbemClassObject *pEnum)
|
|
|
|
{
|
|
HRESULT hr = S_OK;
|
|
if(strQueryLanguage)
|
|
{
|
|
if(!(m_strQueryLanguage = SysAllocString(strQueryLanguage)))
|
|
hr = E_OUTOFMEMORY;
|
|
}
|
|
if(SUCCEEDED(hr) && strQuery)
|
|
{
|
|
if(!(m_strQuery = SysAllocString(strQuery)))
|
|
hr = E_OUTOFMEMORY;
|
|
}
|
|
|
|
if(SUCCEEDED(hr))
|
|
hr = NOVABASEPACKET::Initialize(NULL, lFlags, pCallingObject, pCtx, NULL, NULL, pEnum);
|
|
|
|
return hr;
|
|
}
|
|
|
|
ASYNC_METHOD_PACKAGE::ASYNC_METHOD_PACKAGE()
|
|
{
|
|
m_strMethod = NULL;
|
|
}
|
|
|
|
ASYNC_METHOD_PACKAGE::~ASYNC_METHOD_PACKAGE()
|
|
{
|
|
SysFreeString(m_strMethod);
|
|
}
|
|
|
|
HRESULT ASYNC_METHOD_PACKAGE::Initialize(const BSTR strObjectPath,
|
|
const BSTR strMethod,
|
|
ULONG lFlags,
|
|
CXMLWbemServices *pCallingObject,
|
|
IWbemContext *pCtx,
|
|
CXMLWbemCallResult *pCallback,
|
|
IWbemClassObject *pInParams)
|
|
{
|
|
HRESULT hr = S_OK;
|
|
if(strMethod)
|
|
{
|
|
if(!(m_strMethod = SysAllocString(strMethod)))
|
|
hr = E_OUTOFMEMORY;
|
|
}
|
|
|
|
if(SUCCEEDED(hr))
|
|
hr = NOVABASEPACKET::Initialize(strObjectPath, lFlags, pCallingObject, pCtx, pCallback, pInParams, NULL);
|
|
|
|
return hr;
|
|
}
|
|
|
|
|
|
ASYNC_ENUM_PACKAGE::ASYNC_ENUM_PACKAGE()
|
|
{
|
|
m_pResponseHandler = NULL;
|
|
m_pEnum = NULL;
|
|
}
|
|
ASYNC_ENUM_PACKAGE::~ASYNC_ENUM_PACKAGE()
|
|
{
|
|
if(m_pResponseHandler)
|
|
m_pResponseHandler->Release();
|
|
if(m_pEnum)
|
|
m_pEnum->Release();
|
|
}
|
|
|
|
HRESULT ASYNC_ENUM_PACKAGE::Initialize(IWbemObjectSink *pResponseHandler,
|
|
IEnumWbemClassObject *pEnum,
|
|
ULONG uCount)
|
|
{
|
|
m_uCount = uCount;
|
|
|
|
if(m_pResponseHandler = pResponseHandler)
|
|
m_pResponseHandler->AddRef();
|
|
if(m_pEnum = pEnum)
|
|
m_pEnum->AddRef();
|
|
return S_OK;
|
|
}
|
|
|