//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1997-1998 // // File: MacAdmin.hxx // // Contents: Declaration of the CMachineAdm // // Classes: CMachineAdm // // History: 12-10-97 mohamedn created // //---------------------------------------------------------------------------- #pragma once #include #include "catadmin.hxx" // // forward declarations // class CCatAdm; typedef CComObject CatAdmObject; interface IHTMLDocument2; //+--------------------------------------------------------------------------- // // Class: CMachineAdm // // Purpose: Index Server administration interface // // History: 12-10-97 mohamedn created // //---------------------------------------------------------------------------- class ATL_NO_VTABLE CMachineAdm : public CComObjectRootEx, public CComCoClass, public IObjectSafetyImpl, public IObjectWithSiteImpl, public ISupportErrorInfo, public IDispatchImpl { public: CMachineAdm(); ULONG InternalAddRef(); ULONG InternalRelease(); void IncObjectCount() { _cMinRefCountToDestroy++; } void DecObjectCount() { _cMinRefCountToDestroy--; } // // internal methods // void Initialize(); void SetErrorInfo( HRESULT hRes ); void GetCatalogAutomationObject(XPtr & xCatAdmin, XInterface & xICatAdm ); BOOL CatalogExists( WCHAR const * pCatName, WCHAR const * pCatLocation ); BOOL IsCurrentObjectValid() { return (CIODM_INITIALIZED == _eCurrentState); } IDispatch * GetIDisp( unsigned i ); DECLARE_REGISTRY_RESOURCEID(IDR_MACHINEADM) BEGIN_COM_MAP(CMachineAdm) COM_INTERFACE_ENTRY(IAdminIndexServer) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY_IMPL(IObjectSafety) COM_INTERFACE_ENTRY_IMPL(IObjectWithSite) COM_INTERFACE_ENTRY(ISupportErrorInfo) END_COM_MAP() // ISupportsErrorInfo STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid); // IAdminIndexServer public: STDMETHOD(Stop)(); STDMETHOD(Start)(); STDMETHOD(Pause)(); STDMETHOD(IsPaused)(VARIANT_BOOL *pfIsPaused); STDMETHOD(Continue)(); STDMETHOD(IsRunning)(VARIANT_BOOL *pfIsRunning); STDMETHOD(EnableCI) ( VARIANT_BOOL fAutoStart ); STDMETHOD(GetCatalog)( IDispatch ** pIDisp ); STDMETHOD(FindNextCatalog)( VARIANT_BOOL * fFound); STDMETHOD(FindFirstCatalog)( VARIANT_BOOL * fFound); STDMETHOD(GetCatalogByName)(BSTR bstrCatalogName, IDispatch **pDisp); STDMETHOD(AddCatalog)(BSTR bstrCatName, BSTR bstrCatLocation, IDispatch **pIDsip); STDMETHOD(RemoveCatalog)(BSTR bstrCatName, VARIANT_BOOL fDelDirectory); STDMETHOD(get_MachineName)( BSTR *pVal); STDMETHOD(put_MachineName)( BSTR newVal); STDMETHOD(SetLongProperty) (BSTR bstrPropName, LONG lPropVal ); STDMETHOD(GetLongProperty) (BSTR bstrPropName, LONG * plPropVal ); STDMETHOD(SetSZProperty) (BSTR bstrPropName, BSTR bstrPropVal); STDMETHOD(GetSZProperty) (BSTR bstrPropName, BSTR * bstrPropVal); void SafeForScripting(void); private: HRESULT IUnknown_QueryService(IUnknown* punk, REFGUID guidService, REFIID riid, void **ppvOut); HRESULT GetHTMLDoc2(IUnknown *punk, IHTMLDocument2 **ppHtmlDoc); HRESULT LocalZoneCheckPath(LPCWSTR bstrPath); HRESULT LocalZoneCheck(IUnknown *punkSite); private: CMutexSem _mtx; DWORD _cEnumIndex; WCHAR _wcsMachineName[MAX_PATH]; XPtr _xMachineAdmin; CCountedIDynArray _aICatAdmin; // // to control when objects are deleted. // enum eCiOdmState { CIODM_NOT_INITIALIZED, CIODM_INITIALIZED, CIODM_DESTROY }; eCiOdmState _eCurrentState; LONG _cMinRefCountToDestroy; };