/* Automated generated idl file <sdohlplib>.
 * Generated by genidl tool (c) 2009, 2010 Mingw-w64 project.
 */

/* Interface forward declarations.  */
interface IIASItemInternal;

/* Union record forward declarations.  */
dispinterface IIASItem;
dispinterface ISdo;
dispinterface IIASEnum;
dispinterface IIASCollection;
dispinterface ISdoCollection;
dispinterface IIASItemsCollection;
dispinterface IIASAttributesCollection;
dispinterface IIASConditionsCollection;
dispinterface IIASAccounting;
dispinterface IIASFileAccounting;
dispinterface IIASSQLAccounting;
dispinterface IIASService;
dispinterface IIASClient;
dispinterface IIASRemoteServer;
dispinterface IIASRemediationServer;
dispinterface IIASPolicy;
dispinterface IIASServerGroup;
dispinterface IIASSHVTemplate;
dispinterface IIASSDOHelper;
dispinterface ISdoDictionaryOld;
dispinterface ISdoServiceControl;

/* Union record forward declarations.  */
coclass IASSDOHelper;

/* Enumeration declarations.  */
enum _ATTRIBUTEID
{
  ATTRIBUTE_UNDEFINED = (int) 201326592,
  ATTRIBUTE_MIN_VALUE = (int) 201326593,
  RADIUS_ATTRIBUTE_USER_NAME = (int) 201326593,
  RADIUS_ATTRIBUTE_USER_PASSWORD = (int) 201326594,
  RADIUS_ATTRIBUTE_CHAP_PASSWORD = (int) 201326595,
  RADIUS_ATTRIBUTE_NAS_IP_ADDRESS = (int) 201326596,
  RADIUS_ATTRIBUTE_NAS_PORT = (int) 201326597,
  RADIUS_ATTRIBUTE_SERVICE_TYPE = (int) 201326598,
  RADIUS_ATTRIBUTE_FRAMED_PROTOCOL = (int) 201326599,
  RADIUS_ATTRIBUTE_FRAMED_IP_ADDRESS = (int) 201326600,
  RADIUS_ATTRIBUTE_FRAMED_IP_NETMASK = (int) 201326601,
  RADIUS_ATTRIBUTE_FRAMED_ROUTING = (int) 201326602,
  RADIUS_ATTRIBUTE_FILTER_ID = (int) 201326603,
  RADIUS_ATTRIBUTE_FRAMED_MTU = (int) 201326604,
  RADIUS_ATTRIBUTE_FRAMED_COMPRESSION = (int) 201326605,
  RADIUS_ATTRIBUTE_LOGIN_IP_HOST = (int) 201326606,
  RADIUS_ATTRIBUTE_LOGIN_SERVICE = (int) 201326607,
  RADIUS_ATTRIBUTE_LOGIN_TCP_PORT = (int) 201326608,
  RADIUS_ATTRIBUTE_UNASSIGNED1 = (int) 201326609,
  RADIUS_ATTRIBUTE_REPLY_MESSAGE = (int) 201326610,
  RADIUS_ATTRIBUTE_CALLBACK_NUMBER = (int) 201326611,
  RADIUS_ATTRIBUTE_CALLBACK_ID = (int) 201326612,
  RADIUS_ATTRIBUTE_UNASSIGNED2 = (int) 201326613,
  RADIUS_ATTRIBUTE_FRAMED_ROUTE = (int) 201326614,
  RADIUS_ATTRIBUTE_FRAMED_IPX_NETWORK = (int) 201326615,
  RADIUS_ATTRIBUTE_STATE = (int) 201326616,
  RADIUS_ATTRIBUTE_CLASS = (int) 201326617,
  RADIUS_ATTRIBUTE_VENDOR_SPECIFIC = (int) 201326618,
  RADIUS_ATTRIBUTE_SESSION_TIMEOUT = (int) 201326619,
  RADIUS_ATTRIBUTE_IDLE_TIMEOUT = (int) 201326620,
  RADIUS_ATTRIBUTE_TERMINATION_ACTION = (int) 201326621,
  RADIUS_ATTRIBUTE_CALLED_STATION_ID = (int) 201326622,
  RADIUS_ATTRIBUTE_CALLING_STATION_ID = (int) 201326623,
  RADIUS_ATTRIBUTE_NAS_IDENTIFIER = (int) 201326624,
  RADIUS_ATTRIBUTE_PROXY_STATE = (int) 201326625,
  RADIUS_ATTRIBUTE_LOGIN_LAT_SERVICE = (int) 201326626,
  RADIUS_ATTRIBUTE_LOGIN_LAT_NODE = (int) 201326627,
  RADIUS_ATTRIBUTE_LOGIN_LAT_GROUP = (int) 201326628,
  RADIUS_ATTRIBUTE_FRAMED_APPLETALK_LINK = (int) 201326629,
  RADIUS_ATTRIBUTE_FRAMED_APPLETALK_NET = (int) 201326630,
  RADIUS_ATTRIBUTE_FRAMED_APPLETALK_ZONE = (int) 201326631,
  RADIUS_ATTRIBUTE_ACCT_STATUS_TYPE = (int) 201326632,
  RADIUS_ATTRIBUTE_ACCT_DELAY_TIME = (int) 201326633,
  RADIUS_ATTRIBUTE_ACCT_INPUT_OCTETS = (int) 201326634,
  RADIUS_ATTRIBUTE_ACCT_OUTPUT_OCTETS = (int) 201326635,
  RADIUS_ATTRIBUTE_ACCT_SESSION_ID = (int) 201326636,
  RADIUS_ATTRIBUTE_ACCT_AUTHENTIC = (int) 201326637,
  RADIUS_ATTRIBUTE_ACCT_SESSION_TIME = (int) 201326638,
  RADIUS_ATTRIBUTE_ACCT_INPUT_PACKETS = (int) 201326639,
  RADIUS_ATTRIBUTE_ACCT_OUTPUT_PACKETS = (int) 201326640,
  RADIUS_ATTRIBUTE_ACCT_TERMINATE_CAUSE = (int) 201326641,
  RADIUS_ATTRIBUTE_ACCT_MULTI_SSN_ID = (int) 201326642,
  RADIUS_ATTRIBUTE_ACCT_LINK_COUNT = (int) 201326643,
  RADIUS_ATTRIBUTE_CHAP_CHALLENGE = (int) 201326652,
  RADIUS_ATTRIBUTE_NAS_PORT_TYPE = (int) 201326653,
  RADIUS_ATTRIBUTE_PORT_LIMIT = (int) 201326654,
  RADIUS_ATTRIBUTE_LOGIN_LAT_PORT = (int) 201326655,
  RADIUS_ATTRIBUTE_TUNNEL_TYPE = (int) 201326656,
  RADIUS_ATTRIBUTE_TUNNEL_MEDIUM_TYPE = (int) 201326657,
  RADIUS_ATTRIBUTE_TUNNEL_CLIENT_ENDPT = (int) 201326658,
  RADIUS_ATTRIBUTE_TUNNEL_SERVER_ENDPT = (int) 201326659,
  RADIUS_ATTRIBUTE_ACCT_TUNNEL_CONN = (int) 201326660,
  RADIUS_ATTRIBUTE_TUNNEL_PASSWORD = (int) 201326661,
  RADIUS_ATTRIBUTE_ARAP_PASSWORD = (int) 201326662,
  RADIUS_ATTRIBUTE_ARAP_FEATURES = (int) 201326663,
  RADIUS_ATTRIBUTE_ARAP_ZONE_ACCESS = (int) 201326664,
  RADIUS_ATTRIBUTE_ARAP_SECURITY = (int) 201326665,
  RADIUS_ATTRIBUTE_ARAP_SECURITY_DATA = (int) 201326666,
  RADIUS_ATTRIBUTE_PASSWORD_RETRY = (int) 201326667,
  RADIUS_ATTRIBUTE_PROMPT = (int) 201326668,
  RADIUS_ATTRIBUTE_CONNECT_INFO = (int) 201326669,
  RADIUS_ATTRIBUTE_CONFIGURATION_TOKEN = (int) 201326670,
  RADIUS_ATTRIBUTE_EAP_MESSAGE = (int) 201326671,
  RADIUS_ATTRIBUTE_SIGNATURE = (int) 201326672,
  RADIUS_ATTRIBUTE_TUNNEL_PVT_GROUP_ID = (int) 201326673,
  RADIUS_ATTRIBUTE_TUNNEL_ASSIGNMENT_ID = (int) 201326674,
  RADIUS_ATTRIBUTE_TUNNEL_PREFERENCE = (int) 201326675,
  RADIUS_ATTRIBUTE_ARAP_CHALLENGE_RESPONSE = (int) 201326676,
  RADIUS_ATTRIBUTE_ACCT_INTERIM_INTERVAL = (int) 201326677,
  RADIUS_ATTRIBUTE_NAS_IPv6_ADDRESS = (int) 201326687,
  RADIUS_ATTRIBUTE_FRAMED_INTERFACE_ID = (int) 201326688,
  RADIUS_ATTRIBUTE_FRAMED_IPv6_PREFIX = (int) 201326689,
  RADIUS_ATTRIBUTE_LOGIN_IPv6_HOST = (int) 201326690,
  RADIUS_ATTRIBUTE_FRAMED_IPv6_ROUTE = (int) 201326691,
  RADIUS_ATTRIBUTE_FRAMED_IPv6_POOL = (int) 201326692,
  IAS_ATTRIBUTE_SAVED_RADIUS_FRAMED_IP_ADDRESS = (int) 201330688,
  IAS_ATTRIBUTE_SAVED_RADIUS_CALLBACK_NUMBER = (int) 201330689,
  IAS_ATTRIBUTE_NP_CALLING_STATION_ID = (int) 201330690,
  IAS_ATTRIBUTE_SAVED_NP_CALLING_STATION_ID = (int) 201330691,
  IAS_ATTRIBUTE_SAVED_RADIUS_FRAMED_ROUTE = (int) 201330692,
  IAS_ATTRIBUTE_IGNORE_USER_DIALIN_PROPERTIES = (int) 201330693,
  IAS_ATTRIBUTE_NP_TIME_OF_DAY = (int) 201330694,
  IAS_ATTRIBUTE_NP_CALLED_STATION_ID = (int) 201330695,
  IAS_ATTRIBUTE_NP_ALLOWED_PORT_TYPES = (int) 201330696,
  IAS_ATTRIBUTE_NP_AUTHENTICATION_TYPE = (int) 201330697,
  IAS_ATTRIBUTE_NP_ALLOWED_EAP_TYPE = (int) 201330698,
  IAS_ATTRIBUTE_SHARED_SECRET = (int) 201330699,
  IAS_ATTRIBUTE_CLIENT_IP_ADDRESS = (int) 201330700,
  IAS_ATTRIBUTE_CLIENT_PACKET_HEADER = (int) 201330701,
  IAS_ATTRIBUTE_TOKEN_GROUPS = (int) 201330702,
  IAS_ATTRIBUTE_ALLOW_DIALIN = (int) 201330703,
  IAS_ATTRIBUTE_REQUEST_ID = (int) 201330704,
  IAS_ATTRIBUTE_MANIPULATION_TARGET = (int) 201330705,
  IAS_ATTRIBUTE_MANIPULATION_RULE = (int) 201330706,
  IAS_ATTRIBUTE_ORIGINAL_USER_NAME = (int) 201330707,
  IAS_ATTRIBUTE_CLIENT_VENDOR_TYPE = (int) 201330708,
  IAS_ATTRIBUTE_CLIENT_UDP_PORT = (int) 201330709,
  MS_ATTRIBUTE_CHAP_CHALLENGE = (int) 201330710,
  MS_ATTRIBUTE_CHAP_RESPONSE = (int) 201330711,
  MS_ATTRIBUTE_CHAP_DOMAIN = (int) 201330712,
  MS_ATTRIBUTE_CHAP_ERROR = (int) 201330713,
  MS_ATTRIBUTE_CHAP_CPW1 = (int) 201330714,
  MS_ATTRIBUTE_CHAP_CPW2 = (int) 201330715,
  MS_ATTRIBUTE_CHAP_LM_ENC_PW = (int) 201330716,
  MS_ATTRIBUTE_CHAP_NT_ENC_PW = (int) 201330717,
  MS_ATTRIBUTE_CHAP_MPPE_KEYS = (int) 201330718,
  IAS_ATTRIBUTE_AUTHENTICATION_TYPE = (int) 201330719,
  IAS_ATTRIBUTE_CLIENT_NAME = (int) 201330720,
  IAS_ATTRIBUTE_NT4_ACCOUNT_NAME = (int) 201330721,
  IAS_ATTRIBUTE_FULLY_QUALIFIED_USER_NAME = (int) 201330722,
  IAS_ATTRIBUTE_NTGROUPS = (int) 201330723,
  IAS_ATTRIBUTE_EAP_FRIENDLY_NAME = (int) 201330724,
  IAS_ATTRIBUTE_AUTH_PROVIDER_TYPE = (int) 201330725,
  MS_ATTRIBUTE_ACCT_AUTH_TYPE = (int) 201330726,
  MS_ATTRIBUTE_ACCT_EAP_TYPE = (int) 201330727,
  IAS_ATTRIBUTE_PACKET_TYPE = (int) 201330728,
  IAS_ATTRIBUTE_AUTH_PROVIDER_NAME = (int) 201330729,
  IAS_ATTRIBUTE_ACCT_PROVIDER_TYPE = (int) 201330730,
  IAS_ATTRIBUTE_ACCT_PROVIDER_NAME = (int) 201330731,
  MS_ATTRIBUTE_MPPE_SEND_KEY = (int) 201330732,
  MS_ATTRIBUTE_MPPE_RECV_KEY = (int) 201330733,
  IAS_ATTRIBUTE_REASON_CODE = (int) 201330734,
  MS_ATTRIBUTE_FILTER = (int) 201330735,
  MS_ATTRIBUTE_CHAP2_RESPONSE = (int) 201330736,
  MS_ATTRIBUTE_CHAP2_SUCCESS = (int) 201330737,
  MS_ATTRIBUTE_CHAP2_CPW = (int) 201330738,
  MS_ATTRIBUTE_RAS_VENDOR = (int) 201330739,
  MS_ATTRIBUTE_RAS_VERSION = (int) 201330740,
  IAS_ATTRIBUTE_NP_NAME = (int) 201330741,
  MS_ATTRIBUTE_PRIMARY_DNS_SERVER = (int) 201330742,
  MS_ATTRIBUTE_SECONDARY_DNS_SERVER = (int) 201330743,
  MS_ATTRIBUTE_PRIMARY_NBNS_SERVER = (int) 201330744,
  MS_ATTRIBUTE_SECONDARY_NBNS_SERVER = (int) 201330745,
  IAS_ATTRIBUTE_PROXY_POLICY_NAME = (int) 201330746,
  IAS_ATTRIBUTE_PROVIDER_TYPE = (int) 201330747,
  IAS_ATTRIBUTE_PROVIDER_NAME = (int) 201330748,
  IAS_ATTRIBUTE_REMOTE_SERVER_ADDRESS = (int) 201330749,
  IAS_ATTRIBUTE_GENERATE_CLASS_ATTRIBUTE = (int) 201330750,
  MS_ATTRIBUTE_RAS_CLIENT_NAME = (int) 201330751,
  MS_ATTRIBUTE_RAS_CLIENT_VERSION = (int) 201330752,
  IAS_ATTRIBUTE_ALLOWED_CERTIFICATE_EKU = (int) 201330753,
  IAS_ATTRIBUTE_EXTENSION_STATE = (int) 201330754,
  IAS_ATTRIBUTE_GENERATE_SESSION_TIMEOUT = (int) 201330755,
  MS_ATTRIBUTE_SESSION_TIMEOUT = (int) 201330756,
  MS_ATTRIBUTE_QUARANTINE_IPFILTER = (int) 201330757,
  MS_ATTRIBUTE_QUARANTINE_SESSION_TIMEOUT = (int) 201330758,
  MS_ATTRIBUTE_USER_SECURITY_IDENTITY = (int) 201330759,
  IAS_ATTRIBUTE_REMOTE_RADIUS_TO_WINDOWS_USER_MAPPING = (int) 201330760,
  IAS_ATTRIBUTE_PASSPORT_USER_MAPPING_UPN_SUFFIX = (int) 201330761,
  IAS_ATTRIBUTE_TUNNEL_TAG = (int) 201330762,
  IAS_ATTRIBUTE_NP_PEAPUPFRONT_ENABLED = (int) 201330763,
  IAS_ATTRIBUTE_CERTIFICATE_EKU = (int) 201334689,
  IAS_ATTRIBUTE_EAP_CONFIG = (int) 201334690,
  MS_ATTRIBUTE_PEAP_EMBEDDED_EAP_TYPEID = (int) 201334691,
  MS_ATTRIBUTE_PEAP_FAST_ROAMED_SESSION = (int) 201334692,
  IAS_ATTRIBUTE_EAP_TYPEID = (int) 201334693,
  MS_ATTRIBUTE_EAP_TLV = (int) 201334694,
  IAS_ATTRIBUTE_REJECT_REASON_CODE = (int) 201334695,
  IAS_ATTRIBUTE_PROXY_EAP_CONFIG = (int) 201334696,
  IAS_ATTRIBUTE_EAP_SESSION = (int) 201334697,
  IAS_ATTRIBUTE_IS_REPLAY = (int) 201334698,
  IAS_ATTRIBUTE_CLEAR_TEXT_PASSWORD = (int) 201334699,
  MS_ATTRIBUTE_IDENTITY_TYPE = (int) 201334700,
  MS_ATTRIBUTE_SERVICE_CLASS = (int) 201334701,
  MS_ATTRIBUTE_QUARANTINE_USER_CLASS = (int) 201334702,
  MS_ATTRIBUTE_QUARANTINE_STATE = (int) 201334703,
  IAS_ATTRIBUTE_OVERRIDE_RAP_AUTH = (int) 201334704,
  IAS_ATTRIBUTE_PEAP_CHANNEL_UP = (int) 201334705,
  IAS_ATTRIBUTE_NAME_MAPPED = (int) 201334706,
  IAS_ATTRIBUTE_POLICY_ENFORCED = (int) 201334707,
  IAS_ATTRIBUTE_MACHINE_NTGROUPS = (int) 201334708,
  IAS_ATTRIBUTE_USER_NTGROUPS = (int) 201334709,
  IAS_ATTRIBUTE_MACHINE_TOKEN_GROUPS = (int) 201334710,
  IAS_ATTRIBUTE_USER_TOKEN_GROUPS = (int) 201334711,
  MS_ATTRIBUTE_QUARANTINE_GRACE_TIME = (int) 201334712,
  IAS_ATTRIBUTE_QUARANTINE_URL = (int) 201334713,
  IAS_ATTRIBUTE_QUARANTINE_FIXUP_SERVERS = (int) 201334714,
  MS_ATTRIBUTE_NOT_QUARANTINE_CAPABLE = (int) 201334715,
  IAS_ATTRIBUTE_QUARANTINE_SYSTEM_HEALTH_RESULT = (int) 201334716,
  IAS_ATTRIBUTE_QUARANTINE_SYSTEM_HEALTH_VALIDATORS = (int) 201334717,
  IAS_ATTRIBUTE_MACHINE_NAME = (int) 201334718,
  IAS_ATTRIBUTE_NT4_MACHINE_NAME = (int) 201334719,
  IAS_ATTRIBUTE_QUARANTINE_SESSION_HANDLE = (int) 201334720,
  IAS_ATTRIBUTE_FULLY_QUALIFIED_MACHINE_NAME = (int) 201334721,
  IAS_ATTRIBUTE_QUARANTINE_FIXUP_SERVERS_CONFIGURATION = (int) 201334722,
  IAS_ATTRIBUTE_CLIENT_QUARANTINE_COMPATIBLE = (int) 201334723,
  MS_ATTRIBUTE_NETWORK_ACCESS_SERVER_TYPE = (int) 201334724,
  IAS_ATTRIBUTE_QUARANTINE_SESSION_ID = (int) 201334725,
  MS_ATTRIBUTE_AFW_QUARANTINE_ZONE = (int) 201334726,
  MS_ATTRIBUTE_AFW_PROTECTION_LEVEL = (int) 201334727,
  IAS_ATTRIBUTE_QUARANTINE_UPDATE_NON_COMPLIANT = (int) 201334728,
  IAS_ATTRIBUTE_REQUEST_START_TIME = (int) 201334729,
  MS_ATTRIBUTE_MACHINE_NAME = (int) 201334730,
  IAS_ATTRIBUTE_CLIENT_IPv6_ADDRESS = (int) 201334731,
  IAS_ATTRIBUTE_SAVED_RADIUS_FRAMED_INTERFACE_ID = (int) 201334732,
  IAS_ATTRIBUTE_SAVED_RADIUS_FRAMED_IPv6_PREFIX = (int) 201334733,
  IAS_ATTRIBUTE_SAVED_RADIUS_FRAMED_IPv6_ROUTE = (int) 201334734,
  MS_ATTRIBUTE_QUARANTINE_GRACE_TIME_CONFIGURATION = (int) 201334735,
  MS_ATTRIBUTE_IPv6_FILTER = (int) 201334736,
  MS_ATTRIBUTE_IPV4_REMEDIATION_SERVERS = (int) 201334737,
  MS_ATTRIBUTE_IPV6_REMEDIATION_SERVERS = (int) 201334738,
  IAS_ATTRIBUTE_PROXY_RETRY_COUNT = (int) 201334739,
  IAS_ATTRIBUTE_MACHINE_INVENTORY = (int) 201334740,
  IAS_ATTRIBUTE_ABSOLUTE_TIME = (int) 201334741,
  MS_ATTRIBUTE_QUARANTINE_SOH = (int) 201334742,
  IAS_ATTRIBUTE_EAP_TYPES_CONFIGURED_IN_PROXYPOLICY = (int) 201334743,
  MS_ATTRIBUTE_HCAP_LOCATION_GROUP_NAME = (int) 201334744,
  MS_ATTRIBUTE_EXTENDED_QUARANTINE_STATE = (int) 201334745,
  IAS_ATTRIBUTE_SOH_CARRIER_EAPTLV = (int) 201334746,
  MS_ATTRIBUTE_HCAP_USER_GROUPS = (int) 201334747,
  IAS_ATTRIBUTE_SAVED_MACHINE_HEALTHCHECK_ONLY = (int) 201334748,
  IAS_ATTRIBUTE_POLICY_EVALUATED_SHV = (int) 201334749,
  MS_ATTRIBUTE_RAS_CORRELATION_ID = (int) 201334750,
  MS_ATTRIBUTE_HCAP_USER_NAME = (int) 201334751,
  IAS_ATTRIBUTE_NT4_HCAP_ACCOUNT_NAME = (int) 201334752,
  IAS_ATTRIBUTE_USER_TOKEN_SID = (int) 201334753,
  IAS_ATTRIBUTE_MACHINE_TOKEN_SID = (int) 201334754,
  IAS_ATTRIBUTE_MACHINE_VALIDATED = (int) 201334755,
  MS_ATTRIBUTE_USER_IPv4_ADDRESS = (int) 201334756,
  MS_ATTRIBUTE_USER_IPv6_ADDRESS = (int) 201334757,
  MS_ATTRIBUTE_TSG_DEVICE_REDIRECTION = (int) 201334758,
  IAS_ATTRIBUTE_ACCEPT_REASON_CODE = (int) 201334759,
  RAS_ATTRIBUTE_ENCRYPTION_TYPE = (int) -90,
  RAS_ATTRIBUTE_ENCRYPTION_POLICY = (int) -89,
  RAS_ATTRIBUTE_BAP_REQUIRED = (int) -88,
  RAS_ATTRIBUTE_BAP_LINE_DOWN_TIME = (int) -87,
  RAS_ATTRIBUTE_BAP_LINE_DOWN_LIMIT = (int) -86
};
enum _IASOSTYPE
{
  SYSTEM_TYPE_NT4_WORKSTATION = (int) 201326592,
  SYSTEM_TYPE_NT5_WORKSTATION = (int) 201326593,
  SYSTEM_TYPE_NT6_WORKSTATION = (int) 201326594,
  SYSTEM_TYPE_NT4_SERVER = (int) 201326595,
  SYSTEM_TYPE_NT5_SERVER = (int) 201326596,
  SYSTEM_TYPE_NT6_SERVER = (int) 201326597
};
enum _ATTRIBUTERESTRICTIONS
{
  MULTIVALUED = (int) 201326593,
  ALLOWEDINPROFILE = (int) 201326594,
  ALLOWEDINCONDITION = (int) 201326596,
  ALLOWEDINPROXYPROFILE = (int) 201326600,
  ALLOWEDINPROXYCONDITION = (int) 201326608,
  ALLOWEDINVPNDIALUP = (int) 201326624,
  ALLOWEDIN8021X = (int) 201326656
};
enum _AUTHENTICATION_TYPE
{
  IAS_AUTH_INVALID = (int) 201326592,
  IAS_AUTH_PAP = (int) 201326593,
  IAS_AUTH_MD5CHAP = (int) 201326594,
  IAS_AUTH_MSCHAP = (int) 201326595,
  IAS_AUTH_MSCHAP2 = (int) 201326596,
  IAS_AUTH_EAP = (int) 201326597,
  IAS_AUTH_ARAP = (int) 201326598,
  IAS_AUTH_NONE = (int) 201326599,
  IAS_AUTH_CUSTOM = (int) 201326600,
  IAS_AUTH_MSCHAP_CPW = (int) 201326601,
  IAS_AUTH_MSCHAP2_CPW = (int) 201326602,
  IAS_AUTH_PEAP = (int) 201326603
};

