You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.2 KiB
50 lines
1.2 KiB
// Copyright (c) 1997-1999 Microsoft Corporation
|
|
class CUnsecWrap
|
|
{
|
|
protected:
|
|
IWbemObjectSink* m_pSink;
|
|
IWbemObjectSink* m_pWrapper;
|
|
|
|
static IUnsecuredApartment* mstatic_pApartment;
|
|
|
|
protected:
|
|
static void Init()
|
|
{
|
|
if(mstatic_pApartment == NULL)
|
|
{
|
|
HRESULT hres = CoCreateInstance(CLSID_UnsecuredApartment, NULL,
|
|
CLSCTX_ALL,
|
|
IID_IUnsecuredApartment,
|
|
(void**)&mstatic_pApartment);
|
|
}
|
|
}
|
|
public:
|
|
CUnsecWrap(IWbemObjectSink* pSink) :
|
|
m_pSink(pSink),
|
|
m_pWrapper(NULL)
|
|
{
|
|
m_pSink->AddRef();
|
|
Init();
|
|
}
|
|
~CUnsecWrap()
|
|
{
|
|
m_pSink->Release();
|
|
if(m_pWrapper)
|
|
m_pWrapper->Release();
|
|
}
|
|
|
|
operator IWbemObjectSink*()
|
|
{
|
|
if(m_pWrapper)
|
|
return m_pWrapper;
|
|
|
|
IUnknown* pUnk;
|
|
mstatic_pApartment->CreateObjectStub(m_pSink, &pUnk);
|
|
pUnk->QueryInterface(IID_IWbemObjectSink, (void**)&m_pWrapper);
|
|
pUnk->Release();
|
|
return m_pWrapper;
|
|
}
|
|
};
|
|
|
|
IUnsecuredApartment* CUnsecWrap::mstatic_pApartment = NULL;
|
|
|