//--------------------------------------------------------------------------- // // 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; };