windows-nt/Source/XPSP1/NT/net/published/idlole/netcon.idl
2020-09-26 16:20:57 +08:00

842 lines
25 KiB
Plaintext

//+---------------------------------------------------------------------------
//
// 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;
};
};