Source code of Windows XP (NT5)
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.
 
 
 
 
 
 

83 lines
2.3 KiB

/*---------------------------------------------------------------------------
File: StatusObj.h
Comments: COM object used internally by the engine to track whether a job
is running, or finished, and to provide a mechanism for aborting a job.
The agent will set the status to running, or finished, as appropriate.
If the client cancels the job, the engine's CancelJob function will change the
status to 'Aborting'.
Each helper object that performs a lengthy operation, such as account replication, or
security translation is responsible for periodically checking the status object to see
if it needs to abort the task in progress. The engine itself will check between migration
tasks to see if the job has been aborted.
(c) Copyright 1999, Mission Critical Software, Inc., All Rights Reserved
Proprietary and confidential to Mission Critical Software, Inc.
REVISION LOG ENTRY
Revision By: Christy Boles
Revised on 05/18/99
---------------------------------------------------------------------------
*/
// StatusObj.h : Declaration of the CStatusObj
#ifndef __STATUSOBJ_H_
#define __STATUSOBJ_H_
#include "resource.h" // main symbols
#include "DCTStat.h"
/////////////////////////////////////////////////////////////////////////////
// CStatusObj
class ATL_NO_VTABLE CStatusObj :
public CComObjectRootEx<CComMultiThreadModel>,
public CComCoClass<CStatusObj, &CLSID_StatusObj>,
public IDispatchImpl<IStatusObj, &IID_IStatusObj, &LIBID_MCSDCTWORKEROBJECTSLib>
{
public:
CStatusObj()
{
m_pUnkMarshaler = NULL;
m_Status = 0;
}
DECLARE_REGISTRY_RESOURCEID(IDR_STATUSOBJ)
DECLARE_NOT_AGGREGATABLE(CStatusObj)
DECLARE_GET_CONTROLLING_UNKNOWN()
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CStatusObj)
COM_INTERFACE_ENTRY(IStatusObj)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY_AGGREGATE(IID_IMarshal, m_pUnkMarshaler.p)
END_COM_MAP()
HRESULT FinalConstruct()
{
return CoCreateFreeThreadedMarshaler(
GetControllingUnknown(), &m_pUnkMarshaler.p);
}
void FinalRelease()
{
m_pUnkMarshaler.Release();
}
CComPtr<IUnknown> m_pUnkMarshaler;
// IStatusObj
public:
STDMETHOD(get_Status)(/*[out, retval]*/ LONG *pVal);
STDMETHOD(put_Status)(/*[in]*/ LONG newVal);
protected:
LONG m_Status;
CComAutoCriticalSection m_cs;
};
#endif //__STATUSOBJ_H_