186 lines
6.2 KiB
C++
186 lines
6.2 KiB
C++
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1997.
|
|
//
|
|
// File: M S C L I O B J . H
|
|
//
|
|
// Contents: Declaration of CMSClient and helper functions.
|
|
//
|
|
// Notes:
|
|
//
|
|
// Author: danielwe 25 Feb 1997
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#pragma once
|
|
#include <ncxbase.h>
|
|
#include <nceh.h>
|
|
#include <notifval.h>
|
|
#include <ncatlps.h>
|
|
#include "resource.h"
|
|
|
|
// constant defined in MSDN
|
|
static const c_cchMaxNetAddr = 80;
|
|
|
|
struct RPC_CONFIG_DATA
|
|
{
|
|
tstring strProt;
|
|
tstring strNetAddr;
|
|
tstring strEndPoint;
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// MSClient
|
|
|
|
class ATL_NO_VTABLE CMSClient :
|
|
public INetCfgComponentControl,
|
|
public INetCfgComponentSetup,
|
|
public INetCfgComponentNotifyGlobal,
|
|
public INetCfgComponentPropertyUi,
|
|
public CComObjectRoot,
|
|
public CComCoClass<CMSClient,&CLSID_CMSClient>
|
|
{
|
|
public:
|
|
CMSClient();
|
|
~CMSClient();
|
|
|
|
BEGIN_COM_MAP(CMSClient)
|
|
COM_INTERFACE_ENTRY(INetCfgComponentControl)
|
|
COM_INTERFACE_ENTRY(INetCfgComponentSetup)
|
|
COM_INTERFACE_ENTRY(INetCfgComponentNotifyGlobal)
|
|
COM_INTERFACE_ENTRY(INetCfgComponentPropertyUi)
|
|
END_COM_MAP()
|
|
// DECLARE_NOT_AGGREGATABLE(CMSClient)
|
|
// Remove the comment from the line above if you don't want your object to
|
|
// support aggregation. The default is to support it
|
|
|
|
DECLARE_REGISTRY_RESOURCEID(IDR_REG_MSCLICFG)
|
|
|
|
// INetCfgComponentControl
|
|
STDMETHOD (Initialize) (
|
|
IN INetCfgComponent* pIComp,
|
|
IN INetCfg* pINetCfg,
|
|
IN BOOL fInstalling);
|
|
STDMETHOD (ApplyRegistryChanges) ();
|
|
STDMETHOD (ApplyPnpChanges) (
|
|
IN INetCfgPnpReconfigCallback* pICallback);
|
|
STDMETHOD (CancelChanges) ();
|
|
STDMETHOD (Validate) ();
|
|
|
|
// INetCfgComponentSetup
|
|
STDMETHOD (Install) (DWORD dwSetupFlags);
|
|
STDMETHOD (Upgrade) (DWORD dwSetupFlags,
|
|
DWORD dwUpgradeFomBuildNo);
|
|
STDMETHOD (ReadAnswerFile) (PCWSTR pszAnswerFile,
|
|
PCWSTR pszAnswerSection);
|
|
STDMETHOD (Removing) ();
|
|
|
|
|
|
// INetCfgComponentNotifyGlobal
|
|
STDMETHOD (GetSupportedNotifications) (DWORD* pdwNotificationFlag );
|
|
STDMETHOD (SysQueryBindingPath) (DWORD dwChangeFlag, INetCfgBindingPath* pncbp);
|
|
STDMETHOD (SysQueryComponent) (DWORD dwChangeFlag, INetCfgComponent* pncc);
|
|
STDMETHOD (SysNotifyBindingPath) (DWORD dwChangeFlag, INetCfgBindingPath* pncbp);
|
|
STDMETHOD (SysNotifyComponent) (DWORD dwChangeFlag, INetCfgComponent* pncc);
|
|
|
|
// INetCfgProperties
|
|
STDMETHOD (QueryPropertyUi) (
|
|
IN IUnknown* pUnk) { return S_OK; }
|
|
STDMETHOD (SetContext) (
|
|
IN IUnknown* pUnk) {return S_OK;}
|
|
STDMETHOD (MergePropPages) (
|
|
IN OUT DWORD* pdwDefPages,
|
|
OUT LPBYTE* pahpspPrivate,
|
|
OUT UINT* pcPrivate,
|
|
IN HWND hwndParent,
|
|
OUT PCWSTR* pszStartPage);
|
|
STDMETHOD (ValidateProperties) (
|
|
HWND hwndSheet);
|
|
STDMETHOD (CancelProperties) ();
|
|
STDMETHOD (ApplyProperties) ();
|
|
|
|
public:
|
|
|
|
// Accessors for RPC data
|
|
const RPC_CONFIG_DATA *RPCData() const
|
|
{return (const RPC_CONFIG_DATA *)&m_rpcData;};
|
|
RPC_CONFIG_DATA *RPCDataRW() {return &m_rpcData;};
|
|
|
|
// Accessors for Browser data
|
|
PCWSTR SzGetBrowserDomainList()
|
|
{return const_cast<PCWSTR>(m_szDomainList);};
|
|
VOID SetBrowserDomainList(PWSTR szNewList);
|
|
|
|
// Dirty bit functions
|
|
VOID SetRPCDirty() {m_fRPCChanges = TRUE;};
|
|
VOID SetBrowserDirty() {m_fBrowserChanges = TRUE;};
|
|
|
|
// RPC config dialog members
|
|
RPC_CONFIG_DATA m_rpcData; // data used to handle the RPC
|
|
// configuration dialog
|
|
// Private state info
|
|
private:
|
|
enum ESRVSTATE
|
|
{
|
|
eSrvNone = 0,
|
|
eSrvEnable = 1,
|
|
eSrvDisable = 2,
|
|
};
|
|
|
|
INetCfgComponent *m_pncc; // Place to keep my component
|
|
// object
|
|
INetCfg *m_pnc; // Place to keep my INetCfg object
|
|
BOOL m_fRPCChanges; // TRUE if RPC config settings have
|
|
// changed (dialog)
|
|
BOOL m_fBrowserChanges; // Same for browser dialog
|
|
BOOL m_fOneTimeInstall; // TRUE if need to perform one-time
|
|
// install tasks
|
|
BOOL m_fUpgrade; // TRUE if upgrading with answer
|
|
// file
|
|
BOOL m_fUpgradeFromWks; // TRUE if we are upgrading from WKS
|
|
BOOL m_fRemoving; // TRUE we are being removed
|
|
ESRVSTATE m_eSrvState;
|
|
|
|
HKEY m_hkeyRPCName; // NameService key
|
|
|
|
// Browser config dialog members
|
|
PWSTR m_szDomainList; // null-separated, double null
|
|
// terminated list of OtherDomains
|
|
|
|
// number of property sheet pages
|
|
enum PAGES
|
|
{
|
|
c_cPages = 1
|
|
};
|
|
|
|
// Generic dialog data
|
|
CPropSheetPage * m_apspObj[c_cPages];// pointer to each of the prop
|
|
// sheet page objects
|
|
|
|
tstring m_strBrowserParamsRestoreFile;
|
|
tstring m_strNetLogonParamsRestoreFile;
|
|
|
|
HRESULT HrApplyChanges(VOID);
|
|
HRESULT HrSetupPropSheets(HPROPSHEETPAGE **pahpsp, INT cPages);
|
|
VOID CleanupPropPages(VOID);
|
|
HRESULT HrProcessAnswerFile(PCWSTR pszAnswerFile, PCWSTR pszAnswerSection);
|
|
HRESULT HrRestoreRegistry(VOID);
|
|
HRESULT HrSetNetLogonDependencies(VOID);
|
|
|
|
// Dialog access functions for RPC config
|
|
HRESULT HrGetRPCRegistryInfo(VOID);
|
|
HRESULT HrSetRPCRegistryInfo(VOID);
|
|
|
|
// Dialog access functions for Browser config
|
|
HRESULT HrGetBrowserRegistryInfo(VOID);
|
|
HRESULT HrSetBrowserRegistryInfo(VOID);
|
|
|
|
// Help function used by NotifyBindingPath
|
|
BOOL FIsComponentOnPath(INetCfgBindingPath * pncbp, PCWSTR szCompId);
|
|
};
|
|
|
|
HRESULT HrInstallDfs(VOID);
|
|
HRESULT HrEnableBrowserService(VOID);
|
|
HRESULT HrDisableBrowserService(VOID);
|