//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1997 - 2000 // // File: H N C F G M G R . H // // Contents: CHNetCfgMgr declarations // // Notes: // // Author: jonburs 23 May 2000 // //---------------------------------------------------------------------------- #pragma once class ATL_NO_VTABLE CHNetCfgMgr : public CComObjectRootEx, public CComCoClass, public IHNetCfgMgr, public IHNetBridgeSettings, public IHNetFirewallSettings, public IHNetIcsSettings, public IHNetProtocolSettings { protected: // // Connection to \\.\Root\Microsoft\HomeNet WMI namespace. Obtained // through IWbemLocator::ConnectServer // IWbemServices *m_piwsHomenet; // // Policy check object // INetConnectionUiUtilities *m_pNetConnUiUtil; // // Netman update object // INetConnectionHNetUtil *m_pNetConnHNetUtil; // // Commonly used BSTRs. // BSTR m_bstrWQL; // // Copies an HNet_FirewallLoggingSettings instance to an // HNET_FW_LOGGING_SETTINGS struct // HRESULT CopyLoggingInstanceToStruct( IWbemClassObject *pwcoInstance, HNET_FW_LOGGING_SETTINGS *pfwSettings ); // // Copies an HNET_FW_LOGGING_SETTINGS struct to // an HNet_FirewallLoggingSettings instance // HRESULT CopyStructToLoggingInstance( HNET_FW_LOGGING_SETTINGS *pfwSettings, IWbemClassObject *pwcoInstance ); // // Installs the bridge protocol and miniport // HRESULT InstallBridge( GUID *pguid, INetCfg *pnetcfgExisting ); // // Creates the appropriate instances for a connection that there is // no record of in the store. The returned instances must be commited // (through IWbemServices::PutInstance) // HRESULT CreateConnectionAndPropertyInstances( GUID *pGuid, BOOLEAN fLanConnection, LPCWSTR pszwName, IWbemClassObject **ppwcoConnection, IWbemClassObject **ppwcoProperties ); // // Helper routine to perform policy checks. Returns // TRUE if this action is prohibited. // BOOLEAN ProhibitedByPolicy( DWORD dwPerm ); // // Helper routine to update netman that some homenet // property changed // HRESULT UpdateNetman(); public: BEGIN_COM_MAP(CHNetCfgMgr) COM_INTERFACE_ENTRY(IHNetCfgMgr) COM_INTERFACE_ENTRY(IHNetBridgeSettings) COM_INTERFACE_ENTRY(IHNetFirewallSettings) COM_INTERFACE_ENTRY(IHNetIcsSettings) COM_INTERFACE_ENTRY(IHNetProtocolSettings) END_COM_MAP() DECLARE_REGISTRY_RESOURCEID(IDR_HNETCFG) DECLARE_PROTECT_FINAL_CONSTRUCT() // // Inline constructor. // CHNetCfgMgr() { m_piwsHomenet = NULL; m_bstrWQL = NULL; m_pNetConnUiUtil = NULL; m_pNetConnHNetUtil = NULL; }; // // Atl methods // HRESULT FinalConstruct(); HRESULT FinalRelease(); // // IHNetCfgMgr methods // STDMETHODIMP GetIHNetConnectionForINetConnection( INetConnection *pNetConnection, IHNetConnection **ppHNetConnection ); STDMETHODIMP GetIHNetConnectionForGuid( GUID *pGuid, BOOLEAN fLanConnection, BOOLEAN fCreateEntries, IHNetConnection **ppHNetConnection ); // // IHNetBridgeSettings methods // STDMETHODIMP EnumBridges( IEnumHNetBridges **ppEnum ); STDMETHODIMP CreateBridge( IHNetBridge **ppHNetBridge, INetCfg *pnetcfgExisting ); STDMETHODIMP DestroyAllBridges( ULONG *pcBridges, INetCfg *pnetcfgExisting ); // // IHNetFirewallSettings methods // STDMETHODIMP EnumFirewalledConnections( IEnumHNetFirewalledConnections **ppEnum ); STDMETHODIMP GetFirewallLoggingSettings( HNET_FW_LOGGING_SETTINGS **ppSettings ); STDMETHODIMP SetFirewallLoggingSettings( HNET_FW_LOGGING_SETTINGS *pSettings ); STDMETHODIMP DisableAllFirewalling( ULONG *pcFirewalledConnections ); // // IHNetIcsSettings methods // STDMETHODIMP EnumIcsPublicConnections( IEnumHNetIcsPublicConnections **ppEnum ); STDMETHODIMP EnumIcsPrivateConnections( IEnumHNetIcsPrivateConnections **ppEnum ); STDMETHODIMP DisableIcs( ULONG *pcIcsPublicConnections, ULONG *pcIcsPrivateConnections ); STDMETHODIMP GetPossiblePrivateConnections( IHNetConnection *pConn, ULONG *pcPrivateConnections, IHNetConnection **pprgPrivateConnections[], LONG *pxCurrentPrivate ); STDMETHODIMP GetAutodialSettings( BOOLEAN *pfAutodialEnabled ); STDMETHODIMP SetAutodialSettings( BOOLEAN fEnableAutodial ); STDMETHODIMP GetDhcpEnabled( BOOLEAN *pfDhcpEnabled ); STDMETHODIMP SetDhcpEnabled( BOOLEAN fEnableDhcp ); STDMETHODIMP GetDhcpScopeSettings( DWORD *pdwScopeAddress, DWORD *pdwScopeMask ); STDMETHODIMP SetDhcpScopeSettings( DWORD dwScopeAddress, DWORD dwScopeMask ); STDMETHODIMP EnumDhcpReservedAddresses( IEnumHNetPortMappingBindings **ppEnum ); STDMETHODIMP GetDnsEnabled( BOOLEAN *pfDnsEnabled ); STDMETHODIMP SetDnsEnabled( BOOLEAN fEnableDns ); // // IHNetProtocolSettings methods // STDMETHODIMP EnumApplicationProtocols( BOOLEAN fEnabledOnly, IEnumHNetApplicationProtocols **ppEnum ); STDMETHODIMP CreateApplicationProtocol( OLECHAR *pszwName, UCHAR ucOutgoingIPProtocol, USHORT usOutgoingPort, USHORT uscResponses, HNET_RESPONSE_RANGE rgResponses[], IHNetApplicationProtocol **ppProtocol ); STDMETHODIMP EnumPortMappingProtocols( IEnumHNetPortMappingProtocols **ppEnum ); STDMETHODIMP CreatePortMappingProtocol( OLECHAR *pszwName, UCHAR ucIPProtocol, USHORT usPort, IHNetPortMappingProtocol **ppProtocol ); STDMETHODIMP FindPortMappingProtocol( GUID *pGuid, IHNetPortMappingProtocol **ppProtocol ); }; class CHNetCfgMgrChild : public CHNetCfgMgr { protected: // Do our initialization work in Initialize() instead of // FinalConstruct HRESULT FinalConstruct() { // Do nothing return S_OK; } public: HRESULT Initialize( IWbemServices *piwsHomenet ) { HRESULT hr = S_OK; // // Allocate the commonly used BSTRs // m_bstrWQL = SysAllocString(c_wszWQL); if (NULL == m_bstrWQL) { hr = E_OUTOFMEMORY; } else { m_piwsHomenet = piwsHomenet; m_piwsHomenet->AddRef(); } return hr; }; };