/* Type definitions.  */
typedef enum _ATTRIBUTEID ATTRIBUTEID;
typedef enum _IASOSTYPE IASOSTYPE;
typedef enum _ATTRIBUTERESTRICTIONS ATTRIBUTERESTRICTIONS;
typedef enum _AUTHENTICATION_TYPE AUTHENTICATION_TYPE;

[
  uuid(E9970F91-B6AA-11D9-B032-000D56C25C27),
  version(1.0),
  helpstring("IAS SDO Helper 1.0 Type Library")
]
library sdohlplib
{
  importlib("stdole2.tlb");

   /* CoClass declarations.  */
   [
     uuid(E9970FA4-B6AA-11D9-B032-000D56C25C27),
     cancreate
   ]
   coclass IASSDOHelper
   {
     dispinterface IIASSDOHelper;
   };

   /* Dispatch interface declarations.  */
   [
     uuid(E9970F92-B6AA-11D9-B032-000D56C25C27),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface IIASItem : IDispatch
   {
     [id(1610743808)]
     HRESULT __stdcall GetProperty (
       [in] UINT Id,
       [out retval] VARIANT *pvarValue
     );
     HRESULT __stdcall PutProperty (
       [in] UINT Id,
       [in] VARIANT varValue
     );
     HRESULT __stdcall Apply (void);
     HRESULT __stdcall Restore (void);
     [propget]
     HRESULT __stdcall SdoObject (
       [out retval] dispinterface ISdo **ppSdo
     );
     [propget]
     HRESULT __stdcall Name (
       [out retval] BSTR *pbstrId
     );
     [id(1610743813), propput]
     HRESULT __stdcall Name (
       [in] BSTR argNo1
     );
     [id(1610743815), propget]
     HRESULT __stdcall Description (
       [out retval] BSTR *pbstrDesc
     );
     [id(1610743815), propput]
     HRESULT __stdcall Description (
       [in] BSTR argNo1
     );
   };
   [
     uuid(56BC53DE-96DB-11D1-BF3F-000000000000),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface ISdo : IDispatch
   {
     [id(1), hidden]
     HRESULT __stdcall GetPropertyInfo (
       [in] long Id,
       [out retval] IUnknown **ppPropertyInfo
     );
     HRESULT __stdcall GetProperty (
       [in] long Id,
       [out retval] VARIANT *pValue
     );
     HRESULT __stdcall PutProperty (
       [in] long Id,
       [in] VARIANT *pValue
     );
     HRESULT __stdcall ResetProperty (
       [in] long Id
     );
     HRESULT __stdcall Apply (void);
     HRESULT __stdcall Restore (void);
     [id(-4), propget]
     HRESULT __stdcall _NewEnum (
       [out retval] IUnknown **ppEnumVARIANT
     );
   };
   [
     uuid(E9970F94-B6AA-11D9-B032-000D56C25C27),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface IIASEnum : IDispatch
   {
     [id(1610743808)]
     HRESULT __stdcall ResetEnumerator (void);
     HRESULT __stdcall GetNextItem (
       [out retval] dispinterface IIASItem **ppItem
     );
   };
   [
     uuid(E9970F95-B6AA-11D9-B032-000D56C25C27),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface IIASCollection : IDispatch
   {
     [id(1610743808)]
     HRESULT __stdcall RemoveItem (
       [in] dispinterface IIASItem *pItem
     );
     HRESULT __stdcall Clear (void);
     [propget]
     HRESULT __stdcall SdoCollectionObject (
       [out retval] dispinterface ISdoCollection **ppSdoCollection
     );
     [propget]
     HRESULT __stdcall Enumerator (
       [out retval] dispinterface IIASEnum **ppEnum
     );
     [propget]
     HRESULT __stdcall Count (
       [out retval] UINT *pdwCount
     );
   };
   [
     uuid(56BC53E2-96DB-11D1-BF3F-000000000000),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface ISdoCollection : IDispatch
   {
     [id(1), propget]
     HRESULT __stdcall Count (
       [out retval] long *pCount
     );
     HRESULT __stdcall Add (
       [in] BSTR bstrName,
       [in out] IDispatch **ppItem
     );
     HRESULT __stdcall Remove (
       [in] IDispatch * pItem
     );
     HRESULT __stdcall RemoveAll (void);
     HRESULT __stdcall Reload (void);
     HRESULT __stdcall IsNameUnique (
       [in] BSTR bstrName,
       [out retval] WINBOOL *pBool
     );
     [id(0)]
     HRESULT __stdcall Item (
       [in] VARIANT *Name,
       [out retval] IDispatch **pItem
     );
     [id(-4), propget]
     HRESULT __stdcall _NewEnum (
       [out retval] IUnknown **ppEnumVARIANT
     );
   };
   [
     uuid(E9970F96-B6AA-11D9-B032-000D56C25C27),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface IIASItemsCollection : IIASCollection
   {
     [id(1610809344)]
     HRESULT __stdcall Add (
       [in] BSTR bstrName,
       [out] dispinterface IIASItem **ppItem
     );
     HRESULT __stdcall GetItem (
       [in] BSTR bstrId,
       [out retval] dispinterface IIASItem **ppItem
     );
     HRESULT __stdcall Remove (
       [in] BSTR bstrId
     );
   };
   [
     uuid(E9970F97-B6AA-11D9-B032-000D56C25C27),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface IIASAttributesCollection : IIASCollection
   {
     [id(1610809344)]
     HRESULT __stdcall Add (
       [in] ATTRIBUTEID Id,
       [in] VARIANT value,
       [out] dispinterface IIASItem **ppItem
     );
     HRESULT __stdcall GetAttributeValue (
       [in] dispinterface IIASItem *pItem,
       [out] ATTRIBUTEID *pId,
       [out retval] VARIANT *pValue
     );
   };
   [
     uuid(E9970F98-B6AA-11D9-B032-000D56C25C27),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface IIASConditionsCollection : IIASCollection
   {
     [id(1610809344)]
     HRESULT __stdcall Add (
       [in] ATTRIBUTEID Id,
       [in] BSTR bstrCondition,
       [out] dispinterface IIASItem **ppItem
     );
     HRESULT __stdcall GetConditionText (
       [in] dispinterface IIASItem *pItem,
       [out] ATTRIBUTEID *pId,
       [out retval] BSTR *pbstrCondition
     );
     HRESULT __stdcall PutConditionText (
       [in] dispinterface IIASItem *pItem,
       [in] ATTRIBUTEID Id,
       [in] BSTR bstrCondition
     );
   };
   [
     uuid(E9970F9D-B6AA-11D9-B032-000D56C25C27),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface IIASAccounting : IIASItem
   {
     [id(1610809344), propget]
     HRESULT __stdcall LogAcctPkts (
       [out retval] long *pbLogAcctPkts
     );
     [id(1610809344), propput]
     HRESULT __stdcall LogAcctPkts (
       [in] long argNo1
     );
     [id(1610809346), propget]
     HRESULT __stdcall LogAuthPkts (
       [out retval] long *pbLogAuthPkts
     );
     [id(1610809346), propput]
     HRESULT __stdcall LogAuthPkts (
       [in] long argNo1
     );
     [id(1610809348), propget]
     HRESULT __stdcall LogInterimPkts (
       [out retval] long *pbLogInterimPkts
     );
     [id(1610809348), propput]
     HRESULT __stdcall LogInterimPkts (
       [in] long argNo1
     );
     [id(1610809350), propget]
     HRESULT __stdcall LogAuthInterimPkts (
       [out retval] long *pbLogAuthInterimPkts
     );
     [id(1610809350), propput]
     HRESULT __stdcall LogAuthInterimPkts (
       [in] long argNo1
     );
   };
   [
     uuid(E9970F9E-B6AA-11D9-B032-000D56C25C27),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface IIASFileAccounting : IIASAccounting
   {
     [id(1610874880), propget]
     HRESULT __stdcall NewLogFrequency (
       [out retval] UINT *pNewLogFrequency
     );
     [id(1610874880), propput]
     HRESULT __stdcall NewLogFrequency (
       [in] UINT argNo1
     );
     [id(1610874882), propget]
     HRESULT __stdcall NewLogSize (
       [out retval] UINT *pNewLogSize
     );
     [id(1610874882), propput]
     HRESULT __stdcall NewLogSize (
       [in] UINT argNo1
     );
     [id(1610874884), propget]
     HRESULT __stdcall LogFileDirectory (
       [out retval] BSTR *pbstrLogFileDirectory
     );
     [id(1610874884), propput]
     HRESULT __stdcall LogFileDirectory (
       [in] BSTR argNo1
     );
     [id(1610874886), propget]
     HRESULT __stdcall LogFormat (
       [out retval] UINT *pLogFormat
     );
     [id(1610874886), propput]
     HRESULT __stdcall LogFormat (
       [in] UINT argNo1
     );
     [id(1610874888), propget]
     HRESULT __stdcall DeleteIfFull (
       [out retval] long *pbDeleteIfFull
     );
     [id(1610874888), propput]
     HRESULT __stdcall DeleteIfFull (
       [in] long argNo1
     );
   };
   [
     uuid(E9970F9F-B6AA-11D9-B032-000D56C25C27),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface IIASSQLAccounting : IIASAccounting
   {
     [id(1610874880), propget]
     HRESULT __stdcall SQLMaxSessions (
       [out retval] UINT *pSQLMaxSessions
     );
     [id(1610874880), propput]
     HRESULT __stdcall SQLMaxSessions (
       [in] UINT argNo1
     );
   };
   [
     uuid(E9970F99-B6AA-11D9-B032-000D56C25C27),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface IIASService : IIASItem
   {
     [id(1610809344), propget]
     HRESULT __stdcall AuthPorts (
       [out retval] BSTR *pbstrPorts
     );
     [id(1610809344), propput]
     HRESULT __stdcall AuthPorts (
       [in] BSTR argNo1
     );
     [id(1610809346), propget]
     HRESULT __stdcall AcctPorts (
       [out retval] BSTR *pbstrPorts
     );
     [id(1610809346), propput]
     HRESULT __stdcall AcctPorts (
       [in] BSTR argNo1
     );
     [id(1610809348), propget]
     HRESULT __stdcall LogSuccessfulRequests (
       [out retval] long *pbLog
     );
     [id(1610809348), propput]
     HRESULT __stdcall LogSuccessfulRequests (
       [in] long argNo1
     );
     [id(1610809350), propget]
     HRESULT __stdcall LogRejectedRequests (
       [out retval] long *pbLog
     );
     [id(1610809350), propput]
     HRESULT __stdcall LogRejectedRequests (
       [in] long argNo1
     );
     [id(1610809352), propget]
     HRESULT __stdcall FileAccountingLogs (
       [out retval] dispinterface IIASFileAccounting **ppFileLogs
     );
     [propget]
     HRESULT __stdcall SQLAccountingLogs (
       [out retval] dispinterface IIASSQLAccounting **ppSQLLogs
     );
     [propget]
     HRESULT __stdcall Clients (
       [out retval] dispinterface IIASItemsCollection **ppColl
     );
     [propget]
     HRESULT __stdcall RemoteServers (
       [out retval] dispinterface IIASItemsCollection **ppColl
     );
     [propget]
     HRESULT __stdcall RAPolicies (
       [out retval] dispinterface IIASItemsCollection **ppColl
     );
     [propget]
     HRESULT __stdcall CRPolicies (
       [out retval] dispinterface IIASItemsCollection **ppColl
     );
     [propget]
     HRESULT __stdcall SHVTemplates (
       [out retval] dispinterface IIASItemsCollection **ppColl
     );
     [propget]
     HRESULT __stdcall RemediationServers (
       [out retval] dispinterface IIASItemsCollection **ppColl
     );
     [propget]
     HRESULT __stdcall ClientVendorCollection (
       [out retval] dispinterface IIASItemsCollection **ppVendorColl
     );
   };
   [
     uuid(E9970F9A-B6AA-11D9-B032-000D56C25C27),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface IIASClient : IIASItem
   {
     [id(1610809344), propget]
     HRESULT __stdcall RequireSignature (
       [out retval] long *pbRequireSignature
     );
     [id(1610809344), propput]
     HRESULT __stdcall RequireSignature (
       [in] long argNo1
     );
     [id(1610809346), propget]
     HRESULT __stdcall SharedSecret (
       [out retval] BSTR *pbstrSharedSecret
     );
     [id(1610809346), propput]
     HRESULT __stdcall SharedSecret (
       [in] BSTR argNo1
     );
     [id(1610809348), propget]
     HRESULT __stdcall Vendor (
       [out retval] BSTR *pbstrVendor
     );
     [id(1610809348), propput]
     HRESULT __stdcall Vendor (
       [in] BSTR argNo1
     );
     [id(1610809350), propget]
     HRESULT __stdcall Address (
       [out retval] BSTR *pbstrAddress
     );
     [id(1610809350), propput]
     HRESULT __stdcall Address (
       [in] BSTR argNo1
     );
     [id(1610809352), propget]
     HRESULT __stdcall QuarCompatible (
       [out retval] long *pbQuarCompatible
     );
     [id(1610809352), propput]
     HRESULT __stdcall QuarCompatible (
       [in] long argNo1
     );
     [id(1610809354), propget]
     HRESULT __stdcall Enabled (
       [out retval] long *pbEnabled
     );
     [id(1610809354), propput]
     HRESULT __stdcall Enabled (
       [in] long argNo1
     );
   };
   [
     uuid(E9970F9B-B6AA-11D9-B032-000D56C25C27),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface IIASRemoteServer : IIASItem
   {
     [id(1610809344), propget]
     HRESULT __stdcall AuthPort (
       [out retval] UINT *pAuthPort
     );
     [id(1610809344), propput]
     HRESULT __stdcall AuthPort (
       [in] UINT argNo1
     );
     [id(1610809346), propget]
     HRESULT __stdcall AcctPort (
       [out retval] UINT *pAcctPort
     );
     [id(1610809346), propput]
     HRESULT __stdcall AcctPort (
       [in] UINT argNo1
     );
     [id(1610809348), propget]
     HRESULT __stdcall AuthSecret (
       [out retval] BSTR *pbstrSecret
     );
     [id(1610809348), propput]
     HRESULT __stdcall AuthSecret (
       [in] BSTR argNo1
     );
     [id(1610809350), propget]
     HRESULT __stdcall AcctSecret (
       [out retval] BSTR *pbstrSecret
     );
     [id(1610809350), propput]
     HRESULT __stdcall AcctSecret (
       [in] BSTR argNo1
     );
     [id(1610809352), propget]
     HRESULT __stdcall Address (
       [out retval] BSTR *pbstrAddress
     );
     [id(1610809352), propput]
     HRESULT __stdcall Address (
       [in] BSTR argNo1
     );
     [id(1610809354), propget]
     HRESULT __stdcall ForwardAccounting (
       [out retval] long *pbForward
     );
     [id(1610809354), propput]
     HRESULT __stdcall ForwardAccounting (
       [in] long argNo1
     );
     [id(1610809356), propget]
     HRESULT __stdcall Priority (
       [out retval] UINT *pPriority
     );
     [id(1610809356), propput]
     HRESULT __stdcall Priority (
       [in] UINT argNo1
     );
     [id(1610809358), propget]
     HRESULT __stdcall Weight (
       [out retval] UINT *pWeight
     );
     [id(1610809358), propput]
     HRESULT __stdcall Weight (
       [in] UINT argNo1
     );
     [id(1610809360), propget]
     HRESULT __stdcall Timeout (
       [out retval] UINT *pTimeout
     );
     [id(1610809360), propput]
     HRESULT __stdcall Timeout (
       [in] UINT argNo1
     );
     [id(1610809362), propget]
     HRESULT __stdcall MaxLostPkts (
       [out retval] UINT *pMaxLostPkts
     );
     [id(1610809362), propput]
     HRESULT __stdcall MaxLostPkts (
       [in] UINT argNo1
     );
     [id(1610809364), propget]
     HRESULT __stdcall BlackoutInterval (
       [out retval] UINT *pBlackoutIntervalpriority
     );
     [id(1610809364), propput]
     HRESULT __stdcall BlackoutInterval (
       [in] UINT argNo1
     );
     [id(1610809366), propget]
     HRESULT __stdcall SendSignature (
       [out retval] long *pbSendSignature
     );
     [id(1610809366), propput]
     HRESULT __stdcall SendSignature (
       [in] long argNo1
     );
   };
   [
     uuid(E9970F9C-B6AA-11D9-B032-000D56C25C27),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface IIASRemediationServer : IIASItem
   {
     [id(1610809344), propget]
     HRESULT __stdcall Address (
       [out retval] BSTR *pbstrAddress
     );
     [id(1610809344), propput]
     HRESULT __stdcall Address (
       [in] BSTR argNo1
     );
     [id(1610809346), propget]
     HRESULT __stdcall FriendlyName (
       [out retval] BSTR *pbstrFriendlyName
     );
     [id(1610809346), propput]
     HRESULT __stdcall FriendlyName (
       [in] BSTR argNo1
     );
   };
   [
     uuid(E9970FA0-B6AA-11D9-B032-000D56C25C27),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface IIASPolicy : IIASItem
   {
     [id(1610809344), propget]
     HRESULT __stdcall Sequence (
       [out retval] UINT *pSequence
     );
     [id(1610809344), propput]
     HRESULT __stdcall Sequence (
       [in] UINT argNo1
     );
     [id(1610809346), propget]
     HRESULT __stdcall Enabled (
       [out retval] long *pbEnabled
     );
     [id(1610809346), propput]
     HRESULT __stdcall Enabled (
       [in] long argNo1
     );
     [id(1610809348), propget]
     HRESULT __stdcall SourceTag (
       [out retval] UINT *pdwSourceTag
     );
     [id(1610809348), propput]
     HRESULT __stdcall SourceTag (
       [in] UINT argNo1
     );
     [id(1610809350), propget]
     HRESULT __stdcall ConditionsCollection (
       [out retval] dispinterface IIASConditionsCollection **ppColl
     );
     [propget]
     HRESULT __stdcall ProfileAttributesCollection (
       [out retval] dispinterface IIASAttributesCollection **ppColl
     );
   };
   [
     uuid(E9970FA1-B6AA-11D9-B032-000D56C25C27),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface IIASServerGroup : IIASItem
   {
     [id(1610809344), propget]
     HRESULT __stdcall ServerCollection (
       [out retval] dispinterface IIASItemsCollection **ppColl
     );
   };
   [
     uuid(E9970FA2-B6AA-11D9-B032-000D56C25C27),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface IIASSHVTemplate : IIASItem
   {
     [id(1610809344), propget]
     HRESULT __stdcall SHVCombinationType (
       [out retval] UINT *pCombinationType
     );
     [id(1610809344), propput]
     HRESULT __stdcall SHVCombinationType (
       [in] UINT argNo1
     );
     [id(1610809346), propget]
     HRESULT __stdcall SHVList (
       [out retval] VARIANT *pvSHVList
     );
     [id(1610809346), propput]
     HRESULT __stdcall SHVList (
       [in] VARIANT argNo1
     );
   };
   [
     uuid(E9970FA3-B6AA-11D9-B032-000D56C25C27),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface IIASSDOHelper : IDispatch
   {
     [id(1610743808)]
     HRESULT __stdcall Initialize (
       [in] UINT accessMode,
       [in] BSTR bstrSourceName,
       [out retval] dispinterface IIASService **ppIASService
     );
     HRESULT __stdcall GetOSType (
       [out retval] IASOSTYPE *eOSType
     );
     HRESULT __stdcall GetStandardRADIUSAttributesInfo (
       [in] ATTRIBUTERESTRICTIONS restrictions,
       [out] UINT *pNumAttribs,
       [out] VARIANT *pvIds,
       [out] VARIANT *pvTypes,
       [out] VARIANT *pvNames,
       [out] VARIANT *pvDescriptions
     );
     HRESULT __stdcall GetVendorSpecificAttributesInfo (
       [in] ATTRIBUTERESTRICTIONS restrictions,
       [out] UINT *pNumAttribs,
       [out] VARIANT *pvIds,
       [out] VARIANT *pvTypes,
       [out] VARIANT *pvNames,
       [out] VARIANT *pvVendorIds,
       [out] VARIANT *pvDescriptions
     );
     HRESULT __stdcall GetProfileSpecificAttributesInfo (
       [in] ATTRIBUTERESTRICTIONS restrictions,
       [out] UINT *pNumAttribs,
       [out] VARIANT *pvIds,
       [out] VARIANT *pvTypes,
       [out] VARIANT *pvNames,
       [out] VARIANT *pvDescriptions
     );
     HRESULT __stdcall GetAttributeValueEnumerations (
       [in] ATTRIBUTEID Id,
       [out] VARIANT *pEnumNames,
       [out] VARIANT *pEnumValues,
       [out] VARIANT *pEnumFilters
     );
     HRESULT __stdcall ImportConfiguration (
       [in] BSTR target,
       [in] BSTR sourceFilePath,
       [in] long bIgnoreRegImportFailure
     );
     HRESULT __stdcall ExportConfiguration (
       [in] BSTR source,
       [in] BSTR targetFilePath
     );
     [propget]
     HRESULT __stdcall Dictionary (
       [out retval] dispinterface ISdoDictionaryOld **ppDict
     );
     [propget]
     HRESULT __stdcall SDOServiceControl (
       [out retval] dispinterface ISdoServiceControl **ppService
     );
   };
   [
     uuid(D432E5F4-53D8-11D2-9A3A-00C04FB998AC),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface ISdoDictionaryOld : IDispatch
   {
     [id(1)]
     HRESULT __stdcall EnumAttributes (
       [in out] VARIANT *Id,
       [out retval] VARIANT *pValues
     );
     [hidden]
     HRESULT __stdcall GetAttributeInfo (
       [in] ATTRIBUTEID Id,
       [in] VARIANT *pInfoIDs,
       [out retval] VARIANT *pInfoValues
     );
     HRESULT __stdcall EnumAttributeValues (
       [in] ATTRIBUTEID Id,
       [out] VARIANT *pValueIds,
       [out retval] VARIANT *pValuesDesc
     );
     HRESULT __stdcall CreateAttribute (
       [in] ATTRIBUTEID Id,
       [out retval] IDispatch **ppAttributeObject
     );
     HRESULT __stdcall GetAttributeID (
       [in] BSTR bstrAttributeName,
       [out retval] ATTRIBUTEID *pId
     );
   };
   [
     uuid(479F6E74-49A2-11D2-8ECA-00C04FC2F519),
     dual,
     oleautomation,
     dispatchable
   ]
   dispinterface ISdoServiceControl : IDispatch
   {
     [id(1)]
     HRESULT __stdcall StartService (void);
     HRESULT __stdcall StopService (void);
     HRESULT __stdcall GetServiceStatus (
       [out retval] long *status
     );
     HRESULT __stdcall ResetService (void);
   };

};

/* Interface declarations.  */
[
  uuid(E9970F93-B6AA-11D9-B032-000D56C25C27),
  oleautomation
]
interface IIASItemInternal : IUnknown
{
  [id(1610678272)]
  HRESULT __stdcall InternalRemove (void);
};

