windows-nt/Source/XPSP1/NT/admin/pchealth/upload/client/eventwrapper/uploadeventswrapper.cpp
2020-09-26 16:20:57 +08:00

79 lines
1.7 KiB
C++

// UploadEventsWrapper.cpp : Implementation of CUploadEventsWrapper
#include "stdafx.h"
#include "EventWrapper.h"
#include "UploadEventsWrapper.h"
/////////////////////////////////////////////////////////////////////////////
// CUploadEventsWrapper
HRESULT CUploadEventsWrapper::FinalConstruct()
{
return CoCreateFreeThreadedMarshaler( GetControllingUnknown(), &m_pUnkMarshaler.p );
}
void CUploadEventsWrapper::FinalRelease()
{
UnregisterForEvents();
m_pUnkMarshaler.Release();
}
void CUploadEventsWrapper::UnregisterForEvents()
{
if(m_dwUploadEventsCookie)
{
if(AtlUnadvise( m_mpcujJob, IID_IMPCUploadEvents, m_dwUploadEventsCookie ) == S_OK)
{
m_dwUploadEventsCookie = 0;
}
}
if(m_mpcujJob)
{
m_mpcujJob->Release(); m_mpcujJob = NULL;
}
}
STDMETHODIMP CUploadEventsWrapper::Register( IMPCUploadJob* mpcujJob )
{
HRESULT hr = S_OK;
CComPtr<IMPCUploadEvents> pCallback;
UnregisterForEvents();
if(mpcujJob)
{
m_mpcujJob = mpcujJob; m_mpcujJob->AddRef();
if(SUCCEEDED(hr = QueryInterface( IID_IMPCUploadEvents, (void**)&pCallback )))
{
hr = AtlAdvise( m_mpcujJob, pCallback, IID_IMPCUploadEvents, &m_dwUploadEventsCookie );
}
}
return hr;
}
////////////////////////////////////////////////
STDMETHODIMP CUploadEventsWrapper::onStatusChange( IMPCUploadJob* mpcujJob, UL_STATUS fStatus )
{
return Fire_onStatusChange ( mpcujJob, fStatus );
}
STDMETHODIMP CUploadEventsWrapper::onProgressChange( IMPCUploadJob* mpcujJob, long lCurrentSize, long lTotalSize )
{
return Fire_onProgressChange( mpcujJob, lCurrentSize, lTotalSize );
}