| AnyConnect Secure Mobility Client COM API 5.0.02075

- Main Page
- Modules
- Classes
- Files

- File List

# 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 /** @} */