AnyConnect Secure Mobility Client COM API 5.1.9.113

VpnApi.idl

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