windows-nt/Source/XPSP1/NT/net/ias/sdo/sdoias/sdoserviceias.h

200 lines
5 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
///////////////////////////////////////////////////////////////////////////
//
// Copyright(C) 1997-1998 Microsoft Corporation all rights reserved.
//
// Module: sdoserviceias.h
//
// Project: Everest
//
// Description: SDO Machine Class Declaration
//
// Author: TLP 9/1/98
//
///////////////////////////////////////////////////////////////////////////
#ifndef _INC_SDO_SERVICE_IAS_H_
#define _INC_SDO_SERVICE_IAS_H_
#include "resource.h" // main symbols
#include <ias.h>
#include <sdoiaspriv.h>
#include "sdo.h"
#include <sdofactory.h>
#include "dsconnection.h"
// SCM command for IAS service reset
//
#define SERVICE_CONTROL_RESET 128
// Number of Service SDO properties
//
#define MAX_SERVICE_PROPERTIES 8
// IAS Service SDO Property Information
//
typedef struct _IAS_PROPERTY_INFO
{
LONG Id;
LPCWSTR lpszItemProgId;
LPCWSTR lpszDSContainerName;
} IAS_PROPERTY_INFO, *PIAS_PROPERTY_INFO;
/////////////////////////////////////////////////////////////////////////////
// CSdoServiceIAS
/////////////////////////////////////////////////////////////////////////////
class CSdoServiceIAS : public CSdo
{
public:
void getDataStoreObject(IDataStoreObject** obj) throw ()
{ (*obj = m_pDSObject)->AddRef(); }
////////////////////
// ATL Interface Map
////////////////////
BEGIN_COM_MAP(CSdoServiceIAS)
COM_INTERFACE_ENTRY(ISdo)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY_FUNC(IID_ISdoServiceControl, 0, &CSdoServiceIAS::QueryInterfaceInternal)
COM_INTERFACE_ENTRY_IID(__uuidof(SdoService), CSdoServiceIAS)
END_COM_MAP()
DECLARE_SDO_FACTORY(CSdoServiceIAS);
class CSdoServiceControlImpl :
public IDispatchImpl<ISdoServiceControl, &IID_ISdoServiceControl, &LIBID_SDOIASLib>
{
public:
CSdoServiceControlImpl(CSdoServiceIAS* pSdoServiceIAS);
~CSdoServiceControlImpl();
//////////////////////////////
// ISdoServiceControl Iterface
////////////////////////////////////////////////
// IUnknown methods - delegate to outer IUnknown
//////////////////////////////////////////////////////////////////////
STDMETHOD(QueryInterface)(REFIID riid, void **ppv)
{
if ( riid == IID_IDispatch )
{
*ppv = static_cast<IDispatch*>(this);
AddRef();
return S_OK;
}
else
{
return m_pSdoServiceIAS->QueryInterface(riid, ppv);
}
}
//////////////////////////////////////////////////////////////////////
STDMETHOD_(ULONG,AddRef)(void)
{
return m_pSdoServiceIAS->AddRef();
}
//////////////////////////////////////////////////////////////////////
STDMETHOD_(ULONG,Release)(void)
{
return m_pSdoServiceIAS->Release();
}
/////////////////////////////
// ISdoServiceControl Methods
//////////////////////////////////////////////////////////////////////
STDMETHOD(StartService)(void);
//////////////////////////////////////////////////////////////////////
STDMETHOD(StopService)(void);
//////////////////////////////////////////////////////////////////////
STDMETHOD(GetServiceStatus)(
/*[out]*/ LONG* pServiceStatus
);
//////////////////////////////////////////////////////////////////////
STDMETHOD(ResetService)(void);
private:
//////////////////////////////////////////////////////////////////////
HRESULT ControlIAS(DWORD dwControl);
//////////////////////////////////////////////////////////////////////
CSdoServiceIAS* m_pSdoServiceIAS;
};
/////////////////////////////////////////////////////////////////////////////
CSdoServiceIAS();
/////////////////////////////////////////////////////////////////////////////
~CSdoServiceIAS();
/////////////////////////////////////////////////////////////////////////////
HRESULT FinalInitialize(
/*[in]*/ bool fInitNew,
/*[in]*/ ISdoMachine* pAttachedMachine
);
private:
friend CSdoServiceControlImpl;
/////////////////////////////////////////////////////////////////////////////
CSdoServiceIAS(const CSdoServiceIAS& rhs);
CSdoServiceIAS& operator = (CSdoServiceIAS& rhs);
/////////////////////////////////////////////////////////////////////////////
HRESULT InitializeProperty(LONG Id);
LPCWSTR GetServiceName(void);
/////////////////////////////////////////////////////////////////////////////
static HRESULT WINAPI QueryInterfaceInternal(
void* pThis,
REFIID riid,
LPVOID* ppv,
DWORD_PTR dw
);
// Class that implements ISdoServiceControl
//
CSdoServiceControlImpl m_clsSdoServiceControlImpl;
// SCM Name of the service
//
_variant_t m_ServiceName;
// Attached machine
//
ISdoMachine* m_pAttachedMachine;
// Name of attached computer
//
BSTR m_bstrAttachedComputer;
// Property status - used for lazy property initialization
//
typedef enum _PROPERTY_STATUS
{
PROPERTY_UNINITIALIZED,
PROPERTY_INITIALIZED
} PROPERTY_STATUS;
PROPERTY_STATUS m_PropertyStatus[MAX_SERVICE_PROPERTIES];
};
#endif // _INC_IAS_SDO_SERVICE_H_