windows-nt/Source/XPSP1/NT/admin/snapin/dfsadmin/dfsgui/mmcrep.h

283 lines
7 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
Module Name:
MmcRep.h
Abstract:
This module contains the definition for CMmcDfsReplica class. This is an class
for MMC display related calls for the thrid level node(the DfsReplica nodes)
--*/
#if !defined(AFX_MMCDFSREPLICA_H__6A7EDAC4_3FAC_11D1_AA1C_00C06C00392D__INCLUDED_)
#define AFX_MMCDFSREPLICA_H__6A7EDAC4_3FAC_11D1_AA1C_00C06C00392D__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#include "DfsCore.h"
#include "MmcDispl.h"
#include "MmcRoot.h"
#include "MmcJP.h"
#include "NewFrs.h"
class CMmcDfsReplica : public CMmcDisplay
{
public:
CMmcDfsReplica(
IDfsReplica* i_pReplicaObject,
CMmcDfsJunctionPoint* i_pJPObject
);
CMmcDfsReplica(
IDfsReplica* i_pReplicaObject,
CMmcDfsRoot* i_pJPObject
);
virtual ~CMmcDfsReplica();
// For adding context menu items
STDMETHOD(AddMenuItems)(
IN LPCONTEXTMENUCALLBACK i_lpContextMenuCallback,
IN LPLONG i_lpInsertionAllowed
);
// For taking action on a context menu selection.
STDMETHOD(Command)(
IN LONG i_lCommandID
);
// Set the headers for the listview (in the result pane) column
STDMETHOD(SetColumnHeader)(
IN LPHEADERCTRL2 i_piHeaderControl
);
// Return the requested display information for the Result Pane
STDMETHOD(GetResultDisplayInfo)(
IN OUT LPRESULTDATAITEM io_pResultDataItem
);
// Return the requested display information for the Scope Pane
STDMETHOD(GetScopeDisplayInfo)(
IN OUT LPSCOPEDATAITEM io_pScopeDataItem
) { return S_OK; }
// Add items(or folders), if any to the Scope Pane
STDMETHOD(EnumerateScopePane)(
IN LPCONSOLENAMESPACE i_lpConsoleNameSpace,
IN HSCOPEITEM i_hParent
) { return S_OK; }
// Add items(or folders), if any to the Result Pane
STDMETHOD(EnumerateResultPane)(
IN OUT IResultData* io_pResultData
) { return S_OK; }
// Set the console verb settings. Change the state, decide the default verb, etc
STDMETHOD(SetConsoleVerbs)(
IN LPCONSOLEVERB i_lpConsoleVerb
);
// Add an item to the result pane
STDMETHOD(AddItemToResultPane)(
IN IResultData* i_lpResultData
);
// Checks whether the object has pages to display
STDMETHOD(QueryPagesFor)(
) { return S_FALSE; };
// Creates and passes back the pages to be displayed
STDMETHOD(CreatePropertyPages)(
IN LPPROPERTYSHEETCALLBACK i_lpPropSheetCallback,
IN LONG_PTR i_lNotifyHandle
) { return E_UNEXPECTED; };
// Used to notify the object that it's properties have changed
STDMETHOD(PropertyChanged)(
) { return E_UNEXPECTED; };
// Used to set the result view description bar text
STDMETHOD(SetDescriptionBarText)(
IN LPRESULTDATA i_lpResultData
)
{
RETURN_INVALIDARG_IF_NULL(i_lpResultData);
return i_lpResultData->SetDescBarText(NULL);
}
STDMETHOD(SetStatusText)(
IN LPCONSOLE2 i_lpConsole
)
{
RETURN_INVALIDARG_IF_NULL(i_lpConsole);
return i_lpConsole->SetStatusText(m_bstrStatusText);
}
// MMCN_DBLCLICK invoke the open ctxmenu.
STDMETHOD(DoDblClick)(
) { (void) OnOpen(); return S_OK; }
// Delete the current item.
STDMETHOD(DoDelete)(
);
// Remove a replica
STDMETHOD(RemoveReplica)(
);
// Remove a replica
STDMETHOD(OnRemoveReplica)(
);
// confirm removal of replica
STDMETHOD(ConfirmOperationOnDfsTarget)(int idString);
// Check the replica status
STDMETHOD(OnCheckStatus)(
);
// Handle a select event for the node. Handle only toolbar related
// activities here
STDMETHOD(ToolbarSelect)(
IN const LONG i_lArg,
IN IToolbar* i_pToolBar
);
// Handle a click on the toolbar
STDMETHOD(ToolbarClick)(
IN const LPCONTROLBAR i_pControlbar,
IN const LPARAM i_lParam
);
STDMETHOD(TakeReplicaOffline)(
);
STDMETHOD(ViewChange)(
IResultData* i_pResultData,
LONG_PTR i_lHint
);
DISPLAY_OBJECT_TYPE GetDisplayObjectType()
{ return DISPLAY_OBJECT_TYPE_REPLICA; }
HRESULT CreateToolbar(
IN const LPCONTROLBAR i_pControlbar,
IN const LPEXTENDCONTROLBAR i_lExtendControlbar,
OUT IToolbar** o_pToolBar
);
HRESULT OnRefresh(
) { return(E_NOTIMPL); }
HRESULT OnReplicate();
HRESULT OnStopReplication(BOOL bConfirm = FALSE);
HRESULT GetReplicationInfo();
HRESULT GetReplicationInfoEx(CAlternateReplicaInfo** o_ppInfo);
HRESULT ShowReplicationInfo(IReplicaSet* i_piReplicaSet);
HRESULT GetBadMemberInfo(
IN IReplicaSet* i_piReplicaSet,
IN BSTR i_bstrServerName,
OUT BSTR* o_pbstrDnsHostName,
OUT BSTR* o_pbstrRootPath);
HRESULT DeleteBadFRSMember(
IN IReplicaSet* i_piReplicaSet,
IN BSTR i_bstrDisplayName,
IN HRESULT i_hres);
HRESULT AddFRSMember(
IN IReplicaSet* i_piReplicaSet,
IN BSTR i_bstrDnsHostName,
IN BSTR i_bstrRootPath,
IN BSTR i_bstrStagingPath);
HRESULT DeleteFRSMember(
IN IReplicaSet* i_piReplicaSet,
IN BSTR i_bstrDnsHostName,
IN BSTR i_bstrRootPath);
HRESULT RemoveReplicaFromSet();
HRESULT AllowFRSMemberDeletion(BOOL* pbRepSetExist);
// Internal methods
private:
friend class CMmcDfsRoot;
HRESULT OnOpen();
STDMETHOD(CleanScopeChildren)() { return S_OK; }
STDMETHOD(CleanResultChildren)() { return S_OK; }
STDMETHOD(GetEntryPath)(BSTR* o_pbstrEntryPath) { return E_NOTIMPL;}
void _UpdateThisItem();
// Constants, Statics, etc
public:
static const int m_iIMAGE_OFFSET;
CComBSTR m_bstrServerName;
CComBSTR m_bstrShareName;
CComBSTR m_bstrDisplayName; // Display name of the current Replica
long m_lReplicaState;
private:
HRESULTITEM m_hResultItem; // Resultitem handle
CComPtr<IResultData> m_pResultData;
CComPtr<IDfsReplica> m_pDfsReplicaObject;
CMmcDfsJunctionPoint* m_pDfsParentJP;
CMmcDfsRoot* m_pDfsParentRoot;
BOOL m_bFRSMember;
CAlternateReplicaInfo* m_pRepInfo;
CComBSTR m_bstrStatusText;
CComBSTR m_bstrFRSColumnText;
};
#endif // !defined(AFX_MMCDFSREPLICA_H__6A7EDAC4_3FAC_11D1_AA1C_00C06C00392D__INCLUDED_)