| /* | 
 |  * Copyright 2009 Jacek Caban for CodeWeavers | 
 |  * | 
 |  * This library is free software; you can redistribute it and/or | 
 |  * modify it under the terms of the GNU Lesser General Public | 
 |  * License as published by the Free Software Foundation; either | 
 |  * version 2.1 of the License, or (at your option) any later version. | 
 |  * | 
 |  * This library is distributed in the hope that it will be useful, | 
 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
 |  * Lesser General Public License for more details. | 
 |  * | 
 |  * You should have received a copy of the GNU Lesser General Public | 
 |  * License along with this library; if not, write to the Free Software | 
 |  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
 |  */ | 
 |  | 
 | #ifndef DO_NO_IMPORTS | 
 | import "oaidl.idl"; | 
 | import "unknwn.idl"; | 
 | import "wtypes.idl"; | 
 | /* import "prsht.idl"; */ | 
 | #endif | 
 |  | 
 | cpp_quote("DEFINE_GUID(CLSID_NetSharingManager,0x5c63c1ad,0x3956,0x4ff8,0x84,0x86,0x40,0x03,0x47,0x58,0x31,0x5b);") | 
 |  | 
 | [ | 
 |     object, | 
 |     uuid(c08956a1-1cd3-11d1-b1c5-00805fc1270e), | 
 |     pointer_default(unique) | 
 | ] | 
 | interface INetConnection : IUnknown | 
 | { | 
 |     typedef enum tagNETCON_CHARACTERISTIC_FLAGS | 
 |     { | 
 |         NCCF_NONE               = 0x0000, | 
 |         NCCF_ALL_USERS          = 0x0001, | 
 |         NCCF_ALLOW_DUPLICATION  = 0x0002, | 
 |         NCCF_ALLOW_REMOVAL      = 0x0004, | 
 |         NCCF_ALLOW_RENAME       = 0x0008, | 
 |         NCCF_INCOMING_ONLY      = 0x0020, | 
 |         NCCF_OUTGOING_ONLY      = 0x0040, | 
 |         NCCF_BRANDED            = 0x0080, | 
 |         NCCF_SHARED             = 0x0100, | 
 |         NCCF_BRIDGED            = 0x0200, | 
 |         NCCF_FIREWALLED         = 0x0400, | 
 |         NCCF_DEFAULT            = 0x0800, | 
 |         NCCF_HOMENET_CAPABLE    = 0x1000, | 
 |         NCCF_SHARED_PRIVATE     = 0x2000, | 
 |         NCCF_QUARANTINED        = 0x4000, | 
 |         NCCF_RESERVED           = 0x8000, | 
 |         NCCF_BLUETOOTH_MASK  = 0x000F0000, | 
 |         NCCF_LAN_MASK        = 0x00F00000 | 
 |     } 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(); | 
 |  | 
 |     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); | 
 | } | 
 |  | 
 | [ | 
 |     object, | 
 |     uuid(24b7e9b5-e38f-4685-851b-00892cf5f940), | 
 |     oleautomation, | 
 |     dual, | 
 |     pointer_default(unique) | 
 | ] | 
 | interface INetSharingPortMappingProps : IDispatch | 
 | { | 
 |     [propget, id(1)] | 
 |     HRESULT Name([out, retval] BSTR *pbstrName); | 
 |  | 
 |     [propget, id(2)] | 
 |     HRESULT IPProtocol([out, retval] UCHAR *pucIPProt); | 
 |  | 
 |     [propget, id(3)] | 
 |     HRESULT ExternalPort([out, retval] long *pusPort); | 
 |  | 
 |     [propget, id(4)] | 
 |     HRESULT InternalPort([out, retval] long *pusPort); | 
 |  | 
 |     [propget, id(5)] | 
 |     HRESULT Options([out, retval] long *pdwOptions); | 
 |  | 
 |     [propget, id(6)] | 
 |     HRESULT TargetName([out, retval] BSTR *pbstrTargetName); | 
 |  | 
 |     [propget, id(7)] | 
 |     HRESULT TargetIPAddress([out, retval] BSTR *pbstrTargetIPAddress); | 
 |  | 
 |     [propget, id(8)] | 
 |     HRESULT Enabled([out, retval] VARIANT_BOOL *pbool); | 
 | } | 
 |  | 
 | [ | 
 |     object, | 
 |     uuid(c08956b1-1cd3-11d1-b1c5-00805fc1270e), | 
 |     oleautomation, | 
 |     dual, | 
 |     pointer_default(unique) | 
 | ] | 
 | interface INetSharingPortMapping : IDispatch | 
 | { | 
 |     [id(1)] | 
 |     HRESULT Disable(); | 
 |  | 
 |     [id(2)] | 
 |     HRESULT Enable(); | 
 |  | 
 |     [propget, id(3)] | 
 |     HRESULT Properties([out, retval] INetSharingPortMappingProps **ppNSPMP); | 
 |  | 
 |     [id(4)] | 
 |     HRESULT Delete(); | 
 | }; | 
 | [ | 
 |     object, | 
 |     uuid(02e4a2de-da20-4e34-89c8-ac22275a010b), | 
 |     oleautomation, | 
 |     dual, | 
 |     pointer_default(unique) | 
 | ] | 
 | interface INetSharingPortMappingCollection : IDispatch | 
 | { | 
 |     [propget, id(DISPID_NEWENUM), restricted] | 
 |     HRESULT _NewEnum([out, retval] IUnknown **pVal); | 
 |  | 
 |     [propget, id(1)] | 
 |     HRESULT Count([out, retval] long *pVal); | 
 | } | 
 |  | 
 | [ | 
 |     object, | 
 |     uuid(c08956b6-1cd3-11d1-b1c5-00805fc1270e), | 
 |     oleautomation, | 
 |     dual, | 
 |     pointer_default(unique) | 
 | ] | 
 | interface INetSharingConfiguration : IDispatch | 
 | { | 
 |     typedef enum tagSHARINGCONNECTIONTYPE { | 
 |         ICSSHARINGTYPE_PUBLIC, | 
 |         ICSSHARINGTYPE_PRIVATE | 
 |     } SHARINGCONNECTIONTYPE, *LPSHARINGCONNECTIONTYPE; | 
 |  | 
 |     typedef enum tagSHARINGCONNECTION_ENUM_FLAGS { | 
 |             ICSSC_DEFAULT, | 
 |             ICSSC_ENABLED | 
 |     } SHARINGCONNECTION_ENUM_FLAGS; | 
 |  | 
 |     typedef enum tagICS_TARGETTYPE { | 
 |             ICSTT_NAME, | 
 |             ICSTT_IPADDRESS | 
 |     }ICS_TARGETTYPE; | 
 |  | 
 |     [propget, id(1)] | 
 |     HRESULT SharingEnabled([out, retval] VARIANT_BOOL *pbEnabled); | 
 |  | 
 |     [propget, id(2)] | 
 |     HRESULT SharingConnectionType([out, retval] SHARINGCONNECTIONTYPE *pType); | 
 |  | 
 |     [id(3)] | 
 |     HRESULT DisableSharing(); | 
 |  | 
 |     [id(4)] | 
 |     HRESULT EnableSharing([in] SHARINGCONNECTIONTYPE Type); | 
 |  | 
 |     [propget, id(5)] | 
 |     HRESULT InternetFirewallEnabled([out, retval] VARIANT_BOOL *pbEnabled); | 
 |  | 
 |     [id(6)] | 
 |     HRESULT DisableInternetFirewall(); | 
 |  | 
 |     [id(7)] | 
 |     HRESULT EnableInternetFirewall(); | 
 |  | 
 |     [propget, id(8)] | 
 |     HRESULT EnumPortMappings( | 
 |         [in] SHARINGCONNECTION_ENUM_FLAGS Flags, | 
 |         [out, retval] INetSharingPortMappingCollection **ppColl); | 
 |  | 
 |     [id(9)] | 
 |     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)] | 
 |     HRESULT RemovePortMapping([in] INetSharingPortMapping *pMapping); | 
 | } | 
 |  | 
 | [ | 
 |     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); | 
 | } | 
 |  | 
 | [ | 
 |     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); | 
 | } | 
 |  | 
 | [ | 
 |     object, | 
 |     uuid(f4277c95-ce5b-463d-8167-5662d9bcaa72), | 
 |     oleautomation, | 
 |     dual, | 
 |     pointer_default(unique) | 
 | ] | 
 | interface INetConnectionProps : IDispatch | 
 | { | 
 |     [propget, id(1)] | 
 |     HRESULT Guid([out, retval] BSTR *pbstrGuid); | 
 |  | 
 |     [propget, id(2)] | 
 |     HRESULT Name([out, retval] BSTR *pbstrName); | 
 |  | 
 |     [propget, id(3)] | 
 |     HRESULT DeviceName([out, retval] BSTR *pbstrDeviceName); | 
 |  | 
 |     [propget, id(4)] | 
 |     HRESULT Status([out, retval] NETCON_STATUS *pStatus); | 
 |  | 
 |     [propget, id(5)] | 
 |     HRESULT MediaType([out, retval] NETCON_MEDIATYPE *pMediaType); | 
 |  | 
 |     [propget, id(6)] | 
 |     HRESULT Characteristics([out, retval] DWORD *pdwFlags); | 
 | } | 
 |  | 
 | [ | 
 |     object, | 
 |     uuid(7d7a6355-f372-4971-a149-bfc927be762a), | 
 |     oleautomation, | 
 |     dual, | 
 |     pointer_default(unique) | 
 | ] | 
 | interface INetSharingPublicConnectionCollection : IDispatch | 
 | { | 
 |     [propget, id(DISPID_NEWENUM), restricted] | 
 |     HRESULT _NewEnum([out, retval] IUnknown **pVal); | 
 |  | 
 |     [propget, id(1)] | 
 |     HRESULT Count([out, retval] long *pVal); | 
 | } | 
 |  | 
 | [ | 
 |     object, | 
 |     uuid(33c4643c-7811-46fa-a89a-768597bd7223), | 
 |     oleautomation, | 
 |     dual, | 
 |     pointer_default(unique) | 
 |  ] | 
 | interface INetSharingEveryConnectionCollection : IDispatch | 
 | { | 
 |     [propget, id(DISPID_NEWENUM), restricted] | 
 |     HRESULT _NewEnum([out, retval] IUnknown **pVal); | 
 |  | 
 |     [propget, id(1)] | 
 |     HRESULT Count([out, retval] long *pVal); | 
 | } | 
 |  | 
 | [ | 
 |     object, | 
 |     uuid(38ae69e0-4409-402a-a2cb-e965c727f840), | 
 |     oleautomation, | 
 |     dual, | 
 |     pointer_default(unique) | 
 |  ] | 
 | interface INetSharingPrivateConnectionCollection : IDispatch | 
 | { | 
 |     [propget, id(DISPID_NEWENUM), restricted] | 
 |     HRESULT _NewEnum([out, retval] IUnknown **pVal); | 
 |  | 
 |     [propget, id(1)] | 
 |     HRESULT Count([out, retval] long *pVal); | 
 | } | 
 |  | 
 | [ | 
 |     object, | 
 |     uuid(c08956b7-1cd3-11d1-b1c5-00805fc1270e), | 
 |     oleautomation, | 
 |     dual, | 
 |     pointer_default(unique) | 
 | ] | 
 | interface INetSharingManager : IDispatch | 
 | { | 
 |     [propget, id(1)] | 
 |     HRESULT SharingInstalled([out, retval] VARIANT_BOOL *pbInstalled); | 
 |  | 
 |     [propget, id(2)] | 
 |     HRESULT EnumPublicConnections( | 
 |             [in]  SHARINGCONNECTION_ENUM_FLAGS Flags, | 
 |             [out, retval] INetSharingPublicConnectionCollection **ppColl); | 
 |  | 
 |     [propget, id(3)] | 
 |     HRESULT EnumPrivateConnections( | 
 |             [in]  SHARINGCONNECTION_ENUM_FLAGS Flags, | 
 |             [out, retval] INetSharingPrivateConnectionCollection **ppColl); | 
 |  | 
 |     [propget, id(6)] | 
 |     HRESULT INetSharingConfigurationForINetConnection( | 
 |             [in] INetConnection *pNetConnection, | 
 |             [out, retval] INetSharingConfiguration **ppNetSharingConfiguration); | 
 |  | 
 |     [propget, id(7)] | 
 |     HRESULT EnumEveryConnection([out, retval] INetSharingEveryConnectionCollection **ppColl); | 
 |  | 
 |     [propget, id(8)] | 
 |     HRESULT NetConnectionProps( | 
 |             [in] INetConnection *pNetConnection, | 
 |             [out, retval] INetConnectionProps **ppProps); | 
 | } |