AnyConnect Secure Mobility Client COM API 4.10.06090

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