//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (c) Microsoft Corporation. All rights reserved. // // File: netcon.idl // //---------------------------------------------------------------------------- cpp_quote("//+-------------------------------------------------------------------------") cpp_quote("//") cpp_quote("// Microsoft Windows") cpp_quote("// Copyright (c) Microsoft Corporation. All rights reserved.") cpp_quote("//") cpp_quote("//--------------------------------------------------------------------------") cpp_quote("#if ( _MSC_VER >= 800 )") cpp_quote("#pragma warning(disable:4201)") cpp_quote("#endif") #ifndef DO_NO_IMPORTS import "oaidl.idl"; import "unknwn.idl"; import "wtypes.idl"; import "prsht.idl"; #endif cpp_quote("") cpp_quote("EXTERN_C const CLSID CLSID_ConnectionManager;") cpp_quote("EXTERN_C const CLSID CLSID_ConnectionCommonUi;") cpp_quote("EXTERN_C const CLSID CLSID_NetSharingManager;") cpp_quote("") cpp_quote("//These strings reference the HKEY_CURRENT_USER registry which") cpp_quote("//retains whether shortcuts are created on the desktop.") cpp_quote("#define NETCON_HKEYCURRENTUSERPATH TEXT(\"Software\\\\Microsoft\\\\Windows NT\\\\CurrentVersion\\\\Network\\\\Network Connections\")") cpp_quote("#define NETCON_DESKTOPSHORTCUT TEXT(\"DesktopShortcut\")") cpp_quote("#define NETCON_MAX_NAME_LEN 246") cpp_quote("") // Reserved GUIDS for our use // // C08956A0-1CD3-11D1-B1C5-00805FC1270E IID_IEnumNetConnection // C08956A1-1CD3-11D1-B1C5-00805FC1270E IID_INetConnection // C08956A2-1CD3-11D1-B1C5-00805FC1270E IID_INetConnectionManager // C08956A3-1CD3-11D1-B1C5-00805FC1270E IID_INetConnectionConnectUi // C08956A4-1CD3-11D1-B1C5-00805FC1270E IID_INetConnectionPropertyUi // C08956A5-1CD3-11D1-B1C5-00805FC1270E IID_INetConnectionCommonUi // C08956A6-1CD3-11D1-B1C5-00805FC1270E IID_INetLanConnectionUiInfo // ... // C08956B0-1CD3-11D1-B1C5-00805FC1270E IID_IEnumNetSharingPortMapping // C08956B1-1CD3-11D1-B1C5-00805FC1270E IID_INetSharingPortMapping // C08956B2-1CD3-11D1-B1C5-00805FC1270E // C08956B3-1CD3-11D1-B1C5-00805FC1270E // C08956B4-1CD3-11D1-B1C5-00805FC1270E IID_IEnumNetSharingPublicConnection // C08956B5-1CD3-11D1-B1C5-00805FC1270E IID_IEnumNetSharingPrivateConnection // C08956B6-1CD3-11D1-B1C5-00805FC1270E IID_INetSharingConfiguration // C08956B7-1CD3-11D1-B1C5-00805FC1270E IID_INetSharingManager // C08956B8-1CD3-11D1-B1C5-00805FC1270E IID_IEnumNetSharingEveryConnection // C08956B9-1CD3-11D1-B1C5-00805FC1270E IID_INetConnectionPropertyUi2 // C08956BA-1CD3-11D1-B1C5-00805FC1270E IID_INetConnectionManagerEvents // ... // C08956FE-1CD3-11D1-B1C5-00805FC1270E // C08956FF-1CD3-11D1-B1C5-00805FC1270E // C0895700-1CD3-11D1-B1C5-00805FC1270E // interface IEnumNetConnection; interface INetConnection; interface INetConnectionManager; interface INetConnectionConnectUi; interface INetConnectionPropertyUi; interface INetConnectionPropertyUi2; interface INetConnectionCommonUi; interface INetLanConnectionUiInfo; interface INetConnectionManagerEvents; interface IEnumNetSharingPortMapping; interface INetSharingPortMapping; interface IEnumNetSharingPublicConnection; interface IEnumNetSharingPrivateConnection; interface IEnumNetSharingEveryConnection; interface INetSharingConfiguration; interface INetSharingManager; //+--------------------------------------------------------------------------- // IEnumNetConnection - An enumerator for INetConnection objects. // [ object, uuid(C08956A0-1CD3-11D1-B1C5-00805FC1270E), pointer_default(unique) ] interface IEnumNetConnection : IUnknown { HRESULT Next( [in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] INetConnection** rgelt, [out] ULONG* pceltFetched); HRESULT Skip( [in] ULONG celt); HRESULT Reset(); HRESULT Clone( [out] IEnumNetConnection** ppenum); }; //+--------------------------------------------------------------------------- // INetConnection - // [ object, uuid(C08956A1-1CD3-11D1-B1C5-00805FC1270E), pointer_default(unique) ] interface INetConnection : IUnknown { typedef enum tagNETCON_CHARACTERISTIC_FLAGS { NCCF_NONE = 0x0000, // No special characteristics NCCF_ALL_USERS = 0x0001, // Connection is available to all users NCCF_ALLOW_DUPLICATION = 0x0002, // Connection is duplicable NCCF_ALLOW_REMOVAL = 0x0004, // Connection is removable NCCF_ALLOW_RENAME = 0x0008, // Connection can be renamed NCCF_SHOW_ICON = 0x0010, // Shows icon in taskbar when connected NCCF_INCOMING_ONLY = 0x0020, // Direction is "incoming" only NCCF_OUTGOING_ONLY = 0x0040, // Direction is "outgoing" only NCCF_BRANDED = 0x0080, // Icons are branded NCCF_SHARED = 0x0100, // Connection is shared NCCF_BRIDGED = 0x0200, // Connection is bridged NCCF_FIREWALLED = 0x0400, // Connection is firewalled NCCF_DEFAULT = 0x0800, // This is the default connection } NETCON_CHARACTERISTIC_FLAGS; typedef enum tagNETCON_STATUS { NCS_DISCONNECTED, NCS_CONNECTING, NCS_CONNECTED, NCS_DISCONNECTING, NCS_HARDWARE_NOT_PRESENT, NCS_HARDWARE_DISABLED, NCS_HARDWARE_MALFUNCTION, NCS_MEDIA_DISCONNECTED, NCS_AUTHENTICATING, NCS_AUTHENTICATION_SUCCEEDED, NCS_AUTHENTICATION_FAILED, NCS_INVALID_ADDRESS, NCS_CREDENTIALS_REQUIRED } NETCON_STATUS; typedef enum tagNETCON_TYPE { NCT_DIRECT_CONNECT, NCT_INBOUND, NCT_INTERNET, NCT_LAN, NCT_PHONE, NCT_TUNNEL, NCT_BRIDGE, } NETCON_TYPE; typedef enum tagNETCON_MEDIATYPE { NCM_NONE, NCM_DIRECT, NCM_ISDN, NCM_LAN, NCM_PHONE, NCM_TUNNEL, NCM_PPPOE, NCM_BRIDGE, NCM_SHAREDACCESSHOST_LAN, NCM_SHAREDACCESSHOST_RAS, } NETCON_MEDIATYPE; typedef struct tagNETCON_PROPERTIES { GUID guidId; [string] LPWSTR pszwName; [string] LPWSTR pszwDeviceName; NETCON_STATUS Status; NETCON_MEDIATYPE MediaType; DWORD dwCharacter; CLSID clsidThisObject; CLSID clsidUiObject; } NETCON_PROPERTIES; HRESULT Connect(); cpp_quote("#define S_OBJECT_NO_LONGER_VALID ((HRESULT)0x00000002L)") // Disconnect can return S_OBJECT_NO_LONGER_VALID which indicates // success, but that the object is no longer valid. Clients, when // getting this error message, should simply release the interface. // HRESULT Disconnect(); HRESULT Delete(); HRESULT Duplicate( [in, string] LPCWSTR pszwDuplicateName, [out] INetConnection** ppCon); HRESULT GetProperties( [out] NETCON_PROPERTIES** ppProps); HRESULT GetUiObjectClassId( [out, ref] CLSID* pclsid); HRESULT Rename( [in, string] LPCWSTR pszwNewName); }; cpp_quote("") cpp_quote("STDAPI_(VOID) NcFreeNetconProperties (NETCON_PROPERTIES* pProps);") cpp_quote("") cpp_quote("") cpp_quote("STDAPI_(BOOL) NcIsValidConnectionName (PCWSTR pszwName);") cpp_quote("") //+--------------------------------------------------------------------------- // INetConnectionManager - The top-level object that contains all of the // INetConnection objects on a machine. // // This interface manages INetConnection objects. It provides methods // to: // - Enumerate INetConnections // - Remove an INetConnection // - Find an INetConnection // // Note: Adding a connection is not yet performed programatically through // the connection manager. Instead, the shell owns creating connection // objects through a UI interface. // [ object, uuid(C08956A2-1CD3-11D1-B1C5-00805FC1270E), pointer_default(unique) ] interface INetConnectionManager : IUnknown { typedef enum tagNETCONMGR_ENUM_FLAGS { NCME_DEFAULT = 0x0, } NETCONMGR_ENUM_FLAGS; // Return an IEnumNetConnection interface used to enumerate all of // the contained connection objects. // HRESULT EnumConnections( [in] NETCONMGR_ENUM_FLAGS Flags, [out] IEnumNetConnection** ppEnum); }; //+--------------------------------------------------------------------------- // INetConnectionManagerEvents - // [ object, uuid(C08956BA-1CD3-11D1-B1C5-00805FC1270E), pointer_default(unique) ] interface INetConnectionManagerEvents : IUnknown { HRESULT RefreshConnections(); HRESULT Enable(); HRESULT Disable( [in] ULONG ulDisableTimeout); }; //+--------------------------------------------------------------------------- // INetConnectionConnectUi - // [ local, object, uuid(C08956A3-1CD3-11D1-B1C5-00805FC1270E), pointer_default(unique) ] interface INetConnectionConnectUi : IUnknown { typedef enum tagNETCONUI_CONNECT_FLAGS { NCUC_DEFAULT = 0x0000, NCUC_NO_UI = 0x0001, } NETCONUI_CONNECT_FLAGS; HRESULT SetConnection( [in] INetConnection* pCon); HRESULT Connect ( [in] HWND hwndParent, [in] DWORD dwFlags); HRESULT Disconnect ( [in] HWND hwndParent, [in] DWORD dwFlags); }; //+--------------------------------------------------------------------------- // INetConnectionPropertyUi - // [ local, object, uuid(C08956A4-1CD3-11D1-B1C5-00805FC1270E), pointer_default(unique) ] interface INetConnectionPropertyUi : IUnknown { HRESULT SetConnection( [in] INetConnection* pCon); HRESULT AddPages ( [in] HWND hwndParent, [in] LPFNADDPROPSHEETPAGE pfnAddPage, [in] LPARAM lParam); }; //+--------------------------------------------------------------------------- // INetConnectionPropertyUi2 - // [ local, object, uuid(C08956B9-1CD3-11D1-B1C5-00805FC1270E), pointer_default(unique) ] interface INetConnectionPropertyUi2 : INetConnectionPropertyUi { HRESULT GetIcon( [in] DWORD dwSize, [out] HICON *phIcon); }; //+--------------------------------------------------------------------------- // INetConnectionCommonUi - // [ local, object, uuid(C08956A5-1CD3-11D1-B1C5-00805FC1270E), pointer_default(unique) ] interface INetConnectionCommonUi : IUnknown { typedef enum tagNETCON_CHOOSEFLAGS { NCCHF_CONNECT = 0x0001, // Selected Connection is activated // and returned. If not set then // the selected connection interface // is returned without being activated NCCHF_CAPTION = 0x0002, NCCHF_OKBTTNTEXT = 0x0004, NCCHF_DISABLENEW = 0x0008, NCCHF_AUTOSELECT = 0x0010, // Automatically Choose or Connect, // based upon NCCHF_CONNECT if only // one connection matches the // dwTypeMask. } NETCON_CHOOSEFLAGS; typedef enum tagNETCON_CHOOSETYPE { NCCHT_DIRECT_CONNECT = 0x0001, NCCHT_LAN = 0x0002, NCCHT_PHONE = 0x0004, NCCHT_TUNNEL = 0x0008, NCCHT_ISDN = 0x0010, NCCHT_ALL = 0x001F } NETCON_CHOOSETYPE; typedef struct tagNETCON_CHOOSECONN { DWORD lStructSize; HWND hwndParent; DWORD dwFlags; // Combine NCCHF_* flags DWORD dwTypeMask; // Combine NCCHT_* flags LPCWSTR lpstrCaption; LPCWSTR lpstrOkBttnText; } NETCON_CHOOSECONN; HRESULT ChooseConnection( [in] NETCON_CHOOSECONN * pChooseConn, [out] INetConnection** ppCon); HRESULT ShowConnectionProperties ( [in] HWND hwndParent, [in] INetConnection* pCon); HRESULT StartNewConnectionWizard ( [in] HWND hwndParent, [out] INetConnection** ppCon); }; //+--------------------------------------------------------------------------- // IEnumNetSharingPortMapping - An enumerator for INetSharingPortMapping objects. // [ object, uuid(C08956B0-1CD3-11D1-B1C5-00805FC1270E), pointer_default(unique) ] interface IEnumNetSharingPortMapping : IUnknown { HRESULT Next( [in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] VARIANT * rgVar, [out] ULONG* pceltFetched); HRESULT Skip( [in] ULONG celt); HRESULT Reset(); HRESULT Clone( [out] IEnumNetSharingPortMapping** ppenum); }; [ object, uuid(24B7E9B5-E38F-4685-851B-00892CF5F940), oleautomation, dual, pointer_default(unique) ] interface INetSharingPortMappingProps : IDispatch { [propget, id(1), helpstring("property Name")] HRESULT Name ([out, retval] BSTR * pbstrName); [propget, id(2), helpstring("property IPProtocol")] HRESULT IPProtocol ([out, retval] UCHAR * pucIPProt); [propget, id(3), helpstring("property ExternalPort")] HRESULT ExternalPort ([out, retval] long * pusPort); [propget, id(4), helpstring("property InternalPort")] HRESULT InternalPort ([out, retval] long * pusPort); [propget, id(5), helpstring("property Options")] HRESULT Options ([out, retval] long * pdwOptions); [propget, id(6), helpstring("property TargetName")] HRESULT TargetName ([out, retval] BSTR * pbstrTargetName); [propget, id(7), helpstring("property TargetIPAddress")] HRESULT TargetIPAddress([out, retval] BSTR * pbstrTargetIPAddress); [propget, id(8), helpstring("property Enabled")] HRESULT Enabled ([out, retval] VARIANT_BOOL * pbool); }; //+--------------------------------------------------------------------------- // INetSharingPortMapping - // [ object, uuid(C08956B1-1CD3-11D1-B1C5-00805FC1270E), oleautomation, dual, pointer_default(unique) ] interface INetSharingPortMapping : IDispatch { [id(1), helpstring("method Disable")] HRESULT Disable(); [id(2), helpstring("method Enable")] HRESULT Enable(); [propget, id(3), helpstring("property Properties")] HRESULT Properties( [out, retval] INetSharingPortMappingProps ** ppNSPMP); [id(4), helpstring("method Delete")] HRESULT Delete(); }; //+--------------------------------------------------------------------------- // IEnumNetSharingEveryConnection - An enumerator for INetConnection interface pointers // that represent all connections in the connections folder // [ object, uuid(C08956B8-1CD3-11D1-B1C5-00805FC1270E), pointer_default(unique) ] interface IEnumNetSharingEveryConnection : IUnknown { HRESULT Next( [in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] VARIANT * rgVar, [out] ULONG* pceltFetched); HRESULT Skip( [in] ULONG celt); HRESULT Reset(); HRESULT Clone( [out] IEnumNetSharingEveryConnection** ppenum); }; //+--------------------------------------------------------------------------- // IEnumNetSharingPublicConnection - An enumerator for INetConnection interface pointers // that represent connections configured as publicly shared. // [ object, uuid(C08956B4-1CD3-11D1-B1C5-00805FC1270E), pointer_default(unique) ] interface IEnumNetSharingPublicConnection : IUnknown { HRESULT Next( [in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] VARIANT * rgVar, [out] ULONG* pceltFetched); HRESULT Skip( [in] ULONG celt); HRESULT Reset(); HRESULT Clone( [out] IEnumNetSharingPublicConnection** ppenum); }; //+--------------------------------------------------------------------------- // IEnumNetSharingPrivateConnection - An enumerator for INetConnection interface pointers // that represent connections configured as privately shared. // [ object, uuid(C08956B5-1CD3-11D1-B1C5-00805FC1270E), pointer_default(unique) ] interface IEnumNetSharingPrivateConnection : IUnknown { HRESULT Next( [in] ULONG celt, [out, size_is(celt), length_is(*pCeltFetched)] VARIANT * rgVar, [out] ULONG * pCeltFetched); HRESULT Skip( [in] ULONG celt); HRESULT Reset(); HRESULT Clone( [out] IEnumNetSharingPrivateConnection** ppenum); }; // Collection needed for INetSharingConfiguration::EnumPortMappings() below [ object, uuid(02E4A2DE-DA20-4E34-89C8-AC22275A010B), oleautomation, dual, helpstring("INetSharingPortMappingCollection Interface"), pointer_default(unique) ] interface INetSharingPortMappingCollection : IDispatch { [propget, id(DISPID_NEWENUM), restricted, helpstring("property _NewEnum: gets item enumerator")] HRESULT _NewEnum([out, retval] IUnknown* *pVal); [propget, id(1), helpstring("property Count")] HRESULT Count([out, retval] long *pVal); }; cpp_quote("// properties for INetConnection (wraps NETCON_PROPERTIES)") [ object, uuid(F4277C95-CE5B-463D-8167-5662D9BCAA72), oleautomation, dual, helpstring("INetConnectionProps Interface"), pointer_default(unique) ] interface INetConnectionProps : IDispatch { [propget, id(1), helpstring("property Guid")] HRESULT Guid ([out, retval] BSTR * pbstrGuid); [propget, id(2), helpstring("property Name")] HRESULT Name ([out, retval] BSTR * pbstrName); [propget, id(3), helpstring("property DeviceName")] HRESULT DeviceName ([out, retval] BSTR * pbstrDeviceName); [propget, id(4), helpstring("property Status")] HRESULT Status ([out, retval] NETCON_STATUS * pStatus); [propget, id(5), helpstring("property MediaType")] HRESULT MediaType ([out, retval] NETCON_MEDIATYPE * pMediaType); [propget, id(6), helpstring("property Characteristics")] HRESULT Characteristics ([out, retval] DWORD * pdwFlags); }; //+--------------------------------------------------------------------------- // INetSharingConfiguration - the connection level object that // // It provides methods to: // - Enable/Disable Internet Connection Sharing // - Enable/Disable Internet Connection Protection // - Enumerate Port Mappings // - Add Port Mappings // [ object, uuid(C08956B6-1CD3-11D1-B1C5-00805FC1270E), oleautomation, dual, pointer_default(unique) ] interface INetSharingConfiguration : IDispatch { typedef enum tagSHARINGCONNECTIONTYPE { ICSSHARINGTYPE_PUBLIC = 0x0, ICSSHARINGTYPE_PRIVATE } SHARINGCONNECTIONTYPE, *LPSHARINGCONNECTIONTYPE; typedef enum tagSHARINGCONNECTION_ENUM_FLAGS { ICSSC_DEFAULT = 0x0, ICSSC_ENABLED } SHARINGCONNECTION_ENUM_FLAGS; typedef enum tagICS_TARGETTYPE { ICSTT_NAME = 0x0, ICSTT_IPADDRESS } ICS_TARGETTYPE; [propget, id(1), helpstring("property SharingEnabled")] HRESULT SharingEnabled([out, retval] VARIANT_BOOL* pbEnabled); [propget, id(2), helpstring("property SharingConnectionType")] HRESULT SharingConnectionType([out, retval] SHARINGCONNECTIONTYPE* pType); [id(3), helpstring("method DisableSharing")] HRESULT DisableSharing(); [id(4), helpstring("method EnableSharing")] HRESULT EnableSharing([in] SHARINGCONNECTIONTYPE Type ); [propget, id(5), helpstring("property InternetFirewallEnabled")] HRESULT InternetFirewallEnabled([out, retval] VARIANT_BOOL *pbEnabled ); [id(6), helpstring("method DisableInternetFirewall")] HRESULT DisableInternetFirewall(); [id(7), helpstring("method EnableInternetFirewall")] HRESULT EnableInternetFirewall(); // Return an IEnumNetSharingPortMapping interface used to enumerate all of // the contained INetSharingPortMapping objects. // [propget, id(8), helpstring("EnumPortMappings")] HRESULT EnumPortMappings( [in] SHARINGCONNECTION_ENUM_FLAGS Flags, [out, retval] INetSharingPortMappingCollection** ppColl); [id(9), helpstring("method AddPortMapping")] HRESULT AddPortMapping( [in] BSTR bstrName, [in] UCHAR ucIPProtocol, [in] USHORT usExternalPort, [in] USHORT usInternalPort, [in] DWORD dwOptions, [in] BSTR bstrTargetNameOrIPAddress, [in] ICS_TARGETTYPE eTargetType, [out, retval] INetSharingPortMapping** ppMapping ); [id(10), helpstring("method RemovePortMapping")] HRESULT RemovePortMapping([in] INetSharingPortMapping* pMapping ); }; // ICollection interfaces [ object, uuid(33C4643C-7811-46FA-A89A-768597BD7223), oleautomation, dual, helpstring("INetSharingEveryConnectionCollection Interface"), pointer_default(unique) ] interface INetSharingEveryConnectionCollection : IDispatch { [propget, id(DISPID_NEWENUM), restricted, helpstring("property _NewEnum: gets item enumerator")] HRESULT _NewEnum([out, retval] IUnknown* *pVal); [propget, id(1), helpstring("property Count")] HRESULT Count([out, retval] long *pVal); }; [ object, uuid(7D7A6355-F372-4971-A149-BFC927BE762A), oleautomation, dual, helpstring("INetSharingPublicConnectionCollection Interface"), pointer_default(unique) ] interface INetSharingPublicConnectionCollection : IDispatch { [propget, id(DISPID_NEWENUM), restricted, helpstring("property _NewEnum: gets item enumerator")] HRESULT _NewEnum([out, retval] IUnknown* *pVal); [propget, id(1), helpstring("property Count")] HRESULT Count([out, retval] long *pVal); }; [ object, uuid(38AE69E0-4409-402A-A2CB-E965C727F840), oleautomation, dual, helpstring("INetSharingPrivateConnectionCollection Interface"), pointer_default(unique) ] interface INetSharingPrivateConnectionCollection : IDispatch { [propget, id(DISPID_NEWENUM), restricted, helpstring("property _NewEnum: gets item enumerator")] HRESULT _NewEnum([out, retval] IUnknown* *pVal); [propget, id(1), helpstring("property Count")] HRESULT Count([out, retval] long *pVal); }; //+--------------------------------------------------------------------------- // INetSharingManager - the top level object that // // It provides methods to: // - Determine whether Internet Connection Sharing is installed // - Enumerate Public Connections // - Enumerate Private Connections // [ object, uuid(C08956B7-1CD3-11D1-B1C5-00805FC1270E), oleautomation, dual, pointer_default(unique) ] interface INetSharingManager : IDispatch { [propget, id(1), helpstring("property SharingInstalled")] HRESULT SharingInstalled([out, retval] VARIANT_BOOL *pbInstalled ); // Return an IEnumNetSharingPublicConnection interface used to enumerate all of // the contained INetConnections configured as a public adapter // [propget, id(2), helpstring("EnumPublicConnections")] HRESULT EnumPublicConnections( [in] SHARINGCONNECTION_ENUM_FLAGS Flags, [out, retval] INetSharingPublicConnectionCollection ** ppColl); // Return an IEnumNetSharingPrivateConnection interface used to enumerate all of // the contained INetConnections configured as a private adapter // [propget, id(3), helpstring("EnumPrivateConnections")] HRESULT EnumPrivateConnections( [in] SHARINGCONNECTION_ENUM_FLAGS Flags, [out, retval] INetSharingPrivateConnectionCollection ** ppColl); [propget, id(6), helpstring("INetSharingConfigurationForINetConnection")] HRESULT INetSharingConfigurationForINetConnection( [in] INetConnection *pNetConnection, [out, retval] INetSharingConfiguration **ppNetSharingConfiguration ); // Return an IEnumNetSharingEveryConnection interface used to enumerate all of // the contained INetConnections configured as a public adapter // [propget, id(7), helpstring("EnumEveryConnection")] HRESULT EnumEveryConnection([out, retval] INetSharingEveryConnectionCollection ** ppColl); // get properties interface for any INetConnection [propget, id(8), helpstring("NetConnectionProps")] HRESULT NetConnectionProps( [in] INetConnection *pNetConnection, [out, retval] INetConnectionProps ** ppProps); }; // // AlgSetup.idl : IDL source for AlgSetup.dll // // To allow third party to Install/Remove ALG PlugIns // const int ALG_SETUP_PORTS_LIST_BYTE_SIZE=2048; [ object, uuid(A779AF1A-009A-4C44-B9F0-8F0F4CF2AE49), dual, helpstring("IAlgSetup Interface"), pointer_default(unique) ] interface IAlgSetup : IDispatch { [id(1), helpstring("method Add")] HRESULT Add( [in] BSTR pszProgID, [in] BSTR pszPublisher, [in] BSTR pszProduct, [in] BSTR pszVersion, [in] short nProtocol, [in] BSTR pszPorts ); [id(2), helpstring("method Remove")] HRESULT Remove( [in] BSTR pszProgID ); }; [ uuid(43E734CA-043D-4A70-9A2C-A8F254063D91), version(1.0), helpstring("NetCon 1.0 Type Library") ] library NETCONLib { importlib("stdole2.tlb"); [ uuid(5C63C1AD-3956-4FF8-8486-40034758315B), helpstring("NetSharingManager Class") ] coclass NetSharingManager { [default] interface INetSharingManager; }; [ uuid(27D0BCCC-344D-4287-AF37-0C72C161C14C), helpstring("AlgSetup Class") ] coclass AlgSetup { [default] interface IAlgSetup; }; };