xpmgr/BuildTools/Include/sdoias.idl

1367 lines
47 KiB
Plaintext

/////////////////////////////////////////////////////////////////////////////
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// sdoias.idl : IDL source for IAS Server Data Object
//
// History:
// <long time ago> Created
// <some time ago> 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__