mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
4.2 KiB
130 lines
4.2 KiB
//+---------------------------------------------------------------------------
|
|
//
|
|
// 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;
|
|
|
|
};
|