///////////////////////////////////////////////////////////////////////////// // Copyright (c) Microsoft Corporation. All rights reserved. // // sdoias.idl : IDL source for IAS Server Data Object // // History: // Created // Changed many times // 04/2007 Added IAS_ATTRIBUTE_USER_TOKEN_SID and IAS_ATTRIBUTE_MACHINE_TOKEN_SID // ////////////////////////////////////////////////////////////////////////////// #ifndef __SDOIAS_IDL__ #define __SDOIAS_IDL__ import "oaidl.idl"; import "ocidl.idl"; ////////////////////////////////////////////////////////////////////////////// // Type Library ////////////////////////////////////////////////////////////////////////////// [ uuid(81DDF732-4AA8-4a35-BDFF-8B42EFE7C624), version(1.0), helpstring("IAS SDO 1.0 Type Library") ] library SDOIASLib { importlib("stdole2.tlb"); ////////////////////////////////////////////////////////////////////////// // // Name: ATTRIBUTEID // // What: IAS Dictionary attribute IDs // // Purpose: Defines the set of IDs for IAS dictionary attributes // ////////////////////////////////////////////////////////////////////////// typedef [public] enum _ATTRIBUTEID { ATTRIBUTE_UNDEFINED=0, ATTRIBUTE_MIN_VALUE=1, RADIUS_ATTRIBUTE_USER_NAME = ATTRIBUTE_MIN_VALUE, RADIUS_ATTRIBUTE_USER_PASSWORD, RADIUS_ATTRIBUTE_CHAP_PASSWORD, RADIUS_ATTRIBUTE_NAS_IP_ADDRESS, RADIUS_ATTRIBUTE_NAS_PORT, RADIUS_ATTRIBUTE_SERVICE_TYPE, RADIUS_ATTRIBUTE_FRAMED_PROTOCOL, RADIUS_ATTRIBUTE_FRAMED_IP_ADDRESS, RADIUS_ATTRIBUTE_FRAMED_IP_NETMASK, RADIUS_ATTRIBUTE_FRAMED_ROUTING = 10, RADIUS_ATTRIBUTE_FILTER_ID, RADIUS_ATTRIBUTE_FRAMED_MTU, RADIUS_ATTRIBUTE_FRAMED_COMPRESSION, RADIUS_ATTRIBUTE_LOGIN_IP_HOST, RADIUS_ATTRIBUTE_LOGIN_SERVICE, RADIUS_ATTRIBUTE_LOGIN_TCP_PORT, RADIUS_ATTRIBUTE_UNASSIGNED1, RADIUS_ATTRIBUTE_REPLY_MESSAGE, RADIUS_ATTRIBUTE_CALLBACK_NUMBER, RADIUS_ATTRIBUTE_CALLBACK_ID = 20, RADIUS_ATTRIBUTE_UNASSIGNED2, RADIUS_ATTRIBUTE_FRAMED_ROUTE, RADIUS_ATTRIBUTE_FRAMED_IPX_NETWORK, RADIUS_ATTRIBUTE_STATE, RADIUS_ATTRIBUTE_CLASS, RADIUS_ATTRIBUTE_VENDOR_SPECIFIC, RADIUS_ATTRIBUTE_SESSION_TIMEOUT, RADIUS_ATTRIBUTE_IDLE_TIMEOUT, RADIUS_ATTRIBUTE_TERMINATION_ACTION, RADIUS_ATTRIBUTE_CALLED_STATION_ID = 30, RADIUS_ATTRIBUTE_CALLING_STATION_ID, RADIUS_ATTRIBUTE_NAS_IDENTIFIER, RADIUS_ATTRIBUTE_PROXY_STATE, RADIUS_ATTRIBUTE_LOGIN_LAT_SERVICE, RADIUS_ATTRIBUTE_LOGIN_LAT_NODE, RADIUS_ATTRIBUTE_LOGIN_LAT_GROUP, RADIUS_ATTRIBUTE_FRAMED_APPLETALK_LINK, RADIUS_ATTRIBUTE_FRAMED_APPLETALK_NET, RADIUS_ATTRIBUTE_FRAMED_APPLETALK_ZONE, RADIUS_ATTRIBUTE_ACCT_STATUS_TYPE = 40, RADIUS_ATTRIBUTE_ACCT_DELAY_TIME, RADIUS_ATTRIBUTE_ACCT_INPUT_OCTETS, RADIUS_ATTRIBUTE_ACCT_OUTPUT_OCTETS, RADIUS_ATTRIBUTE_ACCT_SESSION_ID, RADIUS_ATTRIBUTE_ACCT_AUTHENTIC, RADIUS_ATTRIBUTE_ACCT_SESSION_TIME, RADIUS_ATTRIBUTE_ACCT_INPUT_PACKETS, RADIUS_ATTRIBUTE_ACCT_OUTPUT_PACKETS, RADIUS_ATTRIBUTE_ACCT_TERMINATE_CAUSE, RADIUS_ATTRIBUTE_ACCT_MULTI_SSN_ID = 50, RADIUS_ATTRIBUTE_ACCT_LINK_COUNT = 51, RADIUS_ATTRIBUTE_CHAP_CHALLENGE = 60, RADIUS_ATTRIBUTE_NAS_PORT_TYPE, RADIUS_ATTRIBUTE_PORT_LIMIT, RADIUS_ATTRIBUTE_LOGIN_LAT_PORT, RADIUS_ATTRIBUTE_TUNNEL_TYPE, RADIUS_ATTRIBUTE_TUNNEL_MEDIUM_TYPE, RADIUS_ATTRIBUTE_TUNNEL_CLIENT_ENDPT, RADIUS_ATTRIBUTE_TUNNEL_SERVER_ENDPT, RADIUS_ATTRIBUTE_ACCT_TUNNEL_CONN, RADIUS_ATTRIBUTE_TUNNEL_PASSWORD, RADIUS_ATTRIBUTE_ARAP_PASSWORD = 70, RADIUS_ATTRIBUTE_ARAP_FEATURES, RADIUS_ATTRIBUTE_ARAP_ZONE_ACCESS, RADIUS_ATTRIBUTE_ARAP_SECURITY, RADIUS_ATTRIBUTE_ARAP_SECURITY_DATA, RADIUS_ATTRIBUTE_PASSWORD_RETRY, RADIUS_ATTRIBUTE_PROMPT = 76, RADIUS_ATTRIBUTE_CONNECT_INFO, RADIUS_ATTRIBUTE_CONFIGURATION_TOKEN, RADIUS_ATTRIBUTE_EAP_MESSAGE, RADIUS_ATTRIBUTE_SIGNATURE = 80, RADIUS_ATTRIBUTE_TUNNEL_PVT_GROUP_ID, RADIUS_ATTRIBUTE_TUNNEL_ASSIGNMENT_ID, RADIUS_ATTRIBUTE_TUNNEL_PREFERENCE, RADIUS_ATTRIBUTE_ARAP_CHALLENGE_RESPONSE, RADIUS_ATTRIBUTE_ACCT_INTERIM_INTERVAL = 85, RADIUS_ATTRIBUTE_NAS_IPv6_ADDRESS = 95, RADIUS_ATTRIBUTE_FRAMED_INTERFACE_ID, RADIUS_ATTRIBUTE_FRAMED_IPv6_PREFIX, RADIUS_ATTRIBUTE_LOGIN_IPv6_HOST, RADIUS_ATTRIBUTE_FRAMED_IPv6_ROUTE, RADIUS_ATTRIBUTE_FRAMED_IPv6_POOL = 100, // RADIUS_ATTRIBUTE_ // New RADIUS Attribute IDs Here... IAS_ATTRIBUTE_SAVED_RADIUS_FRAMED_IP_ADDRESS = 0x1000, IAS_ATTRIBUTE_SAVED_RADIUS_CALLBACK_NUMBER, IAS_ATTRIBUTE_NP_CALLING_STATION_ID, IAS_ATTRIBUTE_SAVED_NP_CALLING_STATION_ID, IAS_ATTRIBUTE_SAVED_RADIUS_FRAMED_ROUTE, IAS_ATTRIBUTE_IGNORE_USER_DIALIN_PROPERTIES, IAS_ATTRIBUTE_NP_TIME_OF_DAY, IAS_ATTRIBUTE_NP_CALLED_STATION_ID, IAS_ATTRIBUTE_NP_ALLOWED_PORT_TYPES = 0x1008, IAS_ATTRIBUTE_NP_AUTHENTICATION_TYPE, IAS_ATTRIBUTE_NP_ALLOWED_EAP_TYPE, IAS_ATTRIBUTE_SHARED_SECRET, IAS_ATTRIBUTE_CLIENT_IP_ADDRESS, IAS_ATTRIBUTE_CLIENT_PACKET_HEADER, IAS_ATTRIBUTE_TOKEN_GROUPS, IAS_ATTRIBUTE_ALLOW_DIALIN, IAS_ATTRIBUTE_REQUEST_ID = 0x1010, IAS_ATTRIBUTE_MANIPULATION_TARGET, IAS_ATTRIBUTE_MANIPULATION_RULE, IAS_ATTRIBUTE_ORIGINAL_USER_NAME, IAS_ATTRIBUTE_CLIENT_VENDOR_TYPE, IAS_ATTRIBUTE_CLIENT_UDP_PORT, MS_ATTRIBUTE_CHAP_CHALLENGE, MS_ATTRIBUTE_CHAP_RESPONSE, MS_ATTRIBUTE_CHAP_DOMAIN = 0x1018, MS_ATTRIBUTE_CHAP_ERROR, MS_ATTRIBUTE_CHAP_CPW1 , MS_ATTRIBUTE_CHAP_CPW2, MS_ATTRIBUTE_CHAP_LM_ENC_PW, MS_ATTRIBUTE_CHAP_NT_ENC_PW, MS_ATTRIBUTE_CHAP_MPPE_KEYS, IAS_ATTRIBUTE_AUTHENTICATION_TYPE, IAS_ATTRIBUTE_CLIENT_NAME = 0x1020, IAS_ATTRIBUTE_NT4_ACCOUNT_NAME, IAS_ATTRIBUTE_FULLY_QUALIFIED_USER_NAME, IAS_ATTRIBUTE_NTGROUPS, IAS_ATTRIBUTE_EAP_FRIENDLY_NAME, IAS_ATTRIBUTE_AUTH_PROVIDER_TYPE, MS_ATTRIBUTE_ACCT_AUTH_TYPE, MS_ATTRIBUTE_ACCT_EAP_TYPE, IAS_ATTRIBUTE_PACKET_TYPE = 0x1028, IAS_ATTRIBUTE_AUTH_PROVIDER_NAME, IAS_ATTRIBUTE_ACCT_PROVIDER_TYPE, IAS_ATTRIBUTE_ACCT_PROVIDER_NAME, MS_ATTRIBUTE_MPPE_SEND_KEY, MS_ATTRIBUTE_MPPE_RECV_KEY, IAS_ATTRIBUTE_REASON_CODE, MS_ATTRIBUTE_FILTER, MS_ATTRIBUTE_CHAP2_RESPONSE = 0x1030, MS_ATTRIBUTE_CHAP2_SUCCESS, MS_ATTRIBUTE_CHAP2_CPW, MS_ATTRIBUTE_RAS_VENDOR, MS_ATTRIBUTE_RAS_VERSION, IAS_ATTRIBUTE_NP_NAME, MS_ATTRIBUTE_PRIMARY_DNS_SERVER, MS_ATTRIBUTE_SECONDARY_DNS_SERVER, MS_ATTRIBUTE_PRIMARY_NBNS_SERVER = 0x1038, MS_ATTRIBUTE_SECONDARY_NBNS_SERVER, IAS_ATTRIBUTE_PROXY_POLICY_NAME, IAS_ATTRIBUTE_PROVIDER_TYPE, IAS_ATTRIBUTE_PROVIDER_NAME, IAS_ATTRIBUTE_REMOTE_SERVER_ADDRESS, IAS_ATTRIBUTE_GENERATE_CLASS_ATTRIBUTE, MS_ATTRIBUTE_RAS_CLIENT_NAME, MS_ATTRIBUTE_RAS_CLIENT_VERSION = 0x1040, IAS_ATTRIBUTE_ALLOWED_CERTIFICATE_EKU, IAS_ATTRIBUTE_EXTENSION_STATE, IAS_ATTRIBUTE_GENERATE_SESSION_TIMEOUT, IAS_ATTRIBUTE_SESSION_TIMEOUT, MS_ATTRIBUTE_QUARANTINE_IPFILTER, MS_ATTRIBUTE_QUARANTINE_SESSION_TIMEOUT, MS_ATTRIBUTE_USER_SECURITY_IDENTITY, IAS_ATTRIBUTE_REMOTE_RADIUS_TO_WINDOWS_USER_MAPPING = 0x1048, IAS_ATTRIBUTE_PASSPORT_USER_MAPPING_UPN_SUFFIX, IAS_ATTRIBUTE_TUNNEL_TAG, IAS_ATTRIBUTE_NP_PEAPUPFRONT_ENABLED, IAS_ATTRIBUTE_CERTIFICATE_EKU=8097, IAS_ATTRIBUTE_EAP_CONFIG, IAS_ATTRIBUTE_PEAP_EMBEDDED_EAP_TYPEID, IAS_ATTRIBUTE_PEAP_FAST_ROAMED_SESSION=8100, IAS_ATTRIBUTE_EAP_TYPEID, MS_ATTRIBUTE_EAP_TLV, IAS_ATTRIBUTE_REJECT_REASON_CODE, IAS_ATTRIBUTE_PROXY_EAP_CONFIG, IAS_ATTRIBUTE_EAP_SESSION, IAS_ATTRIBUTE_IS_REPLAY, IAS_ATTRIBUTE_CLEAR_TEXT_PASSWORD, MS_ATTRIBUTE_IDENTITY_TYPE, MS_ATTRIBUTE_SERVICE_CLASS, MS_ATTRIBUTE_QUARANTINE_USER_CLASS=8110, MS_ATTRIBUTE_QUARANTINE_STATE, IAS_ATTRIBUTE_OVERRIDE_RAP_AUTH, IAS_ATTRIBUTE_PEAP_CHANNEL_UP, IAS_ATTRIBUTE_NAME_MAPPED, IAS_ATTRIBUTE_POLICY_ENFORCED, IAS_ATTRIBUTE_MACHINE_NTGROUPS, IAS_ATTRIBUTE_USER_NTGROUPS, IAS_ATTRIBUTE_MACHINE_TOKEN_GROUPS, IAS_ATTRIBUTE_USER_TOKEN_GROUPS, MS_ATTRIBUTE_QUARANTINE_GRACE_TIME=8120, IAS_ATTRIBUTE_QUARANTINE_URL, IAS_ATTRIBUTE_QUARANTINE_FIXUP_SERVERS, MS_ATTRIBUTE_NOT_QUARANTINE_CAPABLE, IAS_ATTRIBUTE_QUARANTINE_SYSTEM_HEALTH_RESULT, IAS_ATTRIBUTE_QUARANTINE_SYSTEM_HEALTH_VALIDATORS, IAS_ATTRIBUTE_MACHINE_NAME, IAS_ATTRIBUTE_NT4_MACHINE_NAME, IAS_ATTRIBUTE_QUARANTINE_SESSION_HANDLE, IAS_ATTRIBUTE_FULLY_QUALIFIED_MACHINE_NAME, IAS_ATTRIBUTE_QUARANTINE_FIXUP_SERVERS_CONFIGURATION=8130, IAS_ATTRIBUTE_CLIENT_QUARANTINE_COMPATIBLE, MS_ATTRIBUTE_NETWORK_ACCESS_SERVER_TYPE, IAS_ATTRIBUTE_QUARANTINE_SESSION_ID, MS_ATTRIBUTE_AFW_QUARANTINE_ZONE, MS_ATTRIBUTE_AFW_PROTECTION_LEVEL, IAS_ATTRIBUTE_QUARANTINE_UPDATE_NON_COMPLIANT, IAS_ATTRIBUTE_REQUEST_START_TIME, MS_ATTRIBUTE_MACHINE_NAME, IAS_ATTRIBUTE_CLIENT_IPv6_ADDRESS, IAS_ATTRIBUTE_SAVED_RADIUS_FRAMED_INTERFACE_ID=8140, IAS_ATTRIBUTE_SAVED_RADIUS_FRAMED_IPv6_PREFIX, IAS_ATTRIBUTE_SAVED_RADIUS_FRAMED_IPv6_ROUTE, MS_ATTRIBUTE_QUARANTINE_GRACE_TIME_CONFIGURATION, MS_ATTRIBUTE_IPv6_FILTER = 8144, MS_ATTRIBUTE_IPV4_REMEDIATION_SERVERS, MS_ATTRIBUTE_IPV6_REMEDIATION_SERVERS, IAS_ATTRIBUTE_PROXY_RETRY_COUNT, IAS_ATTRIBUTE_MACHINE_INVENTORY, IAS_ATTRIBUTE_ABSOLUTE_TIME, MS_ATTRIBUTE_QUARANTINE_SOH=8150, IAS_ATTRIBUTE_EAP_TYPES_CONFIGURED_IN_PROXYPOLICY, MS_ATTRIBUTE_HCAP_LOCATION_GROUP_NAME, MS_ATTRIBUTE_EXTENDED_QUARANTINE_STATE, // BUGBUG: Remove before LH server RTM IAS_ATTRIBUTE_SOH_CARRIER_EAPTLV, MS_ATTRIBUTE_HCAP_USER_GROUPS=8155, IAS_ATTRIBUTE_SAVED_MACHINE_HEALTHCHECK_ONLY, IAS_ATTRIBUTE_POLICY_EVALUATED_SHV, // can have multiple instances of this attribute MS_ATTRIBUTE_RAS_CORRELATION_ID, MS_ATTRIBUTE_HCAP_USER_NAME, IAS_ATTRIBUTE_NT4_HCAP_ACCOUNT_NAME=8160, // SID for IAS_ATTRIBUTE_NT4_ACCOUNT_NAME (or IAS_ATTRIBUTE_NT4_HCAP_ACCOUNT_NAME) // regardless of whether the later is a user account or a machine account IAS_ATTRIBUTE_USER_TOKEN_SID, // SID for IAS_ATTRIBUTE_NT4_MACHINE_NAME IAS_ATTRIBUTE_MACHINE_TOKEN_SID, IAS_ATTRIBUTE_MACHINE_VALIDATED, MS_ATTRIBUTE_USER_IPv4_ADDRESS, MS_ATTRIBUTE_USER_IPv6_ADDRESS=8165, MS_ATTRIBUTE_TSG_DEVICE_REDIRECTION, IAS_ATTRIBUTE_ACCEPT_REASON_CODE, IAS_ATTRIBUTE_LOGGING_RESULT, IAS_ATTRIBUTE_SERVER_IP_ADDRESS, // the IP address of the NPS server which accepted the incoming request IAS_ATTRIBUTE_SERVER_IPv6_ADDRESS, // the IP address of the NPS server which accepted the incoming request IAS_ATTRIBUTE_RADIUS_USERNAME_ENCODING_ASCII, // IAS_ATTRIBUTE_ // New IAS Attributes Here RAS_ATTRIBUTE_ENCRYPTION_TYPE = (0xFFFFFFFF-89), RAS_ATTRIBUTE_ENCRYPTION_POLICY, RAS_ATTRIBUTE_BAP_REQUIRED, RAS_ATTRIBUTE_BAP_LINE_DOWN_TIME, RAS_ATTRIBUTE_BAP_LINE_DOWN_LIMIT // RAS_ATTRIBUTE_ // New RAS Attributes Here } ATTRIBUTEID; ////////////////////////////////////////////////////////////////////////// // // Name: NEW_LOG_FILE_FREQUENCY // // What: IAS Accounting Request Handler Log Frequency Values // // Purpose: Defines the log frequency settings for the IAS accounting // request handler. // ////////////////////////////////////////////////////////////////////////// typedef [public] enum _NEW_LOG_FILE_FREQUENCY { IAS_LOGGING_UNLIMITED_SIZE=0, IAS_LOGGING_DAILY, IAS_LOGGING_WEEKLY, IAS_LOGGING_MONTHLY, IAS_LOGGING_WHEN_FILE_SIZE_REACHES } NEW_LOG_FILE_FREQUENCY; ////////////////////////////////////////////////////////////////////////// // // Name: AUTHENTICATION_TYPE // // What: IAS Authentication Type Values // ////////////////////////////////////////////////////////////////////////// typedef [public] enum _AUTHENTICATION_TYPE { IAS_AUTH_INVALID, IAS_AUTH_PAP, IAS_AUTH_MD5CHAP, IAS_AUTH_MSCHAP, IAS_AUTH_MSCHAP2, IAS_AUTH_EAP, IAS_AUTH_ARAP, IAS_AUTH_NONE, IAS_AUTH_CUSTOM, IAS_AUTH_MSCHAP_CPW, IAS_AUTH_MSCHAP2_CPW, IAS_AUTH_PEAP } AUTHENTICATION_TYPE; ////////////////////////////////////////////////////////////////////////// // // Name: IDENTITY_TYPE // // What: IAS Identity type Values // // Purpose: Defines the different possible values for MS_ATTRIBUTE_IDENTITY_TYPE // ////////////////////////////////////////////////////////////////////////// typedef [public] enum _IDENTITY_TYPE { IAS_IDENTITY_NO_DEFAULT = 0x01 } IDENTITY_TYPE; ////////////////////////////////////////////////////////////////////////// // // Name: ATTRIBUTESYNTAX // // What: Attribute SDO syntax types // // Purpose: Defines the set Attribute SDO syntaxes (attribute data types) // ////////////////////////////////////////////////////////////////////////// typedef [public] enum _ATTRIBUTESYNTAX { IAS_SYNTAX_BOOLEAN = 1, IAS_SYNTAX_INTEGER, IAS_SYNTAX_ENUMERATOR, IAS_SYNTAX_INETADDR, IAS_SYNTAX_STRING, IAS_SYNTAX_OCTETSTRING, IAS_SYNTAX_UTCTIME, IAS_SYNTAX_PROVIDERSPECIFIC, IAS_SYNTAX_UNSIGNEDINTEGER, IAS_SYNTAX_INETADDR6 } ATTRIBUTESYNTAX; ////////////////////////////////////////////////////////////////////////// // // Name: Dictionary Attriubutes Restrictions // // What: IAS Dictionary Attribute IDs // // Purpose: Defines the restrictions for the dictionary attributes // ////////////////////////////////////////////////////////////////////////// typedef [public] enum _ATTRIBUTERESTRICTIONS { MULTIVALUED = 0x01, ALLOWEDINPROFILE = 0x02, ALLOWEDINCONDITION = 0x04, ALLOWEDINPROXYPROFILE = 0x08, ALLOWEDINPROXYCONDITION = 0x10, ALLOWEDINVPNDIALUP = 0x20, ALLOWEDIN8021X = 0x40 } ATTRIBUTERESTRICTIONS; ////////////////////////////////////////////////////////////////////////// // // Name: Dictionary Attriubutes Use // // What: IAS Dictionary Attribute Use cases // // Purpose: Defines the use cases for the dictionary attributes // ////////////////////////////////////////////////////////////////////////// typedef [public] enum _ATTRIBUTEFILTER { ATTRIBUTE_FILTER_NONE = 0x0, ATTRIBUTE_FILTER_VPN_DIALUP = 0x1, ATTRIBUTE_FILTER_IEEE_802_1x = 0x2 } ATTRIBUTEFILTER; ////////////////////////////////////////////////////////////////////////// // // Name: Dictionary Attributes Info // // What: IAS Dictionary Attribute Info IDS // // Purpose: Defines the attribute info for the dictionary attributes // ////////////////////////////////////////////////////////////////////////// typedef [public] enum _ATTRIBUTEINFO { NAME = 1, SYNTAX, RESTRICTIONS, DESCRIPTION, VENDORID, LDAPNAME, VENDORTYPE } ATTRIBUTEINFO; ////////////////////////////////////////////////////////////////////////// // // Name: SDO Property Aliases // // What: SDO Property Enumerations // // Purpose: Property IDs used in conjunction with the ISdo and // ISdoDictionary interfaces. // ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// // Common Properties ////////////////////////////////////////////////////////////////////////// typedef [public] enum _IASCOMMONPROPERTIES { PROPERTY_SDO_RESERVED = 0, // PROPERTY_SDO_CLASS, // SDO class name PROPERTY_SDO_NAME, // SDO name PROPERTY_SDO_DESCRIPTION, // SDO description PROPERTY_SDO_ID, // SDO instance id PROPERTY_SDO_DATASTORE_NAME, // SDO name in data store PROPERTY_SDO_TEMPLATE_GUID, // SDO template GUID. PROPERTY_SDO_OPAQUE, // UI will save some info in this property. // New Properties Here... PROPERTY_SDO_START= 0x00000400 // 1024 stock object properties } IASCOMMONPROPERTIES; ///////////////////////////////////////////////////////////////////////// // User Properties ///////////////////////////////////////////////////////////////////////// typedef [public] enum _USERPROPERTIES { PROPERTY_USER_CALLING_STATION_ID = PROPERTY_SDO_START, PROPERTY_USER_SAVED_CALLING_STATION_ID, PROPERTY_USER_RADIUS_CALLBACK_NUMBER, PROPERTY_USER_RADIUS_FRAMED_ROUTE, PROPERTY_USER_RADIUS_FRAMED_IP_ADDRESS, PROPERTY_USER_SAVED_RADIUS_CALLBACK_NUMBER, PROPERTY_USER_SAVED_RADIUS_FRAMED_ROUTE, PROPERTY_USER_SAVED_RADIUS_FRAMED_IP_ADDRESS, PROPERTY_USER_ALLOW_DIALIN, PROPERTY_USER_SERVICE_TYPE, PROPERTY_USER_RADIUS_FRAMED_IPV6_ROUTE, PROPERTY_USER_SAVED_RADIUS_FRAMED_IPV6_ROUTE, PROPERTY_USER_RADIUS_FRAMED_INTERFACE_ID, // IPV6 PROPERTY_USER_SAVED_RADIUS_FRAMED_INTERFACE_ID, // IPV6 PROPERTY_USER_RADIUS_FRAMED_IPV6_PREFIX, PROPERTY_USER_SAVED_RADIUS_FRAMED_IPV6_PREFIX // New Properties Here... } USERPROPERTIES; ///////////////////////////////////////////////////////////////////////// // Dictionary Properties ///////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////// typedef [public] enum _DICTIONARYPROPERTIES { PROPERTY_DICTIONARY_ATTRIBUTES_COLLECTION = PROPERTY_SDO_START, PROPERTY_DICTIONARY_LOCATION } DICTIONARYPROPERTIES; ///////////////////////////////////////////////////////////////////////// typedef [public] enum _ATTRIBUTEPROPERTIES { PROPERTY_ATTRIBUTE_ID = PROPERTY_SDO_START, PROPERTY_ATTRIBUTE_VENDOR_ID, PROPERTY_ATTRIBUTE_VENDOR_TYPE_ID, PROPERTY_ATTRIBUTE_IS_ENUMERABLE, PROPERTY_ATTRIBUTE_ENUM_NAMES, PROPERTY_ATTRIBUTE_ENUM_VALUES, PROPERTY_ATTRIBUTE_SYNTAX, PROPERTY_ATTRIBUTE_ALLOW_MULTIPLE, PROPERTY_ATTRIBUTE_ALLOW_LOG_ORDINAL, PROPERTY_ATTRIBUTE_ALLOW_IN_PROFILE, PROPERTY_ATTRIBUTE_ALLOW_IN_CONDITION, PROPERTY_ATTRIBUTE_DISPLAY_NAME, PROPERTY_ATTRIBUTE_VALUE, PROPERTY_ATTRIBUTE_ALLOW_IN_PROXY_PROFILE, PROPERTY_ATTRIBUTE_ALLOW_IN_PROXY_CONDITION, PROPERTY_ATTRIBUTE_ALLOW_IN_VPNDIALUP, PROPERTY_ATTRIBUTE_ALLOW_IN_8021X, PROPERTY_ATTRIBUTE_ENUM_FILTERS // New Properties Here... } ATTRIBUTEPROPERTIES; ///////////////////////////////////////////////////////////////////////// // IAS Service Properties ///////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////// typedef [public] enum _IASPROPERTIES { PROPERTY_IAS_RADIUSSERVERGROUPS_COLLECTION = PROPERTY_SDO_START, PROPERTY_IAS_POLICIES_COLLECTION, PROPERTY_IAS_PROFILES_COLLECTION, PROPERTY_IAS_PROTOCOLS_COLLECTION, PROPERTY_IAS_AUDITORS_COLLECTION, PROPERTY_IAS_REQUESTHANDLERS_COLLECTION, PROPERTY_IAS_PROXYPOLICIES_COLLECTION, PROPERTY_IAS_PROXYPROFILES_COLLECTION, PROPERTY_IAS_REMEDIATIONSERVERGROUPS_COLLECTION, PROPERTY_IAS_SHVTEMPLATES_COLLECTION // New Properties Here... } IASPROPERTIES; ///////////////////////////////////////////////////////////////////////// // Properties used by ias templates. Each property identify a top level // collection under ias templates. // Naming convention: // PROPERTY_TEMPLATES_XXXX_TEMPLATES: identify collections of templates // of certain types. // PROPERTY_TEMPLATES_XXXX_COLLECTION: identify collections of certain // SDO objects that are used by its parent templates. // For example: // PROPERTY_TEMPLATES_POLICIES_TEMPLATES - it identify a collection // of policy templates. Each policy will have an inner profile SDO // object. This inner profile SDO object can be found in the // collection identified by PROPERTY_TEMPLATES_PROFILES_COLLECTION. // This inner profile SDO object can be either a reference to a // profile template, or a standard profile SDO object. // PROPERTY_TEMPLATES_PROFILES_TEMPLATES - it identify a collection // of profile templates. When a particular profile template is // referred to by a policy template, we will make a copy of this // profile template in PROPERTY_TEMPLATES_PROFILES_COLLECTION. // When we join the parent policy with its corresponding profile, // we will use PROPERTY_TEMPLATES_POLICIES_TEMPLATES and // PROPERTY_TEMPLATES_PROFILES_COLLECTION. // // If in the future, template APIs are published, a few of the property // IDs should still remain private. See commented for inside // TEMPLATESPROPERTIES ///////////////////////////////////////////////////////////////////////// typedef [public] enum _TEMPLATESPROPERTIES { PROPERTY_TEMPLATES_POLICIES_TEMPLATES = PROPERTY_SDO_START, PROPERTY_TEMPLATES_PROFILES_TEMPLATES, // This property should not be published. PROPERTY_TEMPLATES_PROFILES_COLLECTION, PROPERTY_TEMPLATES_PROXYPOLICIES_TEMPLATES, PROPERTY_TEMPLATES_PROXYPROFILES_TEMPLATES, // This property should not be published. PROPERTY_TEMPLATES_PROXYPROFILES_COLLECTION, PROPERTY_TEMPLATES_REMEDIATIONSERVERGROUPS_TEMPLATES, PROPERTY_TEMPLATES_SHVTEMPLATES_TEMPLATES, PROPERTY_TEMPLATES_CLIENTS_TEMPLATES, PROPERTY_TEMPLATES_RADIUSSERVERS_TEMPLATES, PROPERTY_TEMPLATES_SHAREDSECRETS_TEMPLATES, PROPERTY_TEMPLATES_IPFILTERS_TEMPLATES, // New Properties Here... } TEMPLATESPROPERTIES; typedef [public] enum _CLIENTPROPERTIES { PROPERTY_CLIENT_REQUIRE_SIGNATURE = PROPERTY_SDO_START, PROPERTY_CLIENT_UNUSED, PROPERTY_CLIENT_SHARED_SECRET, PROPERTY_CLIENT_NAS_MANUFACTURER, PROPERTY_CLIENT_ADDRESS, PROPERTY_CLIENT_QUARANTINE_COMPATIBLE, PROPERTY_CLIENT_ENABLED, PROPERTY_CLIENT_SECRET_TEMPLATE_GUID // New Properties Here... } CLIENTPROPERTIES; ///////////////////////////////////////////////////////////////////////// typedef [public] enum _VENDORPROPERTIES { PROPERTY_NAS_VENDOR_ID = PROPERTY_SDO_START // New Properties Here... } VENDORPROPERTIES; ///////////////////////////////////////////////////////////////////////// typedef [public] enum _PROFILEPROPERTIES { PROPERTY_PROFILE_ATTRIBUTES_COLLECTION = PROPERTY_SDO_START, PROPERTY_PROFILE_IPFILTER_TEMPLATE_GUID // New Properties Here... } PROFILEPROPERTIES; ///////////////////////////////////////////////////////////////////////// typedef [public] enum _POLICYPROPERTIES { PROPERTY_POLICY_CONSTRAINT = PROPERTY_SDO_START, PROPERTY_POLICY_MERIT, PROPERTY_POLICY_UNUSED0, PROPERTY_POLICY_UNUSED1, PROPERTY_POLICY_PROFILE_NAME, PROPERTY_POLICY_ACTION, PROPERTY_POLICY_CONDITIONS_COLLECTION, PROPERTY_POLICY_ENABLED, PROPERTY_POLICY_SOURCETAG, // New Properties Here... } POLICYPROPERTIES; ///////////////////////////////////////////////////////////////////////// typedef [public] enum _CONDITIONPROPERTIES { PROPERTY_CONDITION_TEXT = PROPERTY_SDO_START, // New Properties Here... } CONDITIONPROPERTIES; ///////////////////////////////////////////////////////////////////////// typedef [public] enum _RADIUSSERVERGROUPPROPERTIES { PROPERTY_RADIUSSERVERGROUP_SERVERS_COLLECTION = PROPERTY_SDO_START, // New Properties Here... } RADIUSSERVERGROUPPROPERTIES; ///////////////////////////////////////////////////////////////////////// typedef [public] enum _RADIUSSERVERPROPERTIES { PROPERTY_RADIUSSERVER_AUTH_PORT = PROPERTY_SDO_START, PROPERTY_RADIUSSERVER_AUTH_SECRET, PROPERTY_RADIUSSERVER_ACCT_PORT, PROPERTY_RADIUSSERVER_ACCT_SECRET, PROPERTY_RADIUSSERVER_ADDRESS, PROPERTY_RADIUSSERVER_FORWARD_ACCT_ONOFF, PROPERTY_RADIUSSERVER_PRIORITY, PROPERTY_RADIUSSERVER_WEIGHT, PROPERTY_RADIUSSERVER_TIMEOUT, PROPERTY_RADIUSSERVER_MAX_LOST, PROPERTY_RADIUSSERVER_BLACKOUT, PROPERTY_RADIUSSERVER_SEND_SIGNATURE, PROPERTY_RADIUSSERVER_AUTH_SECRET_TEMPLATE_GUID, PROPERTY_RADIUSSERVER_ACCT_SECRET_TEMPLATE_GUID // New Properties Here... } RADIUSSERVERPROPERTIES; ///////////////////////////////////////////////////////////////////////// typedef [public] enum _REMEDIATIONSERVERGROUPPROPERTIES { PROPERTY_REMEDIATIONSERVERGROUP_SERVERS_COLLECTION = PROPERTY_SDO_START, // New Properties Here... } REMEDIATIONSERVERGROUPPROPERTIES; ///////////////////////////////////////////////////////////////////////// typedef [public] enum _REMEDIATIONSERVERPROPERTIES { PROPERTY_REMEDIATIONSERVER_ADDRESS = PROPERTY_SDO_START, PROPERTY_REMEDIATIONSERVER_FRIENDLY_NAME, // New Properties Here... } REMEDIATIONSERVERPROPERTIES; ///////////////////////////////////////////////////////////////////////// typedef [public] enum _SHVTEMPLATEPROPERTIES { PROPERTY_SHV_COMBINATION_TYPE = PROPERTY_SDO_START, PROPERTY_SHV_LIST, PROPERTY_SHVCONFIG_LIST // New Properties Here... } SHVTEMPLATEPROPERTIES; ///////////////////////////////////////////////////////////////////////// typedef [public] enum _IPFILTERPROPERTIES { PROPERTY_IPFILTER_ATTRIBUTES_COLLECTION = PROPERTY_SDO_START // New Properties Here... } IPFILTERPROPERTIES; ///////////////////////////////////////////////////////////////////////// typedef [public] enum _SHAREDSECRETPROPERTIES { PROPERTY_SHAREDSECRET_STRING = PROPERTY_SDO_START // New Properties Here... } SHAREDSECRETPROPERTIES; ///////////////////////////////////////////////////////////////////////// // Component Properties (components available from IAS service object) ///////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////// typedef [public] enum _IASCOMPONENTPROPERTIES { PROPERTY_COMPONENT_ID = PROPERTY_SDO_START, PROPERTY_COMPONENT_PROG_ID, // New Properties Here... PROPERTY_COMPONENT_START } IASCOMPONENTPROPERTIES; ///////////////////////////////////////////////////////////////////////// typedef [public] enum _PROTOCOLPROPERTIES { PROPERTY_PROTOCOL_REQUEST_HANDLER = PROPERTY_COMPONENT_START, // New Properties Here... PROPERTY_PROTOCOL_START } PROTOCOLPROPERTIES; ///////////////////////////////////////////////////////////////////////// typedef [public] enum _RADIUSPROPERTIES { PROPERTY_RADIUS_ACCOUNTING_PORT = PROPERTY_PROTOCOL_START, PROPERTY_RADIUS_AUTHENTICATION_PORT, PROPERTY_RADIUS_CLIENTS_COLLECTION, PROPERTY_RADIUS_VENDORS_COLLECTION // New Properties Here... } RADIUSPROPERTIES; ///////////////////////////////////////////////////////////////////////// typedef [public] enum _NTEVENTLOGPROPERTIES { PROPERTY_EVENTLOG_LOG_APPLICATION_EVENTS = PROPERTY_COMPONENT_START, PROPERTY_EVENTLOG_LOG_MALFORMED, PROPERTY_EVENTLOG_LOG_DEBUG // New Properties Here... } NTEVENTLOGPROPERTIES; ///////////////////////////////////////////////////////////////////////// typedef [public] enum _NAMESPROPERTIES { PROPERTY_NAMES_REALMS = PROPERTY_COMPONENT_START // New Properties Here... } NAMESPROPERTIES; ///////////////////////////////////////////////////////////////////////// typedef [public] enum _NTSAMPROPERTIES { PROPERTY_NTSAM_ALLOW_LM_AUTHENTICATION = PROPERTY_COMPONENT_START // New Properties Here... } NTSAMPROPERTIES; ///////////////////////////////////////////////////////////////////////// typedef [public] enum _ACCOUNTINGPROPERTIES { PROPERTY_ACCOUNTING_LOG_ACCOUNTING = PROPERTY_COMPONENT_START, PROPERTY_ACCOUNTING_LOG_ACCOUNTING_INTERIM, PROPERTY_ACCOUNTING_LOG_AUTHENTICATION, PROPERTY_ACCOUNTING_LOG_OPEN_NEW_FREQUENCY, PROPERTY_ACCOUNTING_LOG_OPEN_NEW_SIZE, PROPERTY_ACCOUNTING_LOG_FILE_DIRECTORY, PROPERTY_ACCOUNTING_LOG_IAS1_FORMAT, PROPERTY_ACCOUNTING_LOG_ENABLE_LOGGING, // Obsolete PROPERTY_ACCOUNTING_LOG_DELETE_IF_FULL, PROPERTY_ACCOUNTING_SQL_MAX_SESSIONS, PROPERTY_ACCOUNTING_LOG_AUTHENTICATION_INTERIM, PROPERTY_ACCOUNTING_LOG_FILE_IS_BACKUP, PROPERTY_ACCOUNTING_DISCARD_REQUEST_ON_FAILURE // New Properties Here... } ACCOUNTINGPROPERTIES; ///////////////////////////////////////////////////////////////////////// typedef [public] enum _EAPWRAPPROPERTIES { PROPERTY_EAP_SESSION_TIMEOUT = PROPERTY_COMPONENT_START, PROPERTY_EAP_MAX_SESSIONS // New Properties Here... } EAPWRAPPROPERTIES; ///////////////////////////////////////////////////////////////////////// typedef [public] enum _NAPPROPERTIES { PROPERTY_NAP_POLICIES_COLLECTION = PROPERTY_COMPONENT_START, PROPERTY_SHV_TEMPLATES_COLLECTION // New Properties Here... } NAPPROPERTIES; ///////////////////////////////////////////////////////////////////////// typedef [public] enum _RADIUSPROXYPROPERTIES { PROPERTY_RADIUSPROXY_SERVERGROUPS = PROPERTY_COMPONENT_START // New Properties Here... } RADIUSPROXYPROPERTIES; ///////////////////////////////////////////////////////////////////////// typedef [public] enum _REMEDIATIONSERVERSPROPERTIES { PROPERTY_REMEDIATIONSERVERS_SERVERGROUPS = PROPERTY_COMPONENT_START // New Properties Here... } REMEDIATIONSERVERSPROPERTIES; ////////////////////////////////////////////////////////////////////////// // // Name: SHV COMBINATION TYPE // // What: Supported System health validator combination type // ////////////////////////////////////////////////////////////////////////// typedef [public] enum _SHV_COMBINATION_TYPE { SHV_COMBINATION_TYPE_ALL_PASS = 0, SHV_COMBINATION_TYPE_ALL_FAIL, SHV_COMBINATION_TYPE_ONE_OR_MORE_PASS, SHV_COMBINATION_TYPE_ONE_OR_MORE_FAIL, SHV_COMBINATION_TYPE_ONE_OR_MORE_INFECTED, SHV_COMBINATION_TYPE_ONE_OR_MORE_TRANSITIONAL, SHV_COMBINATION_TYPE_ONE_OR_MORE_UNKNOWN, // // New combination type here... SHV_COMBINATION_TYPE_MAX } SHV_COMBINATION_TYPE; ////////////////////////////////////////////////////////////////////////// // // Name: Service Type // // What: Supported Service Types // // Purpose: Defines the set of NT networking services supported by // the IAS subsystem. Used by the ISdoService interface. // ////////////////////////////////////////////////////////////////////////// typedef [public] enum _SERVICE_TYPE { SERVICE_TYPE_IAS = 0, SERVICE_TYPE_RAS, // // New service type here... SERVICE_TYPE_MAX } SERVICE_TYPE; ////////////////////////////////////////////////////////////////////////// // // Name: Machine Information // // What: Identifiers for Machine Information // // Purpose: Defines the set of machine information available via the // ISdoMachine interface. // ////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////// // Operating System Types ///////////////////////////////////////////////////////////////////////// typedef [public] enum _IASOSTYPE { SYSTEM_TYPE_NT4_WORKSTATION, SYSTEM_TYPE_NT5_WORKSTATION, SYSTEM_TYPE_NT6_WORKSTATION, SYSTEM_TYPE_NT6_1_WORKSTATION, SYSTEM_TYPE_NT4_SERVER, SYSTEM_TYPE_NT5_SERVER, SYSTEM_TYPE_NT6_SERVER, SYSTEM_TYPE_NT6_1_SERVER } IASOSTYPE, *PIASOSTYPE; ///////////////////////////////////////////////////////////////////////// // Domain Types ///////////////////////////////////////////////////////////////////////// typedef [public] enum _DOMAINTYPE { DOMAIN_TYPE_NONE, // Standalone DOMAIN_TYPE_NT4, DOMAIN_TYPE_NT5, DOMAIN_TYPE_MIXED } IASDOMAINTYPE, *PIASDOMAINTYPE; ////////////////////////////////////////////////////////////////////////// // // Name: IASDATASTORE // // What: Set of data stores available to SDO client applications // // Purpose: Defines the set of set of data store via the // ISdoMachine interface. // ////////////////////////////////////////////////////////////////////////// typedef [public] enum _IASDATASTORE { DATA_STORE_LOCAL, DATA_STORE_DIRECTORY, } IASDATASTORE, *PIASDATASTORE; ////////////////////////////////////////////////////////////////////////// // ISdoMachine - Used to retrieve information from a Machine SDO ////////////////////////////////////////////////////////////////////////// [ object, uuid(479F6E75-49A2-11d2-8ECA-00C04FC2F519), dual, pointer_default(unique) ] interface ISdoMachine: IDispatch { [id(1)] HRESULT Attach ( [in] BSTR bstrComputerName ); [id(2)] HRESULT GetDictionarySDO ( [out, retval] IUnknown** ppDictionarySDO ); [id(3)] HRESULT GetServiceSDO ( [in] IASDATASTORE eDataStore, [in] BSTR bstrServiceName, [out, retval] IUnknown** ppServiceSDO ); [id(4)] HRESULT GetUserSDO ( [in] IASDATASTORE eDataStore, [in] BSTR bstrUserName, [out, retval] IUnknown** ppUserSDO ); [id(5)] HRESULT GetOSType ( [out, retval] IASOSTYPE* eOSType ); [id(6)] HRESULT GetDomainType( [out, retval] IASDOMAINTYPE* eDomainType ); [id(7)] HRESULT IsDirectoryAvailable( [out, retval] VARIANT_BOOL* boolDirectoryAvailable ); [id(8)] HRESULT GetAttachedComputer( [out, retval] BSTR* bstrComputerName ); [id(9), hidden] HRESULT GetSDOSchema( [out, retval] IUnknown** ppSDOSchema ); }; ////////////////////////////////////////////////////////////////////////// // ISdoMachine2 - Extended interface to retrieve templates SDO ////////////////////////////////////////////////////////////////////////// [ object, uuid(518E5FFE-D8CE-4f7e-A5DB-B40A35419D3B), dual, pointer_default(unique) ] interface ISdoMachine2 : ISdoMachine { [id(10)] HRESULT GetTemplatesSDO([in] BSTR bstrServiceName, [out, retval] IUnknown** ppTemplatesSDO); // Method: ISdoMachine2::EnableTemplates // // Synopsis: // If the client is template aware, it MUST call this function to say so. // Calling this function will be able to tell SDO how to treate the editing // of template reference. // // The reason to have such an API: // In order to keep backward compatibility for third party tools that uses netsh // or SDO APIs, we need to make sure that when they use SDO APIs to manage // configurations, it will still work. However, if they change a template // reference through SDO API directly, we can't update the original template. // In this case, we will remove the template reference (i.e. the template GUID) // and convert it to a regular configuration element. // // However, for UI, since it is tempalte aware, it will disable editing on // template reference in the configuration elements part. [id(11)] HRESULT EnableTemplates(); // Method: ISdoMachine2::SyncConfigAgainstTemplates // // Synopsis: // Update pCofnigRoot, for every template reference in pConfigRoot, update it // based on latest values in pTemplatesRoot. // // SdoMachine can create pTemplatesRoot and pConfigRoot inside this function. However, // the caller of this function (currently NPS UI, in the future it can be some command line // tools) in general should have already had them already, so let the calelr pass them // in for efficiency. // // If *ppConfigRoot is NULL, the function will create a ConfigRoot pointer and pass it to caller. // // If *ppTemplatesRoot is NULL, the function will create a TemplatesRoot pointer and pass it to caller. // // If bForcedSync == FALSE, the function will check the timestamp of tempaltes file and // the timestamp value stored in configuration file, and only sync the configuration when // these timestamps are different. If bForcedSync == TRUE, the function will sync // the configuraion without checking the timestamp. // [id(12)] HRESULT SyncConfigAgainstTemplates( [in] BSTR bstrServiceName, [in, out] IUnknown** ppConfigRoot, [in, out] IUnknown** ppTemplatesRoot, [in] VARIANT_BOOL bForcedSync); // Method: ISdoMachine2::ImportRemoteTemplates // // Synopsis: // Import templates from a remote machine to local machine. For templates with the same // GUIDs, update local ones. For templates that are in remote machine only, add them to // local machine. // // SdoMachine can create pLocalTemplatesRoot inside this function. However, // the caller of this function (currently NPS UI, in the future it can be some command line // tools) in general should have already had them already, so let the calelr pass it // in for efficiency. [id(13)] HRESULT ImportRemoteTemplates(IUnknown* pLocalTemplatesRoot, BSTR bstrRemoteMachineName); // Method: ISdoMachine2::Reload // // Synopsis: // Reload configuration/templates in the datastore layer. // // GetServiceSDO(), GetTemplatesSDO(), and GetSDOSchema() must be called after this function to // reflect the changes in SDO layer. // [id(14)] HRESULT Reload(); }; ////////////////////////////////////////////////////////////////////////// // ISdoServiceControl - Used to control a Service SDO ////////////////////////////////////////////////////////////////////////// [ object, uuid(479F6E74-49A2-11d2-8ECA-00C04FC2F519), dual, pointer_default(unique) ] interface ISdoServiceControl: IDispatch { [id(1)] HRESULT StartService (void); [id(2)] HRESULT StopService (void); [id(3)] HRESULT GetServiceStatus ([out, retval] LONG* status); [id(4)] HRESULT ResetService (void); }; ////////////////////////////////////////////////////////////////////////// // ISdo - Used to store, retrieve and update SDO information ////////////////////////////////////////////////////////////////////////// [ object, uuid(56BC53DE-96DB-11D1-BF3F-000000000000), dual, pointer_default(unique) ] interface ISdo : IDispatch { [id(1), hidden] HRESULT GetPropertyInfo ([in] LONG Id, [out, retval] IUnknown** ppPropertyInfo); [id(2)] HRESULT GetProperty ([in] LONG Id, [out, retval] VARIANT* pValue); [id(3)] HRESULT PutProperty ([in] LONG Id, [in] VARIANT* pValue); [id(4)] HRESULT ResetProperty ([in] LONG Id); [id(5)] HRESULT Apply (void); [id(6)] HRESULT Restore (void); [propget, id(DISPID_NEWENUM)] HRESULT _NewEnum ([out, retval] IUnknown** ppEnumVARIANT); // Property enumerator }; ////////////////////////////////////////////////////////////////////////// // ISdoCollection - Used to manipulate the contents of a collection ////////////////////////////////////////////////////////////////////////// [ object, uuid(56BC53E2-96DB-11D1-BF3F-000000000000), dual, pointer_default(unique) ] interface ISdoCollection : IDispatch { [propget, id(1)] HRESULT Count ([out, retval] long *pCount); // Do not use this to add a template into configuration, or add a // template to its parent template (e.g. add a profile template into // policy template). // Use ITemplateSdo::AddToCollection() instead. [id(2)] HRESULT Add ([in] BSTR bstrName, [in, out] IDispatch** ppItem); [id(3)] HRESULT Remove ([in] IDispatch* pItem); [id(4)] HRESULT RemoveAll (void); [id(5)] HRESULT Reload (void); [id(6)] HRESULT IsNameUnique([in] BSTR bstrName, [out, retval] VARIANT_BOOL* pBool); [id(DISPID_VALUE)] HRESULT Item ([in] VARIANT* Name, [out, retval] IDispatch** pItem); [propget, id(DISPID_NEWENUM)] HRESULT _NewEnum ([out, retval] IUnknown** ppEnumVARIANT); }; ////////////////////////////////////////////////////////////////////////// // ITemplateSdo - Used to store, retrieve and update SDO template information ////////////////////////////////////////////////////////////////////////// [ object, uuid(8AA85302-D2E2-4e20-8B1F-A571E437D6C9), dual, pointer_default(unique) ] interface ITemplateSdo: ISdo { // Method: ITemplateSdo::AddToCollection // // Synopsis: // This function will be used to add "this" template (when it is top level), // into the actual configuration. // // Arguments: // [bstrName] - [in] // The new name of the added element in the configuration. // If it is NULL, it means use the name of "this" ITemmplateSdo object as // the name of the added element. // [pCollection] - [in] // The new element will be added into this collection. [pCollection] // has to be the collection of the same types as "this" ItemplateSdo. // [ppItem] - [out] // Point to the newly added SDO. [id(9)] HRESULT AddToCollection( [in] BSTR bstrName, [in] IDispatch* pCollection, [in, out] IDispatch** ppItem ); // Method: ITemplateSdo::AddToSdo // // Synopsis: // This function will be used to add "this" template (when it is non-top-level), // to its parent template object, or to its parent non-template SDO object. // It is an error if "this" template can only be a top level SDO object. // // Arguments: // [bstrName] - [in] // The new name of the added child element in the parent object. // If it is NULL, it means use the name of "this" ITemplateSdo object as // the name of the added child element. // For operations on certain types, e.g., add a profile template into a policy // template/SDO, the added profile's name should be the same as its parent // policy's name. In such cases, the [bstrName] parameter should be NULL. // [pSdoTarget] - [in] // The parent SDO/Template. // [ppItem] - [out] // Point to the newly added child SDO. [id(10)] HRESULT AddToSdo( [in] BSTR bstrName, [in] IDispatch* pSdoTarget, [in, out] IDispatch** ppItem ); // Method: ITemplateSdo::AddToSdoAsProperty // // Synopsis: // This function will be used to add "this" template (when it is non-top-level), // as a single property, to its parent template object, or to its parent non-template // SDO object. It will be used for referencing shared secret and IP filter templates, // as these templates are properties in SDO objects like client, remote // server and network policy profile. // // Arguments: // [pSdoTarget] - [in] // The parent SDO/Template. // [id] - [in] // The property id in the parent, into which "this" template needs to be copied. [id(11)] HRESULT AddToSdoAsProperty( [in] IDispatch* pSdoTarget, [in] LONG id ); }; ////////////////////////////////////////////////////////////////////////// // ISdoDictionaryOld - interface Used to access dictionary contents ////////////////////////////////////////////////////////////////////////// [ object, uuid(d432e5f4-53d8-11d2-9a3a-00c04fb998ac), dual, pointer_default(unique) ] interface ISdoDictionaryOld : IDispatch { [id(1)] HRESULT EnumAttributes( [in, out] VARIANT* Id, [out,retval] VARIANT* pValues ); [id(2), hidden] HRESULT GetAttributeInfo( [in] ATTRIBUTEID Id, [in] VARIANT* pInfoIDs, [out,retval] VARIANT* pInfoValues ); [id(3)] HRESULT EnumAttributeValues( [in] ATTRIBUTEID Id, [out] VARIANT* pValueIds, [out,retval] VARIANT* pValuesDesc ); [id(4)] HRESULT CreateAttribute( [in] ATTRIBUTEID Id, [out,retval] IDispatch** ppAttributeObject ); [id(5)] HRESULT GetAttributeID( [in] BSTR bstrAttributeName, [out,retval] ATTRIBUTEID* pId ); }; /////////////// // Machine SDO /////////////// [ uuid(E9218AE7-9E91-11D1-BF60-0080C7846BC0), ] coclass SdoMachine { [default] interface ISdoMachine; // Do not add ISdoMachine2 here because we do not want to publish it. }; }; #endif // __SDOIAS_IDL__