/* * 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); }