176 lines
3.7 KiB
C++
176 lines
3.7 KiB
C++
|
//---------------------------------------------------------------------------
|
||
|
//
|
||
|
// Microsoft Windows
|
||
|
// Copyright (C) Microsoft Corporation, 1995
|
||
|
//
|
||
|
// File: cserv.hxx
|
||
|
//
|
||
|
// Contents: Contains definitions for the following objects
|
||
|
// CWinNTService, CWinNTServiceConfig, and
|
||
|
// CWinNTServiceControl.
|
||
|
//
|
||
|
//
|
||
|
// History: 12/11/95 ramv (Ram Viswanathan) Created.
|
||
|
//
|
||
|
//----------------------------------------------------------------------------
|
||
|
|
||
|
//
|
||
|
//service specific constants
|
||
|
//
|
||
|
|
||
|
//
|
||
|
//states in which the service is pending
|
||
|
//
|
||
|
|
||
|
#define NOTPENDING 0
|
||
|
#define PENDING_START 1
|
||
|
#define PENDING_STOP 2
|
||
|
#define PENDING_PAUSE 3
|
||
|
#define PENDING_CONTINUE 4
|
||
|
|
||
|
//
|
||
|
// service control codes
|
||
|
//
|
||
|
#define WINNT_START_SERVICE 1
|
||
|
#define WINNT_STOP_SERVICE 2
|
||
|
#define WINNT_PAUSE_SERVICE 3
|
||
|
#define WINNT_CONTINUE_SERVICE 4
|
||
|
|
||
|
#define SERVICE_ERROR 0x00000008
|
||
|
|
||
|
class CWinNTFSServiceConfig;
|
||
|
class CWinNTFSServiceControl;
|
||
|
class CPropertyCache;
|
||
|
|
||
|
class CWinNTService: INHERIT_TRACKING,
|
||
|
public ISupportErrorInfo,
|
||
|
public IADsService,
|
||
|
public IADsServiceOperations,
|
||
|
public IADsPropertyList,
|
||
|
public CCoreADsObject,
|
||
|
public INonDelegatingUnknown,
|
||
|
public IADsExtension
|
||
|
{
|
||
|
|
||
|
public:
|
||
|
|
||
|
/* IUnknown methods */
|
||
|
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj);
|
||
|
|
||
|
STDMETHODIMP_(ULONG) AddRef(void);
|
||
|
|
||
|
STDMETHODIMP_(ULONG) Release(void);
|
||
|
|
||
|
// INonDelegatingUnknown methods
|
||
|
|
||
|
STDMETHOD(NonDelegatingQueryInterface)(THIS_
|
||
|
const IID&,
|
||
|
void **
|
||
|
);
|
||
|
|
||
|
DECLARE_NON_DELEGATING_REFCOUNTING
|
||
|
|
||
|
DECLARE_IDispatch_METHODS;
|
||
|
|
||
|
DECLARE_ISupportErrorInfo_METHODS;
|
||
|
|
||
|
DECLARE_IADs_METHODS;
|
||
|
|
||
|
DECLARE_IADsService_METHODS;
|
||
|
|
||
|
DECLARE_IADsServiceOperations_METHODS;
|
||
|
|
||
|
DECLARE_IADsPropertyList_METHODS;
|
||
|
|
||
|
DECLARE_IADsExtension_METHODS;
|
||
|
|
||
|
//
|
||
|
// constructor and destructor
|
||
|
//
|
||
|
CWinNTService();
|
||
|
|
||
|
~CWinNTService();
|
||
|
|
||
|
static
|
||
|
HRESULT
|
||
|
Create(
|
||
|
LPTSTR lpszADsParent,
|
||
|
LPTSTR pszDomainName,
|
||
|
LPTSTR pszServerName,
|
||
|
LPTSTR pszServiceName,
|
||
|
DWORD dwObject,
|
||
|
REFIID riid,
|
||
|
CWinNTCredentials& Credentials,
|
||
|
LPVOID * ppvoid
|
||
|
);
|
||
|
|
||
|
static
|
||
|
HRESULT
|
||
|
CWinNTService::AllocateServiceObject(
|
||
|
LPTSTR pszServerName,
|
||
|
LPTSTR pszServiceName,
|
||
|
CWinNTService ** ppService
|
||
|
);
|
||
|
|
||
|
|
||
|
HRESULT
|
||
|
WinNTOpenService(
|
||
|
DWORD dwSCMDesiredAccess,
|
||
|
DWORD dwSrvDesiredAccess
|
||
|
);
|
||
|
|
||
|
HRESULT
|
||
|
WinNTCloseService();
|
||
|
|
||
|
HRESULT
|
||
|
GetServiceConfigInfo(
|
||
|
LPQUERY_SERVICE_CONFIG *
|
||
|
);
|
||
|
|
||
|
HRESULT
|
||
|
WinNTControlService(
|
||
|
DWORD dwControl
|
||
|
);
|
||
|
|
||
|
HRESULT
|
||
|
EvalPendingOperation(
|
||
|
THIS_ DWORD dwOpPending,
|
||
|
DWORD dwStatusDone,
|
||
|
DWORD dwStatusPending,
|
||
|
LPSERVICE_STATUS pStatus,
|
||
|
DWORD *pdwRetval
|
||
|
);
|
||
|
|
||
|
STDMETHOD(ImplicitGetInfo)(void);
|
||
|
|
||
|
protected:
|
||
|
|
||
|
STDMETHOD(GetInfo)(THIS_ DWORD dwApiLevel, BOOL fExplicit) ;
|
||
|
|
||
|
// Called by GetInfo
|
||
|
|
||
|
STDMETHOD(UnMarshall)(THIS_ LPQUERY_SERVICE_CONFIG lpConfigInfo,
|
||
|
BOOL fExplicit) ;
|
||
|
|
||
|
HRESULT
|
||
|
WinNTAddService(void);
|
||
|
|
||
|
DWORD _dwWaitHint;
|
||
|
DWORD _dwCheckPoint;
|
||
|
DWORD _dwOpPending;
|
||
|
BOOL _fValidHandle; //keeps track of whether we are pending any operation
|
||
|
DWORD _dwTimeStarted;
|
||
|
|
||
|
LPWSTR _pszServiceName;
|
||
|
LPWSTR _pszPath;
|
||
|
LPWSTR _pszServerName;
|
||
|
|
||
|
SC_HANDLE _schSCManager;
|
||
|
SC_HANDLE _schService;
|
||
|
|
||
|
CAggregatorDispMgr * _pDispMgr;
|
||
|
CADsExtMgr FAR * _pExtMgr;
|
||
|
CPropertyCache * _pPropertyCache;
|
||
|
CWinNTCredentials _Credentials;
|
||
|
};
|