//+--------------------------------------------------------------------------- // // Copyright 1996 - 1997 Microsoft Corporation. All Rights Reserved. // // Contents: Internet Location Services (ILS) Object interfaces // //---------------------------------------------------------------------------- cpp_quote("//+-------------------------------------------------------------------------") cpp_quote("//") cpp_quote("// Microsoft Windows") cpp_quote("// Copyright 1996-1997 Microsoft Corporation. All Rights Reserved.") cpp_quote("//") cpp_quote("// File: ils.h") cpp_quote("//") cpp_quote("//--------------------------------------------------------------------------") import "objidl.idl"; import "oleidl.idl"; import "oaidl.idl"; interface IIlsServer; interface IIlsMain; interface IIlsUser; interface IIlsProtocol; interface IIlsAttributes; interface IIlsFilter; interface IEnumIlsProtocols; interface IEnumIlsUsers; interface IEnumIlsNames; interface IIlsNotify; interface IIlsUserNotify; interface IIlsProtocolNotify; cpp_quote("") cpp_quote("////////////////////////////////////////////////////////////////////////////") cpp_quote("// Error Codes") cpp_quote("") cpp_quote("#define ILS_E(e) (0x81000000UL | (ULONG) (e))") cpp_quote("#define ILS_S(e) (0x01000000UL | (ULONG) (e))") cpp_quote("") cpp_quote("enum {") cpp_quote("") cpp_quote("// COM specific error codes") cpp_quote("//") cpp_quote(" ILS_S_SERVER_MAY_NOT_SUPPORT = ILS_S (1),") cpp_quote(" ILS_E_FAIL = E_FAIL,") cpp_quote(" ILS_E_POINTER = E_POINTER,") cpp_quote(" ILS_E_HANDLE = E_HANDLE,") cpp_quote(" ILS_E_ABORT = E_ABORT,") cpp_quote(" ILS_E_ACCESS_DENIED = E_ACCESSDENIED,") cpp_quote(" ILS_E_NOT_IMPL = E_NOTIMPL,") cpp_quote(" ILS_E_NO_INTERFACE = E_NOINTERFACE,") cpp_quote(" ILS_E_MEMORY = E_OUTOFMEMORY,") cpp_quote(" ILS_E_PARAMETER = E_INVALIDARG,") cpp_quote("") cpp_quote("// General error codes") cpp_quote("//") cpp_quote(" ILS_E_SERVER_SERVICE = ILS_E (1),") cpp_quote(" ILS_E_SERVER_NAME = ILS_E (2),") cpp_quote(" ILS_E_TIMEOUT = ILS_E (3),") cpp_quote(" ILS_E_BIND = ILS_E (4),") cpp_quote(" ILS_E_THREAD = ILS_E (5),") cpp_quote(" ILS_E_SERVER_EXEC = ILS_E (6),") cpp_quote(" ILS_E_WINSOCK = ILS_E (7),") cpp_quote(" ILS_E_NO_MORE = ILS_E (8),") cpp_quote(" ILS_E_NOT_INITIALIZED = ILS_E (9),") cpp_quote(" ILS_E_NOTIFY_ID = ILS_E (10),") cpp_quote(" ILS_E_NO_SUCH_OBJECT = ILS_E (11),") cpp_quote(" ILS_E_NEED_RELOGON = ILS_E (12),") cpp_quote(" ILS_E_NAME_CONFLICTS = ILS_E (13),") cpp_quote(" ILS_E_NETWORK_DOWN = ILS_E (14),") cpp_quote(" ILS_E_FILTER_STRING = ILS_E (15),") cpp_quote(" ILS_E_FILTER_OBJECT = ILS_E (16),") cpp_quote(" ILS_E_FILTER_TYPE = ILS_E (17),") cpp_quote(" ILS_E_ACCESS_CONTROL = ILS_E (18),") cpp_quote(" ILS_E_NOT_REGISTERED = ILS_E (19),") cpp_quote(" ILS_E_NO_SUCH_MEMBER = ILS_E (20),") cpp_quote(" ILS_E_NO_WRITE_ACCESS = ILS_E (21),") cpp_quote(" ILS_E_ALREADY_REGISTERED = ILS_E (22),") cpp_quote("") cpp_quote("// LDAP specific error codes") cpp_quote("//") cpp_quote(" ILS_E_LDAP_OPERATIONS_ERROR = ILS_E (0x101),") cpp_quote(" ILS_E_LDAP_PROTOCOL_ERROR = ILS_E (0x102),") cpp_quote(" ILS_E_LDAP_TIMELIMIT_EXCEEDED = ILS_E (0x103),") cpp_quote(" ILS_E_LDAP_SIZELIMIT_EXCEEDED = ILS_E (0x104),") cpp_quote(" ILS_E_LDAP_COMPARE_FALSE = ILS_E (0x105),") cpp_quote(" ILS_E_LDAP_COMPARE_TRUE = ILS_E (0x106),") cpp_quote(" ILS_E_LDAP_AUTH_METHOD_NOT_SUPPORTED = ILS_E (0x107),") cpp_quote(" ILS_E_LDAP_STRONG_AUTH_REQUIRED = ILS_E (0x108),") cpp_quote(" ILS_E_LDAP_REFERRAL_V2 = ILS_E (0x109),") cpp_quote(" ILS_E_LDAP_PARTIAL_RESULTS = ILS_E (0x10A),") cpp_quote(" ILS_E_LDAP_REFERRAL = ILS_E (0x10B),") cpp_quote(" ILS_E_LDAP_ADMIN_LIMIT_EXCEEDED = ILS_E (0x10C),") cpp_quote(" ILS_E_LDAP_UNAVAILABLE_CRIT_EXTENSION = ILS_E (0x10D),") cpp_quote(" ILS_E_LDAP_NO_SUCH_ATTRIBUTE = ILS_E (0x10E),") cpp_quote(" ILS_E_LDAP_UNDEFINED_TYPE = ILS_E (0x10F),") cpp_quote(" ILS_E_LDAP_INAPPROPRIATE_MATCHING = ILS_E (0x110),") cpp_quote(" ILS_E_LDAP_CONSTRAINT_VIOLATION = ILS_E (0x111),") cpp_quote(" ILS_E_LDAP_ATTRIBUTE_OR_VALUE_EXISTS = ILS_E (0x112),") cpp_quote(" ILS_E_LDAP_INVALID_SYNTAX = ILS_E (0x113),") cpp_quote(" ILS_E_LDAP_ALIAS_PROBLEM = ILS_E (0x114),") cpp_quote(" ILS_E_LDAP_INVALID_DN_SYNTAX = ILS_E (0x115),") cpp_quote(" ILS_E_LDAP_IS_LEAF = ILS_E (0x116),") cpp_quote(" ILS_E_LDAP_ALIAS_DEREF_PROBLEM = ILS_E (0x117),") cpp_quote(" ILS_E_LDAP_INAPPROPRIATE_AUTH = ILS_E (0x118),") cpp_quote(" ILS_E_LDAP_INVALID_CREDENTIALS = ILS_E (0x119),") cpp_quote(" ILS_E_LDAP_INSUFFICIENT_RIGHTS = ILS_E (0x11A),") cpp_quote(" ILS_E_LDAP_BUSY = ILS_E (0x11B),") cpp_quote(" ILS_E_LDAP_UNAVAILABLE = ILS_E (0x11C),") cpp_quote(" ILS_E_LDAP_UNWILLING_TO_PERFORM = ILS_E (0x11D),") cpp_quote(" ILS_E_LDAP_LOOP_DETECT = ILS_E (0x11E),") cpp_quote(" ILS_E_LDAP_NAMING_VIOLATION = ILS_E (0x11F),") cpp_quote(" ILS_E_LDAP_OBJECT_CLASS_VIOLATION = ILS_E (0x120),") cpp_quote(" ILS_E_LDAP_NOT_ALLOWED_ON_NONLEAF = ILS_E (0x121),") cpp_quote(" ILS_E_LDAP_NOT_ALLOWED_ON_RDN = ILS_E (0x122),") cpp_quote(" ILS_E_LDAP_NO_OBJECT_CLASS_MODS = ILS_E (0x123),") cpp_quote(" ILS_E_LDAP_RESULTS_TOO_LARGE = ILS_E (0x124),") cpp_quote(" ILS_E_LDAP_AFFECTS_MULTIPLE_DSAS = ILS_E (0x125),") cpp_quote(" ILS_E_LDAP_OTHER = ILS_E (0x126),") cpp_quote(" ILS_E_LDAP_SERVER_DOWN = ILS_E (0x127),") cpp_quote(" ILS_E_LDAP_LOCAL_ERROR = ILS_E (0x128),") cpp_quote(" ILS_E_LDAP_ENCODING_ERROR = ILS_E (0x129),") cpp_quote(" ILS_E_LDAP_DECODING_ERROR = ILS_E (0x12A),") cpp_quote(" ILS_E_LDAP_TIMEOUT = ILS_E (0x12B),") cpp_quote(" ILS_E_LDAP_AUTH_UNKNOWN = ILS_E (0x12C),") cpp_quote(" ILS_E_LDAP_FILTER_ERROR = ILS_E (0x12D),") cpp_quote(" ILS_E_LDAP_USER_CANCELLED = ILS_E (0x12E),") cpp_quote(" ILS_E_LDAP_NO_MEMORY = ILS_E (0x12F),") cpp_quote("}; // end of enum") cpp_quote("") cpp_quote("////////////////////////////////////////////////////////////////////////////") cpp_quote("// Constants Definitions") enum { ILS_INVALID_REQ_ID = 0 }; typedef enum { ILS_UNREGISTERED = 0, ILS_REGISTERING = 1, ILS_REGISTERED = 2, ILS_UNREGISTERING = 3, ILS_REGISTERED_BUT_INVALID = 4, ILS_NETWORK_DOWN = 5, ILS_IN_SYNC = 6, } ILS_STATE; typedef enum { ILS_ATTRTYPE_NONE = 0, ILS_ATTRTYPE_NAME_ONLY = 1, ILS_ATTRTYPE_NAME_VALUE = 2, } ILS_ATTR_TYPE; cpp_quote("") cpp_quote("////////////////////////////////////////////////////////////////////////////") cpp_quote("// Filters Definitions") typedef enum { ILS_FILTERTYPE_UNKNOWN = 0, ILS_FILTERTYPE_SIMPLE = 1, ILS_FILTERTYPE_COMPOSITE = 2, } ILS_FILTER_TYPE; typedef enum { ILS_FILTEROP_NONE = 0, ILS_FILTEROP_EQUAL = 1, ILS_FILTEROP_APPROX = 2, ILS_FILTEROP_LESS_THAN = 3, ILS_FILTEROP_GREATER_THAN = 4, ILS_FILTEROP_EXIST = 5, ILS_FILTEROP_AND = 21, ILS_FILTEROP_OR = 22, ILS_FILTEROP_NOT = 23, } ILS_FILTER_OP; typedef enum { ILS_STDATTR_NULL = 0, ILS_STDATTR_USER_ID = 1, ILS_STDATTR_IP_ADDRESS = 2, ILS_STDATTR_EMAIL_NAME = 3, ILS_STDATTR_FIRST_NAME = 4, ILS_STDATTR_LAST_NAME = 5, ILS_STDATTR_CITY_NAME = 6, ILS_STDATTR_COUNTRY_NAME = 7, ILS_STDATTR_COMMENT = 8, ILS_STDATTR_FLAGS = 9, ILS_STDATTR_APP_NAME = 10, ILS_STDATTR_APP_MIME_TYPE = 11, ILS_STDATTR_APP_GUID = 12, ILS_STDATTR_PROTOCOL_NAME = 13, ILS_STDATTR_PROTOCOL_MIME_TYPE = 14, ILS_STDATTR_PROTOCOL_PORT = 15, ILS_NUM_OF_STDATTRS = 16 } ILS_STD_ATTR_NAME; typedef enum { ILS_AUTH_ANONYMOUS = 0, ILS_AUTH_CLEAR_TEXT = 1, ILS_AUTH_NTLM = 3, ILS_AUTH_DPA = 4, ILS_AUTH_MSN = 5, ILS_AUTH_SICILY = 6, ILS_AUTH_SSPI = 7, ILS_NUM_OF_AUTH_METHODS = 8 } ILS_ENUM_AUTH_METHOD; cpp_quote("") cpp_quote("////////////////////////////////////////////////////////////////////////////") cpp_quote("// Interface Definitions") //+--------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation, 1996 - 1997. // // Contents: IIlsServer interface definition // //---------------------------------------------------------------------------- [ object, uuid(8BCE6B64-85CE-11d0-9CA7-00A0C913B21E), pointer_default(unique) ] interface IIlsServer : IUnknown { typedef [unique] IIlsServer *LPILS_SERVER; HRESULT SetAuthenticationMethod ( [in] ILS_ENUM_AUTH_METHOD enumAuthMethod ); HRESULT SetLogonName ( [in] BSTR bstrLogonName ); HRESULT SetLogonPassword ( [in] BSTR bstrLogonPassword ); HRESULT SetDomain ( [in] BSTR bstrDomain ); HRESULT SetCredential ( [in] BSTR bstrCredential ); HRESULT SetTimeout ( [in] ULONG uTimeoutInSecond ); HRESULT SetBaseDN ( [in] BSTR bstrBaseDN ); } //+--------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation, 1996 - 1997. // // Contents: IIlsMain interface definition // //---------------------------------------------------------------------------- [ object, uuid(34526E14-4D7D-11d0-8F4B-00C04FC29FEE), pointer_default(unique) ] interface IIlsMain : IUnknown { typedef [unique] IIlsMain *LPILS_MAIN; HRESULT Initialize(); HRESULT CreateServer ( [in] BSTR bstrServerName, [out] IIlsServer **ppServer ); HRESULT CreateUser( [in] BSTR bstrUserID, [in] BSTR bstrAppName, [out] IIlsUser **ppUser); HRESULT GetUser( [in] IIlsServer *pServer, [in] BSTR bstrUserID, [in] BSTR bstrAppName, [in] BSTR bstrProtocolName, [in] IIlsAttributes *pAttrib, [out] IIlsUser **ppUser, [out] ULONG *puReqID); HRESULT EnumUserNames( [in] IIlsServer *pServer, [in] IIlsFilter *pFilter, [out] IEnumIlsNames **ppEnumUserNames, [out] ULONG *puReqID); HRESULT EnumUsers( [in] IIlsServer *pServer, [in] IIlsFilter *pFilter, [in] IIlsAttributes *pAttrib, [out] IEnumIlsUsers **ppEnumUsers, [out] ULONG *puReqID); HRESULT Abort( [in] ULONG uReqID); HRESULT CreateAttributes( [in] ILS_ATTR_TYPE AttrType, [out] IIlsAttributes **ppAttributes); HRESULT CreateFilter ( [in] ILS_FILTER_TYPE FilterType, [in] ILS_FILTER_OP FilterOp, [out] IIlsFilter **ppFilter); HRESULT StringToFilter ( [in] BSTR bstrFilterString, [out] IIlsFilter **ppFilter); HRESULT Uninitialize(); } //+--------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation, 1996 - 1997. // // Contents: IIlsNotify interface definition // //---------------------------------------------------------------------------- [ object, uuid(551D25EE-4D7D-11d0-8F4B-00C04FC29FEE), pointer_default(unique) ] interface IIlsNotify : IUnknown { typedef [unique] IIlsNotify *LPILS_NOTIFY; HRESULT GetUserResult( [in] ULONG uReqID, [in] IIlsUser *pUser, [in] HRESULT hResult); HRESULT EnumUserNamesResult( [in] ULONG uReqID, [in] IEnumIlsNames *pEnumUserName, [in] HRESULT hResult); HRESULT EnumUsersResult( [in] ULONG uReqID, [in] IEnumIlsUsers *pEnumUser, [in] HRESULT hResult); } //+--------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation, 1996 - 1997. // // Contents: IIlsUser interface definition // //---------------------------------------------------------------------------- [ object, uuid(440CC982-20E6-11d0-8796-444553540000), pointer_default(unique) ] interface IIlsUser : IUnknown { typedef [unique] IIlsUser *LPILS_USER; HRESULT GetState( [out] ILS_STATE *pState); HRESULT GetStandardAttribute( [in] ILS_STD_ATTR_NAME StdAttr, [out] BSTR *pbstrValue); HRESULT SetStandardAttribute( [in] ILS_STD_ATTR_NAME StdAttr, [in] BSTR bstrValue); HRESULT GetExtendedAttribute ( [in] BSTR bstrName, [out] BSTR *pbstrValue ); HRESULT SetExtendedAttribute ( [in] BSTR bstrName, [in] BSTR bstrValue ); HRESULT RemoveExtendedAttribute ( [in] BSTR bstrName ); HRESULT GetAllExtendedAttributes( [out] IIlsAttributes **ppAttributes); HRESULT IsWritable( [in] BOOL *pValue); HRESULT Register( [in] IIlsServer *pServer, [out] ULONG *puReqID); HRESULT Unregister( [out] ULONG *puReqID); HRESULT Update( [out] ULONG *puReqID); HRESULT GetVisible( [out] DWORD *pfVisible); HRESULT SetVisible( [in] DWORD fVisible); HRESULT GetGuid( [out] GUID *pGuid); HRESULT SetGuid( [in] GUID *pGuid); HRESULT CreateProtocol( [in] BSTR bstrProtocolName, [in] ULONG uPortNumber, [in] BSTR bstrMimeType, [out] IIlsProtocol **ppProtocol); HRESULT AddProtocol( [in] IIlsProtocol *pProtocol, [out] ULONG *puReqID); HRESULT RemoveProtocol( [in] IIlsProtocol *pProtocol, [out] ULONG *puReqID); HRESULT GetProtocol( [in] BSTR bstrProtocolName, [in] IIlsAttributes *pAttributes, [out] IIlsProtocol **ppProtocol, [out] ULONG *puReqID); HRESULT EnumProtocols( [in] IIlsFilter *pFilter, [in] IIlsAttributes *pAttributes, [out] IEnumIlsProtocols **ppEnumProtocol, [out] ULONG *puReqID); HRESULT Clone ( [out] IIlsUser **ppUser ); } //+--------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation, 1996 - 1997. // // Contents: IIlsProtocol interface definition // //---------------------------------------------------------------------------- [ object, uuid(440CC985-20E6-11d0-8796-444553540000), pointer_default(unique) ] interface IIlsProtocol : IUnknown { typedef [unique] IIlsProtocol *LPILS_PROTOCOL; HRESULT IsWritable( [in] BOOL *pValue); HRESULT GetPortNumber( [out] ULONG *pulPortNumber); HRESULT GetStandardAttribute( [in] ILS_STD_ATTR_NAME StdAttr, [out] BSTR *pbstrValue); HRESULT SetStandardAttribute( [in] ILS_STD_ATTR_NAME StdAttr, [in] BSTR bstrValue); HRESULT GetExtendedAttribute ( [in] BSTR bstrName, [out] BSTR *pbstrValue ); HRESULT SetExtendedAttribute ( [in] BSTR bstrName, [in] BSTR bstrValue ); HRESULT RemoveExtendedAttribute ( [in] BSTR bstrName ); HRESULT GetAllExtendedAttributes( [out] IIlsAttributes **ppAttributes); HRESULT Update( [out] ULONG *puReqID ); } //+--------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation, 1996 - 1997. // // Contents: IIlsProtocolNotify interface definition // //---------------------------------------------------------------------------- [ object, uuid(440CC986-20E6-11d0-8796-444553540000), pointer_default(unique) ] interface IIlsProtocolNotify : IUnknown { typedef [unique] IIlsProtocolNotify *LPILS_PROTOCOLNOTIFY; HRESULT UpdateResult( [in] ULONG uReqID, [in] HRESULT hResult); } //+--------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation, 1996 - 1997. // // Contents: IIlsUserNotify interface definition // //---------------------------------------------------------------------------- [ object, uuid(440CC988-20E6-11d0-8796-444553540000), pointer_default(unique) ] interface IIlsUserNotify : IUnknown { typedef [unique] IIlsUserNotify *LPILS_USERNOTIFY; HRESULT RegisterResult( [in] ULONG uReqID, [in] HRESULT hResult); HRESULT UpdateResult( [in] ULONG uReqID, [in] HRESULT hResult); HRESULT ProtocolChangeResult( [in] ULONG uReqID, [in] HRESULT hResult); HRESULT GetProtocolResult( [in] ULONG uReqID, [in] IIlsProtocol *pProtocol, [in] HRESULT hResult); HRESULT EnumProtocolsResult( [in] ULONG uReqID, [in] IEnumIlsNames *pEnumProtocol, [in] HRESULT hResult); HRESULT StateChanged( [in] ULONG fPrimary, [in] BSTR bstrServerName ); } //+--------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation, 1996 - 1997. // // Contents: IIlsAttributes interface definition // //---------------------------------------------------------------------------- [ object, uuid(440CC98C-20E6-11d0-8796-444553540000), pointer_default(unique) ] interface IIlsAttributes : IUnknown { typedef [unique] IIlsAttributes *LPILS_ATTRIBUTES; HRESULT SetAttribute( [in] BSTR bstrName, [in] BSTR bstrValue); HRESULT GetAttribute( [in] BSTR bstrName, [out] BSTR *pbstrValue); HRESULT EnumAttributes( [out] IEnumIlsNames **ppEnumAttribute); HRESULT SetAttributeName ( [in] BSTR bstrName ); } //+--------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation, 1996 - 1997. // // Contents: IIlsUserFilter interface definition // //---------------------------------------------------------------------------- [ object, uuid(440CC98D-20E6-11d0-8796-444553540000), pointer_default(unique) ] interface IIlsFilter : IUnknown { typedef [unique] IIlsFilter *LPILS_FILTER; cpp_quote("// Composite filter operations") HRESULT AddSubFilter ( [in] IIlsFilter *pFilter ); HRESULT RemoveSubFilter ( [in] IIlsFilter *pFilter ); HRESULT GetCount ( [out] ULONG *pcElements ); cpp_quote("// Simple filter operations") HRESULT SetStandardAttributeName ( [in] ILS_STD_ATTR_NAME usrStdAttr); HRESULT SetExtendedAttributeName ( [in] BSTR bstrAnyAttrName ); HRESULT SetAttributeValue ( [in] BSTR bstrAttrValue ); } //+--------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation, 1996 - 1997. // // Contents: IEnumIlsProtocols interface definition // //---------------------------------------------------------------------------- [ object, uuid(440CC98E-20E6-11d0-8796-444553540000), pointer_default(unique) ] interface IEnumIlsProtocols : IUnknown { typedef [unique] IEnumIlsProtocols *LPENUM_ILS_PROTOCOLS; HRESULT Next( [in] ULONG cProtocols, [out] IIlsProtocol **rgpProtocol, [out] ULONG *pcFetched); HRESULT Skip( [in] ULONG cProtocols); HRESULT Reset(); HRESULT Clone( [out] IEnumIlsProtocols **ppEnumProtocol); } //+--------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation, 1996 - 1997. // // Contents: IEnumIlsUsers interface definition // //---------------------------------------------------------------------------- [ object, uuid(440CC98F-20E6-11d0-8796-444553540000), pointer_default(unique) ] interface IEnumIlsUsers : IUnknown { typedef [unique] IEnumIlsUsers *LPENUM_ILS_USERS; HRESULT Next( [in] ULONG cUsers, [out] IIlsUser **rgpUsers, [out] ULONG *pcFetched); HRESULT Skip( [in] ULONG cUsers); HRESULT Reset(); HRESULT Clone( [out] IEnumIlsUsers **ppEnumUser); } //+--------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation, 1996 - 1997. // // Contents: IEnumIlsNames interface definition // //---------------------------------------------------------------------------- [ object, uuid(440CC990-20E6-11d0-8796-444553540000), pointer_default(unique) ] interface IEnumIlsNames : IUnknown { typedef [unique] IEnumIlsNames *LPENUM_ILS_NAMES; HRESULT Next( [in] ULONG cNames, [out] BSTR *rgpbstrName, [out] ULONG *pcFetched); HRESULT Skip( [in] ULONG cNames); HRESULT Reset(); HRESULT Clone( [out] IEnumIlsNames **ppEnumName); }