AnyConnect Secure Mobility Client COM API 4.3.00748

VpnApi.idl

00001 /**************************************************************************
00002 *       Copyright (c) 2008, Cisco Systems, All Rights Reserved
00003 ***************************************************************************
00004 *  
00005 *  File:    VpnApi.idl -- interface definition of the AnyConnect 
00006 *                         VPN API COM wrapper.
00007 *  Author:  Vincent E. Parla
00008 *  Date:    07/14/2008
00009 *
00010 **************************************************************************/
00011 
00012 /** @defgroup COM_API COM API 
00013 * This is the interface definition of the AnyConnect Secure Mobility VPN API COM wrapper.
00014 * Users of the COM API will #import vpnapi.dll to obtain the interface, method
00015 * and enumerator defintions.  
00016 * The .idl file is included in documentation for reference purposes only.
00017 *
00018 * NOTE: This interface specification is not immutable and can be broken by future versions.
00019 *       It is expected that your code will be recompiled / refactored to match the version
00020 *       of client installed on the system.
00021 *
00022 *  @{
00023 */
00024 import "oaidl.idl";
00025 import "ocidl.idl";
00026 import "api.h";                 /*obtain the api enumerators to embed in the type library*/
00027 import "VpnApiStringEnums.h";   /*obtain the string table enumerators to embed in the type library*/
00028 import "RegValueUpgradeCodes.h";/*obtain the upgrade code enumerator to embed in the type library*/
00029 
00030 cpp_quote("#ifdef __cplusplus")
00031 cpp_quote("    using namespace VpnApiStringEnums;")
00032 cpp_quote("#endif //__cplusplus")
00033 
00034     interface IVpnApiEvents;        //forward declaration of the IVpnApiEvents callback interface.
00035     interface IVpnStats;            //forward declaration of the IVpnStats interface.
00036     interface IConnectPromptInfo;   //forward declaration of the IConnectPromptInfo interface.
00037     interface IPromptEntry;         //forward declaration of the IPromptEntry interface.
00038     interface IPreferenceInfo;      //forward declaration of the IPreferenceInfo interface.
00039     interface IPreference;          //forward declaration of the IPreference interface.
00040 
00041     interface IStringCollection;    //forward declaration of the string collection utility interface
00042     interface IInterfaceCollection; //forward declaration of the interface collection utilty interface.
00043 
00044     /**
00045     * interface IVpnApi
00046     * Cisco AnyConnect Secure Mobility Client VPN API IDispatch interface specification.  This is the VPN API COM Server instantiated by the user via CoCreateInstance.
00047     */
00048     [
00049         object,
00050         uuid(027E04AD-347B-4E63-9E10-00BACB3970C8),
00051         oleautomation,
00052         nonextensible,
00053         dual,
00054         helpstring("Cisco AnyConnect Secure Mobility Client VPN API IVpnApi Interface specification.  This is the VPN API COM Server instantiated by the user via CoCreateInstance."),
00055         pointer_default(unique)
00056     ]
00057     interface IVpnApi : IDispatch
00058     {
00059         [id(1), helpstring("method Register. This is a convenience method for attaching one or more callback interface(s) without using the IConnectionPoint interface directly.")] 
00060         HRESULT Register([in] IVpnApiEvents * pVpnApiEvents, [out, retval] DWORD * pdwCookie);
00061         
00062         [id(2), helpstring("method Unregister. This is a convenience method for detaching a callback interface without using the IConnectionPoint interface directly.")] 
00063         HRESULT Unregister([in] DWORD dwCookie);
00064 
00065         [id(3), helpstring("method Attach. This is the first method that is called to configure the VPN API engine.  An event callback IVpnApiEvents is assumed to be already associated, prior to calling this method.  Languages like C# would use this method after wiring up the events.")]
00066         HRESULT Attach([in, defaultvalue(0)/*false*/] VARIANT_BOOL bIsSBL, 
00067                        [in, defaultvalue(-1)/*true*/] VARIANT_BOOL bIsPrimaryGUI,
00068                        [in, defaultvalue(-1)/*true*/] VARIANT_BOOL bRequestFullCapabilities,
00069                        [in, defaultvalue(-1)/*true*/] VARIANT_BOOL bSuppressAutoConnect);
00070        
00071         [id(4), helpstring("method Detach. This is the last method that is called to terminate the VPN API engine. Languages like C# would use this method after wiring up the events.")] 
00072         HRESULT Detach();
00073 
00074         [id(5), helpstring("method RegisterAndAttach. This method combines Register and Attach into a single convenience method.  This supports only one IVpnApiEvents instance per IVpnApi instance.  Languages that handle connection points under the covers, like C#, would not use this method, but would instead simply use Attach().")]
00075         HRESULT RegisterAndAttach([in] IVpnApiEvents * pVpnApiEvents, 
00076                                   [in, defaultvalue(0)/*false*/] VARIANT_BOOL bIsSBL, 
00077                                   [in, defaultvalue(-1)/*true*/] VARIANT_BOOL bIsPrimaryGUI,
00078                                   [in, defaultvalue(-1)/*true*/] VARIANT_BOOL bRequestFullCapabilities,
00079                                   [in, defaultvalue(-1)/*true*/] VARIANT_BOOL bSuppressAutoConnect);
00080        
00081         [id(6), helpstring("method UnregisterAndDetach. This method combines Unregister and Detach into a single convenience method.  This supports only one IVpnApiEvents instance per IVpnApi instance. Languages that handle connection points under the covers, like C#, would not use this method, but would instead simply use Detach().")] 
00082         HRESULT UnregisterAndDetach();
00083  
00084         [id(7), propput, helpstring("property EnableConsumerDrivenEventModel.  Call this before attaching, to enable a consumer-driven event model.  This enables the IVpnApiEvents::VpnEventAvailableNotification.")] 
00085         HRESULT EnableConsumerDrivenEventModel([in] VARIANT_BOOL bEnable);
00086 
00087         [id(8), helpstring("method ProcessEvents. Use this method if the consumer-driven event model is configured and an IVpnApiEvents::VpnEventAvailableNotification was fired.")] 
00088         HRESULT ProcessEvents();
00089 
00090         [id (9), propget, helpstring("property HasFullCapabilities.  Indicates whether this instance of the VPN API engine is the master instance.")] 
00091         HRESULT HasFullCapabilities([out, retval] VARIANT_BOOL* pbHasFullCapabilities);
00092         
00093         [id(10), propget, helpstring("property IsConnected.  Indicates that there is a VPN connection.")]
00094         HRESULT IsConnected([out, retval] VARIANT_BOOL* pbIsConnected);
00095 
00096         [id(11), propget, helpstring("property IsVPNServiceAvailable.  Indicates that the VPN Service is active. (This is also delivered to the IVpnApiEvents callback.)")]
00097         HRESULT IsVPNServiceAvailable([out, retval] VARIANT_BOOL* pbIsVPNServiceAvailable);
00098         
00099         [id(12), propget, helpstring("property HostNames.  Obtains a collection of hostname strings from the profile.")] 
00100         HRESULT HostNames([out, retval] IStringCollection** ppIStringCollection);
00101 
00102         [id(13), propget, helpstring("property DefaultHostName.  Obtains the default hostname from the profile or the last hostname from a previous connection.")] 
00103         HRESULT DefaultHostName([out, retval] BSTR* pstrGetDefaultHostName);
00104         
00105         [id(14), helpstring("method ConnectVpn.  Connects to the secure gateway using a hostname or ip address.")] 
00106         HRESULT ConnectVpn([in] BSTR strHostNameOrAddress);
00107         
00108         [id(15), helpstring("method DisconnectVpn.  Disconnects from the secure gateway VPN session")] 
00109         HRESULT DisconnectVpn();
00110 
00111         [id(16), helpstring("method GetState.  Causes the VPN API engine to invoke the IVpnApiEvents::VpnStateNotification method to deliver the current state.")] 
00112         HRESULT GetState();
00113 
00114         [id(17), helpstring("method ResetStats.  Resets the the internal stat counters back to initial values.")] 
00115         HRESULT ResetStats();
00116 
00117         [id(18), helpstring("method StartStats.  Starts the automatic stats notification mechanism.  This results in IVpnApiEvents::VpnStatsNotification being fired periodically.")]
00118         HRESULT StartStats();
00119 
00120         [id(19), helpstring("method StopStats.  Stops the automatic stats notification mechanism.")] 
00121         HRESULT StopStats();
00122 
00123         [id(20), helpstring("method UserSubmit.  The caller must release the IConnectPromptInfo object, obtained from IVpnApiEvents::VpnUserPromptNotification, prior to calling this method.")] 
00124         HRESULT UserSubmit();
00125 
00126         [id(21), propget, helpstring("property Preferences.  Obtains a collection of IPreference interface instances.")] 
00127         HRESULT Preferences([out, retval] IPreferenceInfo** ppPreferenceInfo);
00128   
00129         [id(22), helpstring("method SavePreferences.  The caller must release the IPreferenceInfo object prior to calling this method.")] 
00130         HRESULT SavePreferences();
00131 
00132         [id(23), propput, helpstring("property BannerResponse.  Call this with the user response to the banner.")] 
00133         HRESULT BannerResponse([in] VARIANT_BOOL bResponse);
00134 
00135         [id(24), propget, helpstring("property OperatingMode.  Indicates if an operating mode is enabled.")] 
00136         HRESULT IsOperatingMode([in] enum OperatingMode eOperatingMode, [out, retval] VARIANT_BOOL* pbIsEnabled);
00137 
00138         [id(25), helpstring("method GetStats.  Causes the VPN API engine to invoke the IVpnApiEvents::VpnStatsNotification method to deliver the current stats.")] 
00139         HRESULT GetStats();
00140 
00141         [id(26), propput, helpstring("property CertBlockedResponse.  Call this with the user response to the CertBlockedCB.")]
00142         HRESULT CertBlockedResponse([in] VARIANT_BOOL bUnblock);
00143 
00144         [id(27), propput, helpstring("property CertWarningResponse.  Call this with the user response to the CertWarningCB.")]
00145         HRESULT CertWarningResponse([in] VARIANT_BOOL bConnect, [in] VARIANT_BOOL bImport);
00146 
00147         [id(99), propget, helpstring("property VpnStatsTranslatedLabel.  Allows for pre-fetching translated labels for various VPN statistics prior to obtaining an IVpnStats interface")] 
00148         HRESULT VpnStatsTranslatedLabel([in] enum VPNStatsTag eVPNStatsTag, [out, retval] BSTR* pstrTranslatedLabel);
00149 
00150         
00151         //methods used to obtain the registry key and value to query to determine when a vpn software upgrade is completed.
00152         //
00153         [id(998), propget, helpstring("property UpgradeRegistryKeyName.  returns the name of the registry key to monitor for core software upgrade completions.")]
00154         HRESULT UpgradeRegistryKeyName([out, retval] BSTR* pstrUpgradeRegistryKeyName);
00155         [id(999), propget, helpstring("property UpgradeRegistryValueName.  returns the name of the registry value to query for core software upgrade completions when the key change is notified.")]
00156         HRESULT UpgradeRegistryValueName([out, retval] BSTR* pstrUpgradeRegistryValueName);
00157     };
00158 
00159     /**
00160     * interface IVpnApiEvents
00161     * Cisco AnyConnect Secure Mobility Client VPN API Event Callback IDispatch interface specification.  This is the VPN API COM Event Callback interface that a developer implements and passes to the COM Server using the Attach, RegisterAndAttach, or indirectly via connection points in languages such as C#.
00162     */
00163     [
00164         object,
00165         uuid(5D446DC1-A494-4D3D-B5AD-0ADACB3B3EE3),
00166         oleautomation,
00167         nonextensible,
00168         dual,
00169         helpstring("Cisco AnyConnect Secure Mobility Client VPN API IVpnApiEvents callback Interface specification.  A user of the VpnApi COM Server provides this interface to receive event notifications."),
00170         pointer_default(unique)
00171     ]
00172     interface IVpnApiEvents : IDispatch
00173     { 
00174         [id(1000), helpstring("method VpnStatsNotification.  Callback containing a IVpnStats object to be queried for stats.")] 
00175         HRESULT VpnStatsNotification([in] IVpnStats * pVpnStats);
00176 
00177         [id(1001), helpstring("method VpnStateNotification.  Callback containing the state of the VPN session")]
00178         HRESULT VpnStateNotification([in] enum VPNState eState, [in] BSTR strState);
00179 
00180         [id(1002), helpstring("method VpnBannerNotification.  Callback containing a Banner notification string.")]
00181         HRESULT VpnBannerNotification([in] BSTR strBannerMessage);
00182 
00183         [id(1003), helpstring("method VpnStateNotification.  Callback containing a notice pertaining to the VPN session")]
00184         HRESULT VpnNoticeNotification([in] BSTR strNoticeMessage, [in] enum MessageType eMessageType);
00185 
00186         [id(1004), helpstring("method VpnExitNotification.  Callback containing a notice indicating to shutdown the VPN API release to COM component.")]
00187         HRESULT VpnExitNotification([in] BSTR strExitMessage, [in] long exitCode);
00188 
00189         [id(1005), helpstring("method VpnServiceReadyNotification.  Callback indicating the VPN Service is online")] /*this could be a prop_put*/
00190         HRESULT VpnServiceReadyNotification();
00191 
00192         [id(1006), helpstring("method VpnUserPromptNotification.  Callback indicating the VPN Service is online")] /*this could be a prop_put*/
00193         HRESULT VpnUserPromptNotification([in] IConnectPromptInfo * pConnectPromptInfo);
00194 
00195         [id(1007), helpstring("method VpnWMHintNotification.  Callback containing UI behavior hint and reason.")]
00196         HRESULT VpnWMHintNotification([in] enum WMHint eHint, [in] enum WMHintReason eReason);
00197 
00198         [id(1008), helpstring("method VpnWebLaunchHostNotification.  Callback containing the Active Host pertaining to the VPN session")]
00199         HRESULT VpnWebLaunchHostNotification([in] BSTR strActiveHost);
00200 
00201         [id(1009), helpstring("method VpnEventAvailableNotification.  Callback indicating an API Event is available to consume.  This notification is sent only if configured to use the consumer-driven event model.  A COM user then calls IVpnApi::ProcessEvents.")]/*this could be a prop_put*/
00202         HRESULT VpnEventAvailableNotification();
00203 
00204         [id(1010), helpstring("method VpnCertBlockedNotification.  Callback indicating strUntrustedServer is an untrusted server.")]
00205         HRESULT VpnCertBlockedNotification([in] BSTR strUntrustedServer);
00206 
00207         [id(1011), helpstring("method VpnCertWarningNotification.  Callback indicating strUntrustedServer is an untrusted server because of the certificate errors in pCertErrors.")]
00208         HRESULT VpnCertWarningNotification([in] BSTR strUntrustedServer, [in] IStringCollection *pCertErrors, [in] VARIANT_BOOL bImportAllowed);
00209     };
00210 
00211     /**
00212     * interface IVpnStats
00213     * Cisco AnyConnect Secure Mobility Client VPN API Statistics IDispatch interface specification.  This is a non-creatable interface that is passed to via an Event Callback method and represents a VPN Statistics object.
00214     */
00215     [
00216         object,
00217         uuid(42B1B1F3-5E1E-4d5d-9C59-2E484C726CE6),
00218         oleautomation,
00219         nonextensible,
00220         dual,
00221         helpstring("Cisco AnyConnect Secure Mobility Client VPN API IVpnStats Interface specification."),
00222         pointer_default(unique)
00223     ]
00224     interface IVpnStats : IDispatch
00225     { 
00226         [id(100), propget, helpstring("property SecureRoutes.  Obtains a collection of IRouteInfo interface instances.")] 
00227         HRESULT SecureRoutes([out, retval] IInterfaceCollection** ppSecureRouteInfoCollection);
00228         
00229         [id(101), propget, helpstring("property NonsecureRoutes.  Obtains a collection of IRouteInfo interface instances.")] 
00230         HRESULT NonsecureRoutes([out, retval] IInterfaceCollection** ppNonsecureRouteInfoCollection);
00231         
00232         [id(102), propget, helpstring("property ProtocolInfo.  Obtains a collection of IProtocolInfo interface instances.")] 
00233         HRESULT ProtocolInfo([out, retval] IInterfaceCollection** ppProtocolInfoCollection);
00234         
00235         [id(103), propget, helpstring("property FirewallInfo.  Obtains a collection of IFirewallInfo interface instances.")] 
00236         HRESULT FirewallInfo([out, retval] IInterfaceCollection** ppFirewallInfoCollection);
00237         
00238         [id(DISPID_VALUE), propget, helpstring("property StatValue.  Obtains the value for various VPN statistics associated IVpnStats interface. (NOTE: This is functionally the same as GetVpnStatsTranslatedLabel.)")] 
00239         HRESULT StatValue([in] enum VPNStatsTag eVPNStatsTag, [out,retval] BSTR* pstrStatValue);
00240 
00241         [id(104), propget, helpstring("property TranslatedLabel.  Obtains the translated labels for various VPN statistics associated IVpnStats interface. (NOTE: This is functionally the same as GetVpnStatsTranslatedLabel.)")] 
00242         HRESULT TranslatedLabel([in] enum VPNStatsTag eVPNStatsTag, [out,retval] BSTR* pstrTranslatedLabel);
00243     };
00244 
00245     /**
00246     * interface IConnectPromptInfo
00247     * Cisco AnyConnect Secure Mobility Client VPN API Connection Prompt IDispatch interface specification.  This is a non-creatable interface that is passed to via an Event Callback method and represents a VPN Connect Prompt Information object.
00248     */
00249     [
00250         object,
00251         uuid(811A60FE-D3E0-4fe6-B627-30723A93554C),
00252         oleautomation,
00253         nonextensible,
00254         dual,
00255         helpstring("Cisco AnyConnect Secure Mobility Client VPN API IConnectPromptInfo Interface specification."),
00256         pointer_default(unique)
00257     ]
00258     interface IConnectPromptInfo : IDispatch
00259     { 
00260         [id(200), propget, helpstring("property ConnectPromptType.  The type of prompt entry.")] 
00261         HRESULT ConnectPromptType([out, retval] enum ConnectPromptType* peConnectPromptType);
00262 
00263         [id(201), propget, helpstring("property CountPromptEntry.  The number of prompt entries in the collection.")] 
00264         HRESULT CountPromptEntry([out, retval] unsigned long* pulEntryCount);
00265         
00266         [id(202), propget, helpstring("property Message.  Provides a message associated with the credentials being entered.")] 
00267         HRESULT Message([out, retval] BSTR* pMessage);
00268         
00269         [id(203), propget, helpstring("property PromptNames.  Obtains a collection of prompt name strings if available.")] 
00270         HRESULT PromptNames([out, retval] IStringCollection** ppPromptNamesCollection);
00271 
00272         [id(DISPID_VALUE), propget, helpstring("property PromptEntry. Obtains a prompt entry based on a tag value provided.")]
00273         HRESULT PromptEntry([in] BSTR strPromptName, [out, retval] IPromptEntry ** ppPromptEntry);
00274 
00275         [id(205), propget, helpstring("property PromptEntries.  Obtains a collection of prompt entries.")] 
00276         HRESULT PromptEntries([out, retval] IInterfaceCollection** ppPromptEntriesCollection);
00277 
00278         [id(206), propget, helpstring("property HasAuthenticationError.  Indicates whether an authentication error has occurred.")]
00279         HRESULT HasAuthenticationError([out, retval] VARIANT_BOOL* pbAuthErr);
00280         
00281         [id(207), propget, helpstring("property SubmitButtonName. Provides the name to be used for the Submit Button.")] 
00282         HRESULT SubmitButtonName([out, retval] BSTR* pstrSubmitButton);
00283         
00284         [id(208), propget, helpstring("property HasEnrollmentCA. Indicates an Enrollment CA is available.")] 
00285         HRESULT HasEnrollmentCA([out, retval] VARIANT_BOOL* pbCAAvailable);
00286         
00287         [id(209), propput, helpstring("property UseEnrollmentCA.  Inform the VPN API to use the Enrollement CA.")] 
00288         HRESULT UseEnrollmentCA([in] VARIANT_BOOL bUseCA);
00289         
00290         [id(210), propput, helpstring("property TunnelGroup.  Allows the setting of the currently selected Tunnel group")] 
00291         HRESULT TunnelGroup([in] BSTR strSelectedTunnelGroup);
00292 
00293         [id(211), propget, helpstring("property IsCanceled.  Indicates if the user has canceled the prompt.")] 
00294         HRESULT IsCanceled([out, retval] VARIANT_BOOL* pbIsCanceled);
00295 
00296         [id(212), propput, helpstring("property Canceled.  Inform the VPNAPI that the user has canceled the prompt.")] 
00297         HRESULT Canceled([in] VARIANT_BOOL bIsCanceled);
00298     };
00299 
00300     /**
00301     * interface IVpnStats
00302     * Cisco AnyConnect Secure Mobility Client VPN API Prompt Entry IDispatch interface specification.  This is a non-creatable interface that is contains Prompt Entry information.
00303     */
00304     [
00305         object,
00306         uuid(548A1F06-AECE-4506-8ABB-5E3D3A99B67B),
00307         oleautomation,
00308         nonextensible,
00309         dual,
00310         helpstring("Cisco AnyConnect Secure Mobility Client VPN API IPromptEntry Interface specification."),
00311         pointer_default(unique)
00312     ]
00313     interface IPromptEntry : IDispatch
00314     { 
00315         [id(301), propget, helpstring("property Value. Gets the current value for the prompt entry.")] 
00316         HRESULT Value([out, retval] BSTR* pstrValue);
00317 
00318         [id(301), propput, helpstring("property Value.  Sets a value explicitly for a prompt entry.")] 
00319         HRESULT Value([in] BSTR strValue);
00320 
00321         [id(302), propget, helpstring("property PromptName.  This is the non-translated prompt.")] 
00322         HRESULT PromptName([out, retval] BSTR* pstrPromptName);
00323 
00324         [id(303), propget, helpstring("property PromptLabel.  This is the translated prompt.")] 
00325         HRESULT PromptLabel([out, retval] BSTR* pstrPromptLabel);
00326 
00327         [id(304), propget, helpstring("property PromptType.  Obtains the type of prompt (for example, password), etc.")] 
00328         HRESULT PromptType([out, retval] enum PromptType* pPromptType);
00329 
00330         [id(305), propget, helpstring("property IsEnabled.  Indicates whether this should be user editable.")] 
00331         HRESULT IsEnabled([out, retval] VARIANT_BOOL* pbIsEnabled);
00332 
00333         [id(306), propget, helpstring("property IsVisible.  Indicates whether this should be displayed to the user.")] 
00334         HRESULT IsVisible([out, retval] VARIANT_BOOL* pbIsVisible);
00335 
00336         [id(307), propget, helpstring("property ValueOptions.  Obtains a collection of value option strings.")] 
00337         HRESULT ValueOptions([out, retval] IStringCollection** ppValueOptionsCollection);
00338 
00339         [id(308), propget, helpstring("property IsEntryGroup")] 
00340         HRESULT IsEntryGroup([out, retval] VARIANT_BOOL* pbIsEntryGroup);
00341     };
00342 
00343     /**
00344     * interface IRouteInfo
00345     * Cisco AnyConnect Secure Mobility Client VPN API Route Information IDispatch interface specification.  This is a non-creatable interface that represents a Route Information object.
00346     */
00347     [
00348         object,
00349         uuid(02E2AE5E-A8C8-458e-92B0-B72B322B623C),
00350         oleautomation,
00351         nonextensible,
00352         dual,
00353         helpstring("Cisco AnyConnect Secure Mobility Client VPN API IRouteInfo Interface specification."),
00354         pointer_default(unique)
00355     ]
00356     interface IRouteInfo : IDispatch
00357     { 
00358         [id(401), propget, helpstring("property Network route")] 
00359         HRESULT Network([out, retval] BSTR* pstrNetwork);
00360 
00361         [id(402), propget, helpstring("property Subnet for the route.")] 
00362         HRESULT Subnet([out, retval] BSTR* pstrSubnet);
00363     };
00364 
00365     /**
00366     * interface IProtocolInfo
00367     * Cisco AnyConnect Secure Mobility Client VPN API Protocol Information IDispatch interface specification.  This is a non-creatable interface that represents a Protocol Information object.
00368     */
00369     [
00370         object,
00371         uuid(A0D63CA4-68E6-44e8-8738-19D6E4BC82BE),
00372         oleautomation,
00373         nonextensible,
00374         dual,
00375         helpstring("Cisco AnyConnect Secure Mobility Client VPN API IProtocolInfo Interface specification."),
00376         pointer_default(unique)
00377     ]
00378     interface IProtocolInfo : IDispatch
00379     { 
00380         [id(501), propget, helpstring("property ProtocolLabel.  Obtain a protocol label string from the enumerated type.")] 
00381         HRESULT ProtocolLabel([in] enum ProtocolInfoTag eProtocolInfoTag, 
00382                               [out, retval] BSTR* pstrProtocolLabel);
00383 
00384         [id(DISPID_VALUE), propget, helpstring("property ProtocolValue.  Obtain a protocol value string from the enumerated type.")] 
00385         HRESULT ProtocolValue([in] enum ProtocolInfoTag eProtocolInfoTag, 
00386                               [out, retval] BSTR* pstrProtocolValue);
00387 
00388         [id(503), propget, helpstring("property IsActive.  Indicates if the protocol is active.")] 
00389         HRESULT IsActive([out, retval] VARIANT_BOOL * pbIsActive);
00390     };
00391 
00392     /**
00393     * interface IFirewallInfo
00394     * Cisco AnyConnect Secure Mobility Client VPN API Firewall Information IDispatch interface specification.  This is a non-creatable interface that represents a Firweall Information object containing firewall rule information.
00395     */
00396     [
00397         object,
00398         uuid(F71DC93F-C07D-44a3-95B4-864177AE0F7E),
00399         oleautomation,
00400         nonextensible,
00401         dual,
00402         helpstring("Cisco AnyConnect Secure Mobility Client VPN API IFirewallInfo Interface specification."),
00403         pointer_default(unique)
00404     ]
00405     interface IFirewallInfo : IDispatch
00406     { 
00407         [id(541), propget, helpstring("property Permission of a firewall rule")] 
00408         HRESULT Permission([out, retval] BSTR* pstrPermission);
00409 
00410         [id(542), propget, helpstring("property Protocol for a firewall rule.")] 
00411         HRESULT Protocol([out, retval] BSTR* pstrProtocol);
00412 
00413         [id(543), propget, helpstring("property Interface for a firewall rule.")] 
00414         HRESULT Interface([out, retval] BSTR* pstrInterface);
00415 
00416         [id(544), propget, helpstring("property Source Port Range for a firewall rule.")] 
00417         HRESULT SrcPortRange([out, retval] BSTR* pstrSrcPortRange);
00418 
00419         [id(545), propget, helpstring("property Destination Port Range for a firewall rule.")] 
00420         HRESULT DstPortRange([out, retval] BSTR* pstrDstPortRange);
00421 
00422         [id(546), propget, helpstring("property Destination Address for a firewall rule.")] 
00423         HRESULT DstAddr([out, retval] BSTR* pstrDstAddr);
00424     };
00425 
00426 
00427     /**
00428     * interface IPreferenceInfo
00429     * Cisco AnyConnect Secure Mobility Client VPN API User Preference Information IDispatch interface specification.  This is a non-creatable interface that represents a User Preference Information object.
00430     */
00431     [
00432         object,
00433         uuid(3E73BCCD-C4E4-4842-AB58-9F973E7D226F),
00434         oleautomation,
00435         nonextensible,
00436         dual,
00437         helpstring("Cisco AnyConnect Secure Mobility Client VPN API IPreferenceInfo Interface specification."),
00438         pointer_default(unique)
00439     ]
00440     interface IPreferenceInfo : IDispatch
00441     {
00442         [id(601), propget, helpstring("property CountPreferences.  The number of preferences available.")]
00443         HRESULT CountPreferences([out, retval] unsigned long * pulCountPreferences);
00444   
00445         [id(DISPID_VALUE), propget, helpstring("property Preference.  Gets the instance of an IPreference interface associated with the preference tag.")]
00446         HRESULT Preference([in] enum PreferenceId ePreferenceId, [out, retval] IPreference** ppPreference);
00447 
00448         [id(603), propget, helpstring("property Preferences.  Obtains a collection of IPreference interface instances.")] 
00449         HRESULT Preferences([out, retval] IInterfaceCollection** ppPreferencesCollection);
00450 
00451         [id(604), propget, helpstring("property PreferenceHeading.  The heading string for preferences.")]
00452         HRESULT PreferenceHeading([out, retval] BSTR * pstrPreferenceHeading);
00453     };
00454 
00455     /**
00456     * interface IPreference
00457     * Cisco AnyConnect Secure Mobility Client VPN API Usser Preference IDispatch interface specification.  This is a non-creatable interface that represents a User Preference object.
00458     */
00459     [
00460         object,
00461         uuid(01F3D78C-AC49-48d1-8782-0EB481961341),
00462         oleautomation,
00463         nonextensible,
00464         dual,
00465         helpstring("Cisco AnyConnect Secure Mobility Client VPN API IPreference Interface specification."),
00466         pointer_default(unique)
00467     ]
00468     interface IPreference : IDispatch
00469     {
00470         [id(701), propget, helpstring("property PreferenceValue. Gets the current value for the preference entry.")] 
00471         HRESULT PreferenceValue([out, retval] BSTR* pstrPreferenceValue);
00472 
00473         [id(701), propput, helpstring("property PreferenceValue. Sets the value explicitly for a preference entry.")] 
00474         HRESULT PreferenceValue([in] BSTR strPreferenceValue);
00475         
00476         [id(703), propget, helpstring("property PreferenceId. Gets the preference identifier enumeration value for the preference entry.")] 
00477         HRESULT PreferenceId([out, retval] enum PreferenceId * pPreferenceId);
00478 
00479         [id(704), propget, helpstring("property Children.  Obtains a collection of IPreference interface instances that are sub-entries of this preference.")] 
00480         HRESULT Children([out, retval] IInterfaceCollection** ppChildPreferencesCollection);
00481 
00482         [id(705), propget, helpstring("property PromptEntry. Obtains a prompt entry instance associated with this preference.")]
00483         HRESULT PromptEntry([out, retval] IPromptEntry ** ppPromptEntry);
00484     };
00485 
00486 
00487     //Collection interfaces//
00488 
00489     /**
00490     * interface IStringCollection
00491     * Cisco AnyConnect Secure Mobility Client VPN API String Collection IDispatch interface specification.  This is a non-creatable interface that represents a Collection of Strings.
00492     */
00493     [
00494         object,
00495         uuid(6292ECAC-42CD-43ea-A96C-0C072772B4BE),
00496         oleautomation,
00497         nonextensible,
00498         dual,
00499         helpstring("Cisco AnyConnect Secure Mobility Client VPN API Utility String Collection Interface specification."),
00500         pointer_default(unique)
00501     ]
00502     interface IStringCollection : IDispatch
00503     {
00504         [id(DISPID_NEWENUM), propget, helpstring("method _NewEnum.  Obtains a new String Collection enumerator interface.")]
00505         HRESULT _NewEnum([out, retval] IUnknown** ppUnk);
00506 
00507         [id(DISPID_VALUE), propget, helpstring("property Item.  Obtains a string object in the collection.  NOTE: collections are 1's based indexing.")]
00508         HRESULT Item([in] long nIndex, [out, retval] BSTR* pString);
00509 
00510         [id(1), propget, helpstring("property Count.  Obtains the count of the number of objects in the collection.")] 
00511         HRESULT Count([out, retval] long * pCount);
00512     };
00513 
00514     /**
00515     * interface IStringCollection
00516     * Cisco AnyConnect Secure Mobility Client VPN API Interface Collection IDispatch interface specification.  This is a non-creatable interface that represents a Collection of Interface instances of objects.
00517     */
00518     [
00519         object,
00520         uuid(E0854B5E-16D3-46b5-8767-420EB1F48041),
00521         oleautomation,
00522         nonextensible,
00523         dual,
00524         helpstring("Cisco AnyConnect Secure Mobility Client VPN API Utility IUnknown Collection Interface specification."),
00525         pointer_default(unique)
00526     ]
00527     interface IInterfaceCollection : IDispatch
00528     {
00529         [id(DISPID_NEWENUM), propget, helpstring("property _NewEnum.  Obtains a new Interface Collection enumerator interface.")]
00530         HRESULT _NewEnum([out, retval] IUnknown** ppUnk);
00531 
00532         [id(DISPID_VALUE), propget, helpstring("property Item.  Obtains an IUnknown interface for an object in the collection.  The user would then QI for the actual interface they wanted to obtain.  NOTE: collections are 1's based indexing.")]
00533         HRESULT Item([in] long nIndex, [out, retval] IUnknown** ppInterface);
00534 
00535         [id(1), propget, helpstring("property Count.  Obtains the count of the number of objects in the collection.")] 
00536         HRESULT Count([out, retval] long * pCount);
00537     };
00538 
00539 /////////////////////////////////////// VPN API Type Library //////////////////////////////////////
00540 [
00541     uuid(C15C09AE-FCCE-9221-FFA2-7465FEAAE55A),
00542     version(1.0),
00543     helpstring("Cisco AnyConnect Secure Mobility Client VPN API 1.0 Type Library")
00544 ]
00545 library VpnApiLib
00546 {
00547     importlib("stdole32.tlb");
00548     importlib("stdole2.tlb");
00549 
00550     [
00551         uuid(C15C0F4F-DDFB-4591-AD53-C9A71C9C15C0),
00552         helpstring("VpnApi Class")
00553     ]
00554     coclass VpnApi
00555     {
00556         [default] interface IVpnApi;
00557         [default, source] dispinterface IVpnApiEvents;
00558     };
00559 
00560     interface IRouteInfo;
00561     interface IProtocolInfo;
00562     interface IFirewallInfo;
00563     enum RegValueUpgradeCodesTag;
00564 }
00565 
00566 /** @} */