|
|
//+---------------------------------------------------------------------------
//
// 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 <catalog.hxx>
#include "catadmin.hxx"
//
// forward declarations
//
class CCatAdm; typedef CComObject<CCatAdm> CatAdmObject; interface IHTMLDocument2;
//+---------------------------------------------------------------------------
//
// Class: CMachineAdm
//
// Purpose: Index Server administration interface
//
// History: 12-10-97 mohamedn created
//
//----------------------------------------------------------------------------
class ATL_NO_VTABLE CMachineAdm : public CComObjectRootEx<CComMultiThreadModel>, public CComCoClass<CMachineAdm, &CLSID_AdminIndexServer>, public IObjectSafetyImpl<CMachineAdm>, public IObjectWithSiteImpl<CMachineAdm>, public ISupportErrorInfo, public IDispatchImpl<IAdminIndexServer, &IID_IAdminIndexServer, &LIBID_CIODMLib> { public:
CMachineAdm();
ULONG InternalAddRef(); ULONG InternalRelease();
void IncObjectCount() { _cMinRefCountToDestroy++; } void DecObjectCount() { _cMinRefCountToDestroy--; }
//
// internal methods
//
void Initialize(); void SetErrorInfo( HRESULT hRes ); void GetCatalogAutomationObject(XPtr<CCatalogAdmin> & xCatAdmin, XInterface<CatAdmObject> & 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<CMachineAdmin> _xMachineAdmin; CCountedIDynArray<CatAdmObject> _aICatAdmin;
//
// to control when objects are deleted.
//
enum eCiOdmState { CIODM_NOT_INITIALIZED, CIODM_INITIALIZED, CIODM_DESTROY };
eCiOdmState _eCurrentState; LONG _cMinRefCountToDestroy;
};
|