//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (c) Microsoft Corporation. All rights reserved. // // File: AdHoc.idl // //---------------------------------------------------------------------------- cpp_quote("//+-------------------------------------------------------------------------") cpp_quote("//") cpp_quote("// Microsoft Windows") cpp_quote("// Copyright (c) Microsoft Corporation. All rights reserved.") cpp_quote("//") cpp_quote("//--------------------------------------------------------------------------") #ifndef DO_NO_IMPORTS import "oaidl.idl"; import "unknwn.idl"; import "wtypes.idl"; #endif cpp_quote("EXTERN_C const CLSID CLSID_AdHocManager;") // Reserved GUIDS for our use // // 8F10CC20-CF0D-42a0-ACBE-E2DE7007384D IID_IAdHocManager // 8F10CC21-CF0D-42a0-ACBE-E2DE7007384D IID_IEnumAdHocMediums // 8F10CC22-CF0D-42a0-ACBE-E2DE7007384D IID_IAdHocMediumManager // 8F10CC23-CF0D-42a0-ACBE-E2DE7007384D IID_IEnumAdHocConnections // 8F10CC24-CF0D-42a0-ACBE-E2DE7007384D IID_IAdHocConnection // 8F10CC25-CF0D-42a0-ACBE-E2DE7007384D // 8F10CC26-CF0D-42a0-ACBE-E2DE7007384D IID_IDot11AdHocManager // 8F10CC27-CF0D-42a0-ACBE-E2DE7007384D IID_IDot11AdHocManagerNotificationSink // 8F10CC28-CF0D-42a0-ACBE-E2DE7007384D IID_IEnumDot11AdHocNetworks // 8F10CC29-CF0D-42a0-ACBE-E2DE7007384D IID_IDot11AdHocNetwork // 8F10CC2A-CF0D-42a0-ACBE-E2DE7007384D IID_IDot11AdHocNetworkNotificationSink // // 8F10CC2B-CF0D-42a0-ACBE-E2DE7007384D IID_IDot11AdHocInterface // 8F10CC2C-CF0D-42a0-ACBE-E2DE7007384D IID_IEnumDot11AdHocInterfaces // 8F10CC2D-CF0D-42a0-ACBE-E2DE7007384D IID_IEnumDot11AdHocSecuritySettings // 8F10CC2E-CF0D-42a0-ACBE-E2DE7007384D IID_IDot11AdHocSecuritySettings // 8F10CC2F-CF0D-42a0-ACBE-E2DE7007384D IID_IDot11AdHocInterfaceNotificationSink // 8F10CC30-CF0D-42a0-ACBE-E2DE7007384D // 8F10CC31-CF0D-42a0-ACBE-E2DE7007384D // 8F10CC32-CF0D-42a0-ACBE-E2DE7007384D // 8F10CC33-CF0D-42a0-ACBE-E2DE7007384D // 8F10CC34-CF0D-42a0-ACBE-E2DE7007384D // 8F10CC35-CF0D-42a0-ACBE-E2DE7007384D // 8F10CC36-CF0D-42a0-ACBE-E2DE7007384D // interface IDot11AdHocManager; interface IDot11AdHocManagerNotificationSink; interface IEnumDot11AdHocNetworks; interface IDot11AdHocNetwork; interface IDot11AdHocNetworkNotificationSink; interface IDot11AdHocInterface; interface IEnumDot11AdHocInterfaces; interface IEnumDot11AdHocSecuritySettings; interface IDot11AdHocSecuritySettings; interface IDot11AdHocInterfaceNotificationSink; typedef [v1_enum] enum tagDOT11_ADHOC_CIPHER_ALGORITHM { DOT11_ADHOC_CIPHER_ALGO_INVALID = -1, DOT11_ADHOC_CIPHER_ALGO_NONE = 0x00, DOT11_ADHOC_CIPHER_ALGO_CCMP = 0x04, DOT11_ADHOC_CIPHER_ALGO_WEP = 0x101, } DOT11_ADHOC_CIPHER_ALGORITHM; typedef [v1_enum] enum tagDOT11_ADHOC_AUTH_ALGORITHM { DOT11_ADHOC_AUTH_ALGO_INVALID = -1, DOT11_ADHOC_AUTH_ALGO_80211_OPEN = 1, DOT11_ADHOC_AUTH_ALGO_RSNA_PSK = 7 } DOT11_ADHOC_AUTH_ALGORITHM; // // Valid Cipher - Auth pairs are as following: // 1) OPEN - NONE // AUTH_ALGO_80211_OPEN : CIPHER_ALGO_NONE // // 2) OPEN - WEP // AUTH_ALGO_80211_OPEN : CIPHER_ALGO_WEP // // 3) WPA2PSK // AUTH_ALGO_RSNA_PSK : CIPHER_ALGO_CCMP // /* typedef struct tagADHOC_SECURITY_SETTING { DOT11_ADHOC_AUTH_ALGORITHM AdHocAuth; DOT11_ADHOC_CIPHER_ALGORITHM AdHocCipher; } ADHOC_SECURITY_SETTING; */ typedef [v1_enum] enum tagDOT11_ADHOC_NETWORK_CONNECTION_STATUS { DOT11_ADHOC_NETWORK_CONNECTION_STATUS_INVALID = 0, DOT11_ADHOC_NETWORK_CONNECTION_STATUS_DISCONNECTED = 11, DOT11_ADHOC_NETWORK_CONNECTION_STATUS_CONNECTING = 12, DOT11_ADHOC_NETWORK_CONNECTION_STATUS_CONNECTED = 13, DOT11_ADHOC_NETWORK_CONNECTION_STATUS_FORMED = 14 } DOT11_ADHOC_NETWORK_CONNECTION_STATUS; typedef [v1_enum] enum tagDOT11_ADHOC_CONNECT_FAIL_REASON { DOT11_ADHOC_CONNECT_FAIL_DOMAIN_MISMATCH = 0, DOT11_ADHOC_CONNECT_FAIL_PASSPHRASE_MISMATCH = 1, DOT11_ADHOC_CONNECT_FAIL_OTHER = 2 } DOT11_ADHOC_CONNECT_FAIL_REASON; //+--------------------------------------------------------------------------- // IDot11AdHocManager -- root interface for the home networking configuration // manager. // [ local, object, uuid(8F10CC26-CF0D-42a0-ACBE-E2DE7007384D), pointer_default(unique) ] interface IDot11AdHocManager : IUnknown { // // Just returns if this system is even capable of creating // Ad-Hoc connections OR Whether NICs exists /* HRESULT GetMediumCapability( [out] ADHOC_MEDIA_CAPABILITIES* MediumPresence ); */ HRESULT CreateNetwork( [in, string] LPCWSTR Name, [in, string] LPCWSTR Password, [in] LONG GeographicalId, [in] IDot11AdHocInterface* pInterface, [in] IDot11AdHocSecuritySettings* pSecurity, [in] GUID* pContextGuid, [out] IDot11AdHocNetwork** pIAdHoc ); HRESULT CommitCreatedNetwork( [in] IDot11AdHocNetwork* pIAdHoc, [in] BOOLEAN fSaveProfile, [in] BOOLEAN fMakeSavedProfileUserSpecific ); // // Scan's and returns what Ad-Hoc connections are available around, // if a Guid filter is provided we try to filter off that key (by checking IE on the beacons) // HRESULT GetIEnumDot11AdHocNetworks( [in] GUID* pContextGuid, // Optional Guid for filtering [out] IEnumDot11AdHocNetworks** ppEnum // Enumerator ); HRESULT GetIEnumDot11AdHocInterfaces( [out] IEnumDot11AdHocInterfaces** ppEnum ); HRESULT GetNetwork( [in] GUID* NetworkSignature, [out] IDot11AdHocNetwork** pNetwork ); }; //+--------------------------------------------------------------------------- // IDot11AdHocManager -- root interface for the home networking configuration // manager. // [ local, object, uuid(8F10CC27-CF0D-42a0-ACBE-E2DE7007384D), pointer_default(unique) ] interface IDot11AdHocManagerNotificationSink : IUnknown { HRESULT OnNetworkAdd( [in] IDot11AdHocNetwork* pIAdHocNetwork ); HRESULT OnNetworkRemove( [in] GUID* Signature ); HRESULT OnInterfaceAdd( [in] IDot11AdHocInterface* pIAdHocInterface ); HRESULT OnInterfaceRemove( [in] GUID* Signature ); /* HRESULT OnChangeCapability( [in] ADHOC_MEDIA_CAPABILITIES NewCapability ); */ } //+--------------------------------------------------------------------------- // IEnumDot11AdHocNetworks -- Is used to enumerate the scanned Ad-Hoc Connections, // which optionally just matches the provided Guid Filter // [ local, object, uuid(8F10CC28-CF0D-42a0-ACBE-E2DE7007384D), pointer_default(unique) ] interface IEnumDot11AdHocNetworks : IUnknown { HRESULT Next ( [in] ULONG cElt, [out, size_is(cElt), length_is(*pcEltFetched)] IDot11AdHocNetwork** rgElt, [out] ULONG* pcEltFetched ); HRESULT Skip( [in] ULONG cElt ); HRESULT Reset(); HRESULT Clone( [out] IEnumDot11AdHocNetworks** ppEnum ); }; //+--------------------------------------------------------------------------- // IDot11AdHocNetwork -- // [ local, object, uuid(8F10CC29-CF0D-42a0-ACBE-E2DE7007384D), pointer_default(unique) ] interface IDot11AdHocNetwork : IUnknown { // // Gets The State // HRESULT GetStatus( [in, out] DOT11_ADHOC_NETWORK_CONNECTION_STATUS* eStatus ); // // Gets the SSID of the connection // HRESULT GetSSID( [out, string] LPWSTR* ppszwSSID ); // // Returns TRUE if this network object has a profile associated w/ it. // HRESULT HasProfile( [in, out] BOOLEAN* pf11d ); // // Gets the Profile Name of the connection if there is any // HRESULT GetProfileName( [out, string] LPWSTR* ppszwProfileName ); // // Deletes any associated profile w/ the network object // HRESULT DeleteProfile(); // // Returns the Signal Quality level and its maximum possible value. // HRESULT GetSignalQuality( [out] ULONG* puStrengthValue, [out] ULONG* puStrengthMax ); // // Is this adhoc network secure or not? // HRESULT GetSecuritySetting( [out] IDot11AdHocSecuritySettings** pAdHocSecuritySetting ); // // Return any Filter Guid Associated with this ad-hoc Connection (if-any) // HRESULT GetContextGuid( [in, out] GUID* pContextGuid ); // // Gets the L2 Signature of the connection // HRESULT GetSignature( [in, out] GUID* pSignature ); // // Gets the SSID of the connection // HRESULT GetInterface( [out] IDot11AdHocInterface** pAdHocInterface ); // // Triggers 802.11 Actions to be part of the ad-hoc connectioon // HRESULT Connect( [in, string] LPCWSTR Passphrase, // Passphrase, which may get converted to WPA-2 or WEP key [in] LONG GeographicalId, // ... [in] BOOLEAN fSaveProfile, [in] BOOLEAN fMakeSavedProfileUserSpecific ); HRESULT Disconnect(); }; //+--------------------------------------------------------------------------- // IDot11AdHocNetworkNotificationSink -- // [ local, object, uuid(8F10CC2A-CF0D-42a0-ACBE-E2DE7007384D), pointer_default(unique) ] interface IDot11AdHocNetworkNotificationSink : IUnknown { HRESULT OnStatusChange( DOT11_ADHOC_NETWORK_CONNECTION_STATUS eStatus ); HRESULT OnConnectFail( DOT11_ADHOC_CONNECT_FAIL_REASON eFailReason ); } //----------------------------------------------------------------------------- // IDot11AdHocInterface // // [ local, object, uuid(8F10CC2B-CF0D-42a0-ACBE-E2DE7007384D), pointer_default(unique) ] interface IDot11AdHocInterface : IUnknown { HRESULT GetDeviceSignature( [in, out] GUID* pSignature ); HRESULT GetFriendlyName( [out, string] LPWSTR* ppszName ); HRESULT IsDot11d( [in, out] BOOLEAN* pf11d ); HRESULT IsAdHocCapable( [in, out] BOOLEAN* pfAdHocCapable ); HRESULT IsRadioOn( [in, out] BOOLEAN* pfIsRadioOn ); HRESULT GetActiveNetwork( [out] IDot11AdHocNetwork** ppNetwork ); HRESULT GetIEnumSecuritySettings( [out] IEnumDot11AdHocSecuritySettings** ppEnum ); HRESULT GetIEnumDot11AdHocNetworks( [in] GUID* pFilterGuid, // Optional Guid for filtering [out] IEnumDot11AdHocNetworks** ppEnum // Enumerator ); HRESULT GetStatus( [in, out] DOT11_ADHOC_NETWORK_CONNECTION_STATUS* pState ); // HRESULT GetEnumCountriesSupported(); } // IDot11AdHocInterface //----------------------------------------------------------------------------- // IEnumDot11AdHocInterfaces // // [ local, object, uuid(8F10CC2C-CF0D-42a0-ACBE-E2DE7007384D), pointer_default(unique) ] interface IEnumDot11AdHocInterfaces : IUnknown { HRESULT Next ( [in] ULONG cElt, [out, size_is(cElt), length_is(*pcEltFetched)] IDot11AdHocInterface** rgElt, [out] ULONG* pcEltFetched ); HRESULT Skip( [in] ULONG cElt ); HRESULT Reset(); HRESULT Clone( [out] IEnumDot11AdHocInterfaces** ppEnum ); } //----------------------------------------------------------------------------- // IEnumDot11InterfaceSecuritySettings // // [ local, object, uuid(8F10CC2D-CF0D-42a0-ACBE-E2DE7007384D), pointer_default(unique) ] interface IEnumDot11AdHocSecuritySettings : IUnknown { HRESULT Next ( [in] ULONG cElt, [out, size_is(cElt), length_is(*pcEltFetched)] IDot11AdHocSecuritySettings** rgElt, [out] ULONG* pcEltFetched ); HRESULT Skip( [in] ULONG cElt ); HRESULT Reset(); HRESULT Clone( [out] IEnumDot11AdHocSecuritySettings** ppEnum ); } //----------------------------------------------------------------------------- // IDot11AdHocSecuritySettings // // [ local, object, uuid(8F10CC2E-CF0D-42a0-ACBE-E2DE7007384D), pointer_default(unique) ] interface IDot11AdHocSecuritySettings : IUnknown { HRESULT GetDot11AuthAlgorithm( [in, out] DOT11_ADHOC_AUTH_ALGORITHM* pAuth ); HRESULT GetDot11CipherAlgorithm( [in, out] DOT11_ADHOC_CIPHER_ALGORITHM* pCipher ); } //----------------------------------------------------------------------------- // IDot11AdHocInterfaceNotificationSink // // [ local, object, uuid(8F10CC2F-CF0D-42a0-ACBE-E2DE7007384D), pointer_default(unique) ] interface IDot11AdHocInterfaceNotificationSink : IUnknown { HRESULT OnConnectionStatusChange( DOT11_ADHOC_NETWORK_CONNECTION_STATUS eStatus ); } //---------------------------------------------------------- // // // [ uuid(45357166-FF38-4302-8F5C-DF5B703A6E3D), version(1.0), helpstring("AdHoc 1.0 Type Library") ] library ADHOCLib { importlib("stdole2.tlb"); [ uuid(DD06A84F-83BD-4d01-8AB9-2389FEA0869E), helpstring("Dot11AdHocManager Class") ] coclass Dot11AdHocManager { [default] interface IDot11AdHocManager; }; };