842 lines
25 KiB
Plaintext
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 256")
|
||
|
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;
|
||
|
};
|
||
|
|
||
|
|
||
|
};
|