1/* 2 * Copyright 2009 Jacek Caban for CodeWeavers 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17 */ 18 19#ifndef DO_NO_IMPORTS 20import "oaidl.idl"; 21import "unknwn.idl"; 22import "wtypes.idl"; 23/* import "prsht.idl"; */ 24#endif 25 26cpp_quote("DEFINE_GUID(CLSID_NetSharingManager,0x5c63c1ad,0x3956,0x4ff8,0x84,0x86,0x40,0x03,0x47,0x58,0x31,0x5b);") 27 28[ 29 object, 30 uuid(c08956a1-1cd3-11d1-b1c5-00805fc1270e), 31 pointer_default(unique) 32] 33interface INetConnection : IUnknown 34{ 35 typedef enum tagNETCON_CHARACTERISTIC_FLAGS 36 { 37 NCCF_NONE = 0x0000, 38 NCCF_ALL_USERS = 0x0001, 39 NCCF_ALLOW_DUPLICATION = 0x0002, 40 NCCF_ALLOW_REMOVAL = 0x0004, 41 NCCF_ALLOW_RENAME = 0x0008, 42 NCCF_INCOMING_ONLY = 0x0020, 43 NCCF_OUTGOING_ONLY = 0x0040, 44 NCCF_BRANDED = 0x0080, 45 NCCF_SHARED = 0x0100, 46 NCCF_BRIDGED = 0x0200, 47 NCCF_FIREWALLED = 0x0400, 48 NCCF_DEFAULT = 0x0800, 49 NCCF_HOMENET_CAPABLE = 0x1000, 50 NCCF_SHARED_PRIVATE = 0x2000, 51 NCCF_QUARANTINED = 0x4000, 52 NCCF_RESERVED = 0x8000, 53 NCCF_BLUETOOTH_MASK = 0x000F0000, 54 NCCF_LAN_MASK = 0x00F00000 55 } NETCON_CHARACTERISTIC_FLAGS; 56 57 typedef enum tagNETCON_STATUS 58 { 59 NCS_DISCONNECTED, 60 NCS_CONNECTING, 61 NCS_CONNECTED, 62 NCS_DISCONNECTING, 63 NCS_HARDWARE_NOT_PRESENT, 64 NCS_HARDWARE_DISABLED, 65 NCS_HARDWARE_MALFUNCTION, 66 NCS_MEDIA_DISCONNECTED, 67 NCS_AUTHENTICATING, 68 NCS_AUTHENTICATION_SUCCEEDED, 69 NCS_AUTHENTICATION_FAILED, 70 NCS_INVALID_ADDRESS, 71 NCS_CREDENTIALS_REQUIRED 72 } NETCON_STATUS; 73 74 typedef enum tagNETCON_TYPE 75 { 76 NCT_DIRECT_CONNECT, 77 NCT_INBOUND, 78 NCT_INTERNET, 79 NCT_LAN, 80 NCT_PHONE, 81 NCT_TUNNEL, 82 NCT_BRIDGE 83 } NETCON_TYPE; 84 85 typedef enum tagNETCON_MEDIATYPE 86 { 87 NCM_NONE, 88 NCM_DIRECT, 89 NCM_ISDN, 90 NCM_LAN, 91 NCM_PHONE, 92 NCM_TUNNEL, 93 NCM_PPPOE, 94 NCM_BRIDGE, 95 NCM_SHAREDACCESSHOST_LAN, 96 NCM_SHAREDACCESSHOST_RAS 97 } NETCON_MEDIATYPE; 98 99 typedef struct tagNETCON_PROPERTIES 100 { 101 GUID guidId; 102 [string] LPWSTR pszwName; 103 [string] LPWSTR pszwDeviceName; 104 NETCON_STATUS Status; 105 NETCON_MEDIATYPE MediaType; 106 DWORD dwCharacter; 107 CLSID clsidThisObject; 108 CLSID clsidUiObject; 109 } NETCON_PROPERTIES; 110 111 HRESULT Connect(); 112 113 HRESULT Disconnect(); 114 115 HRESULT Delete(); 116 117 HRESULT Duplicate( 118 [in, string] LPCWSTR pszwDuplicateName, 119 [out] INetConnection **ppCon); 120 121 HRESULT GetProperties([out] NETCON_PROPERTIES **ppProps); 122 123 HRESULT GetUiObjectClassId([out, ref] CLSID *pclsid); 124 125 HRESULT Rename([in, string] LPCWSTR pszwNewName); 126} 127 128[ 129 object, 130 uuid(24b7e9b5-e38f-4685-851b-00892cf5f940), 131 oleautomation, 132 dual, 133 pointer_default(unique) 134] 135interface INetSharingPortMappingProps : IDispatch 136{ 137 [propget, id(1)] 138 HRESULT Name([out, retval] BSTR *pbstrName); 139 140 [propget, id(2)] 141 HRESULT IPProtocol([out, retval] UCHAR *pucIPProt); 142 143 [propget, id(3)] 144 HRESULT ExternalPort([out, retval] long *pusPort); 145 146 [propget, id(4)] 147 HRESULT InternalPort([out, retval] long *pusPort); 148 149 [propget, id(5)] 150 HRESULT Options([out, retval] long *pdwOptions); 151 152 [propget, id(6)] 153 HRESULT TargetName([out, retval] BSTR *pbstrTargetName); 154 155 [propget, id(7)] 156 HRESULT TargetIPAddress([out, retval] BSTR *pbstrTargetIPAddress); 157 158 [propget, id(8)] 159 HRESULT Enabled([out, retval] VARIANT_BOOL *pbool); 160} 161 162[ 163 object, 164 uuid(c08956b1-1cd3-11d1-b1c5-00805fc1270e), 165 oleautomation, 166 dual, 167 pointer_default(unique) 168] 169interface INetSharingPortMapping : IDispatch 170{ 171 [id(1)] 172 HRESULT Disable(); 173 174 [id(2)] 175 HRESULT Enable(); 176 177 [propget, id(3)] 178 HRESULT Properties([out, retval] INetSharingPortMappingProps **ppNSPMP); 179 180 [id(4)] 181 HRESULT Delete(); 182}; 183[ 184 object, 185 uuid(02e4a2de-da20-4e34-89c8-ac22275a010b), 186 oleautomation, 187 dual, 188 pointer_default(unique) 189] 190interface INetSharingPortMappingCollection : IDispatch 191{ 192 [propget, id(DISPID_NEWENUM), restricted] 193 HRESULT _NewEnum([out, retval] IUnknown **pVal); 194 195 [propget, id(1)] 196 HRESULT Count([out, retval] long *pVal); 197} 198 199[ 200 object, 201 uuid(c08956b6-1cd3-11d1-b1c5-00805fc1270e), 202 oleautomation, 203 dual, 204 pointer_default(unique) 205] 206interface INetSharingConfiguration : IDispatch 207{ 208 typedef enum tagSHARINGCONNECTIONTYPE { 209 ICSSHARINGTYPE_PUBLIC, 210 ICSSHARINGTYPE_PRIVATE 211 } SHARINGCONNECTIONTYPE, *LPSHARINGCONNECTIONTYPE; 212 213 typedef enum tagSHARINGCONNECTION_ENUM_FLAGS { 214 ICSSC_DEFAULT, 215 ICSSC_ENABLED 216 } SHARINGCONNECTION_ENUM_FLAGS; 217 218 typedef enum tagICS_TARGETTYPE { 219 ICSTT_NAME, 220 ICSTT_IPADDRESS 221 }ICS_TARGETTYPE; 222 223 [propget, id(1)] 224 HRESULT SharingEnabled([out, retval] VARIANT_BOOL *pbEnabled); 225 226 [propget, id(2)] 227 HRESULT SharingConnectionType([out, retval] SHARINGCONNECTIONTYPE *pType); 228 229 [id(3)] 230 HRESULT DisableSharing(); 231 232 [id(4)] 233 HRESULT EnableSharing([in] SHARINGCONNECTIONTYPE Type); 234 235 [propget, id(5)] 236 HRESULT InternetFirewallEnabled([out, retval] VARIANT_BOOL *pbEnabled); 237 238 [id(6)] 239 HRESULT DisableInternetFirewall(); 240 241 [id(7)] 242 HRESULT EnableInternetFirewall(); 243 244 [propget, id(8)] 245 HRESULT EnumPortMappings( 246 [in] SHARINGCONNECTION_ENUM_FLAGS Flags, 247 [out, retval] INetSharingPortMappingCollection **ppColl); 248 249 [id(9)] 250 HRESULT AddPortMapping( 251 [in] BSTR bstrName, 252 [in] UCHAR ucIPProtocol, 253 [in] USHORT usExternalPort, 254 [in] USHORT usInternalPort, 255 [in] DWORD dwOptions, 256 [in] BSTR bstrTargetNameOrIPAddress, 257 [in] ICS_TARGETTYPE eTargetType, 258 [out, retval] INetSharingPortMapping **ppMapping ); 259 260 [id(10)] 261 HRESULT RemovePortMapping([in] INetSharingPortMapping *pMapping); 262} 263 264[ 265 object, 266 uuid(c08956b4-1cd3-11d1-b1c5-00805fc1270e), 267 pointer_default(unique) 268] 269interface IEnumNetSharingPublicConnection : IUnknown 270{ 271 HRESULT Next( 272 [in] ULONG celt, 273 [out, size_is(celt), length_is(*pceltFetched)] VARIANT *rgVar, 274 [out] ULONG *pceltFetched); 275 276 HRESULT Skip([in] ULONG celt); 277 278 HRESULT Reset(); 279 280 HRESULT Clone([out] IEnumNetSharingPublicConnection **ppenum); 281} 282 283[ 284 object, 285 uuid(c08956b5-1cd3-11d1-b1c5-00805fc1270e), 286 pointer_default(unique) 287] 288interface IEnumNetSharingPrivateConnection : IUnknown 289{ 290 HRESULT Next( 291 [in] ULONG celt, 292 [out, size_is(celt), length_is(*pCeltFetched)] VARIANT *rgVar, 293 [out] ULONG *pCeltFetched); 294 295 HRESULT Skip([in] ULONG celt); 296 297 HRESULT Reset(); 298 299 HRESULT Clone([out] IEnumNetSharingPrivateConnection **ppenum); 300} 301 302[ 303 object, 304 uuid(f4277c95-ce5b-463d-8167-5662d9bcaa72), 305 oleautomation, 306 dual, 307 pointer_default(unique) 308] 309interface INetConnectionProps : IDispatch 310{ 311 [propget, id(1)] 312 HRESULT Guid([out, retval] BSTR *pbstrGuid); 313 314 [propget, id(2)] 315 HRESULT Name([out, retval] BSTR *pbstrName); 316 317 [propget, id(3)] 318 HRESULT DeviceName([out, retval] BSTR *pbstrDeviceName); 319 320 [propget, id(4)] 321 HRESULT Status([out, retval] NETCON_STATUS *pStatus); 322 323 [propget, id(5)] 324 HRESULT MediaType([out, retval] NETCON_MEDIATYPE *pMediaType); 325 326 [propget, id(6)] 327 HRESULT Characteristics([out, retval] DWORD *pdwFlags); 328} 329 330[ 331 object, 332 uuid(7d7a6355-f372-4971-a149-bfc927be762a), 333 oleautomation, 334 dual, 335 pointer_default(unique) 336] 337interface INetSharingPublicConnectionCollection : IDispatch 338{ 339 [propget, id(DISPID_NEWENUM), restricted] 340 HRESULT _NewEnum([out, retval] IUnknown **pVal); 341 342 [propget, id(1)] 343 HRESULT Count([out, retval] long *pVal); 344} 345 346[ 347 object, 348 uuid(33c4643c-7811-46fa-a89a-768597bd7223), 349 oleautomation, 350 dual, 351 pointer_default(unique) 352 ] 353interface INetSharingEveryConnectionCollection : IDispatch 354{ 355 [propget, id(DISPID_NEWENUM), restricted] 356 HRESULT _NewEnum([out, retval] IUnknown **pVal); 357 358 [propget, id(1)] 359 HRESULT Count([out, retval] long *pVal); 360} 361 362[ 363 object, 364 uuid(38ae69e0-4409-402a-a2cb-e965c727f840), 365 oleautomation, 366 dual, 367 pointer_default(unique) 368 ] 369interface INetSharingPrivateConnectionCollection : IDispatch 370{ 371 [propget, id(DISPID_NEWENUM), restricted] 372 HRESULT _NewEnum([out, retval] IUnknown **pVal); 373 374 [propget, id(1)] 375 HRESULT Count([out, retval] long *pVal); 376} 377 378[ 379 object, 380 uuid(c08956b7-1cd3-11d1-b1c5-00805fc1270e), 381 oleautomation, 382 dual, 383 pointer_default(unique) 384] 385interface INetSharingManager : IDispatch 386{ 387 [propget, id(1)] 388 HRESULT SharingInstalled([out, retval] VARIANT_BOOL *pbInstalled); 389 390 [propget, id(2)] 391 HRESULT EnumPublicConnections( 392 [in] SHARINGCONNECTION_ENUM_FLAGS Flags, 393 [out, retval] INetSharingPublicConnectionCollection **ppColl); 394 395 [propget, id(3)] 396 HRESULT EnumPrivateConnections( 397 [in] SHARINGCONNECTION_ENUM_FLAGS Flags, 398 [out, retval] INetSharingPrivateConnectionCollection **ppColl); 399 400 [propget, id(6)] 401 HRESULT INetSharingConfigurationForINetConnection( 402 [in] INetConnection *pNetConnection, 403 [out, retval] INetSharingConfiguration **ppNetSharingConfiguration); 404 405 [propget, id(7)] 406 HRESULT EnumEveryConnection([out, retval] INetSharingEveryConnectionCollection **ppColl); 407 408 [propget, id(8)] 409 HRESULT NetConnectionProps( 410 [in] INetConnection *pNetConnection, 411 [out, retval] INetConnectionProps **ppProps); 412} 413