home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / ils.idl < prev    next >
Text File  |  1998-04-25  |  23KB  |  766 lines

  1. //+---------------------------------------------------------------------------
  2. //
  3. //  Copyright 1996 - 1997 Microsoft Corporation. All Rights Reserved.
  4. //
  5. //  Contents:   Internet Location Services (ILS) Object interfaces
  6. // 
  7. //----------------------------------------------------------------------------
  8.  
  9. cpp_quote("//+-------------------------------------------------------------------------")
  10. cpp_quote("//")
  11. cpp_quote("//  Microsoft Windows")
  12. cpp_quote("//  Copyright 1996-1997 Microsoft Corporation. All Rights Reserved.")
  13. cpp_quote("//")
  14. cpp_quote("//  File: ils.h")
  15. cpp_quote("//")
  16. cpp_quote("//--------------------------------------------------------------------------")
  17.  
  18. import "objidl.idl";
  19. import "oleidl.idl";
  20. import "oaidl.idl";
  21.  
  22. interface IIlsServer;
  23. interface IIlsMain;
  24. interface IIlsUser;
  25. interface IIlsProtocol;
  26. interface IIlsAttributes;
  27. interface IIlsFilter;
  28. interface IEnumIlsProtocols;
  29. interface IEnumIlsUsers;
  30. interface IEnumIlsNames;
  31.  
  32. interface IIlsNotify;
  33. interface IIlsUserNotify;
  34. interface IIlsProtocolNotify;
  35.  
  36. cpp_quote("")
  37. cpp_quote("////////////////////////////////////////////////////////////////////////////")
  38. cpp_quote("//  Error Codes")
  39. cpp_quote("")
  40. cpp_quote("#define ILS_E(e)    (0x81000000UL | (ULONG) (e))")
  41. cpp_quote("#define ILS_S(e)    (0x01000000UL | (ULONG) (e))")
  42. cpp_quote("")
  43. cpp_quote("enum {")
  44.  
  45. cpp_quote("")
  46. cpp_quote("//  COM specific error codes")
  47. cpp_quote("//")
  48.  
  49. cpp_quote("    ILS_S_SERVER_MAY_NOT_SUPPORT      = ILS_S (1),")
  50.  
  51. cpp_quote("    ILS_E_FAIL                 = E_FAIL,")
  52. cpp_quote("    ILS_E_POINTER              = E_POINTER,")
  53. cpp_quote("    ILS_E_HANDLE               = E_HANDLE,")
  54. cpp_quote("    ILS_E_ABORT                = E_ABORT,")
  55. cpp_quote("    ILS_E_ACCESS_DENIED        = E_ACCESSDENIED,")
  56. cpp_quote("    ILS_E_NOT_IMPL             = E_NOTIMPL,")
  57. cpp_quote("    ILS_E_NO_INTERFACE         = E_NOINTERFACE,")
  58. cpp_quote("    ILS_E_MEMORY               = E_OUTOFMEMORY,")
  59. cpp_quote("    ILS_E_PARAMETER            = E_INVALIDARG,")
  60.  
  61. cpp_quote("")
  62. cpp_quote("//  General error codes")
  63. cpp_quote("//")
  64.  
  65. cpp_quote("    ILS_E_SERVER_SERVICE       = ILS_E (1),")
  66. cpp_quote("    ILS_E_SERVER_NAME          = ILS_E (2),")
  67. cpp_quote("    ILS_E_TIMEOUT              = ILS_E (3),")
  68. cpp_quote("    ILS_E_BIND                 = ILS_E (4),")
  69. cpp_quote("    ILS_E_THREAD               = ILS_E (5),")
  70. cpp_quote("    ILS_E_SERVER_EXEC          = ILS_E (6),")
  71. cpp_quote("    ILS_E_WINSOCK              = ILS_E (7),")
  72. cpp_quote("    ILS_E_NO_MORE              = ILS_E (8),")
  73. cpp_quote("    ILS_E_NOT_INITIALIZED      = ILS_E (9),")
  74. cpp_quote("    ILS_E_NOTIFY_ID            = ILS_E (10),")
  75. cpp_quote("    ILS_E_NO_SUCH_OBJECT       = ILS_E (11),")
  76. cpp_quote("    ILS_E_NEED_RELOGON         = ILS_E (12),")
  77. cpp_quote("    ILS_E_NAME_CONFLICTS       = ILS_E (13),")
  78. cpp_quote("    ILS_E_NETWORK_DOWN         = ILS_E (14),")
  79. cpp_quote("    ILS_E_FILTER_STRING        = ILS_E (15),")
  80. cpp_quote("    ILS_E_FILTER_OBJECT        = ILS_E (16),")
  81. cpp_quote("    ILS_E_FILTER_TYPE          = ILS_E (17),")
  82. cpp_quote("    ILS_E_ACCESS_CONTROL       = ILS_E (18),")
  83. cpp_quote("    ILS_E_NOT_REGISTERED       = ILS_E (19),")
  84. cpp_quote("    ILS_E_NO_SUCH_MEMBER       = ILS_E (20),")
  85. cpp_quote("    ILS_E_NO_WRITE_ACCESS      = ILS_E (21),")
  86. cpp_quote("    ILS_E_ALREADY_REGISTERED   = ILS_E (22),")
  87.  
  88. cpp_quote("")
  89. cpp_quote("//  LDAP specific error codes")
  90. cpp_quote("//")
  91.  
  92. cpp_quote("    ILS_E_LDAP_OPERATIONS_ERROR             = ILS_E (0x101),")
  93. cpp_quote("    ILS_E_LDAP_PROTOCOL_ERROR               = ILS_E (0x102),")
  94. cpp_quote("    ILS_E_LDAP_TIMELIMIT_EXCEEDED           = ILS_E (0x103),")
  95. cpp_quote("    ILS_E_LDAP_SIZELIMIT_EXCEEDED           = ILS_E (0x104),")
  96. cpp_quote("    ILS_E_LDAP_COMPARE_FALSE                = ILS_E (0x105),")
  97. cpp_quote("    ILS_E_LDAP_COMPARE_TRUE                 = ILS_E (0x106),")
  98. cpp_quote("    ILS_E_LDAP_AUTH_METHOD_NOT_SUPPORTED    = ILS_E (0x107),")
  99. cpp_quote("    ILS_E_LDAP_STRONG_AUTH_REQUIRED         = ILS_E (0x108),")
  100. cpp_quote("    ILS_E_LDAP_REFERRAL_V2                  = ILS_E (0x109),")
  101. cpp_quote("    ILS_E_LDAP_PARTIAL_RESULTS              = ILS_E (0x10A),")
  102. cpp_quote("    ILS_E_LDAP_REFERRAL                     = ILS_E (0x10B),")
  103. cpp_quote("    ILS_E_LDAP_ADMIN_LIMIT_EXCEEDED         = ILS_E (0x10C),")
  104. cpp_quote("    ILS_E_LDAP_UNAVAILABLE_CRIT_EXTENSION   = ILS_E (0x10D),")
  105.  
  106. cpp_quote("    ILS_E_LDAP_NO_SUCH_ATTRIBUTE            = ILS_E (0x10E),")
  107. cpp_quote("    ILS_E_LDAP_UNDEFINED_TYPE               = ILS_E (0x10F),")
  108. cpp_quote("    ILS_E_LDAP_INAPPROPRIATE_MATCHING       = ILS_E (0x110),")
  109. cpp_quote("    ILS_E_LDAP_CONSTRAINT_VIOLATION         = ILS_E (0x111),")
  110. cpp_quote("    ILS_E_LDAP_ATTRIBUTE_OR_VALUE_EXISTS    = ILS_E (0x112),")
  111. cpp_quote("    ILS_E_LDAP_INVALID_SYNTAX               = ILS_E (0x113),")
  112.  
  113. cpp_quote("    ILS_E_LDAP_ALIAS_PROBLEM                = ILS_E (0x114),")
  114. cpp_quote("    ILS_E_LDAP_INVALID_DN_SYNTAX            = ILS_E (0x115),")
  115. cpp_quote("    ILS_E_LDAP_IS_LEAF                      = ILS_E (0x116),")
  116. cpp_quote("    ILS_E_LDAP_ALIAS_DEREF_PROBLEM          = ILS_E (0x117),")
  117.  
  118. cpp_quote("    ILS_E_LDAP_INAPPROPRIATE_AUTH           = ILS_E (0x118),")
  119. cpp_quote("    ILS_E_LDAP_INVALID_CREDENTIALS          = ILS_E (0x119),")
  120. cpp_quote("    ILS_E_LDAP_INSUFFICIENT_RIGHTS          = ILS_E (0x11A),")
  121. cpp_quote("    ILS_E_LDAP_BUSY                         = ILS_E (0x11B),")
  122. cpp_quote("    ILS_E_LDAP_UNAVAILABLE                  = ILS_E (0x11C),")
  123. cpp_quote("    ILS_E_LDAP_UNWILLING_TO_PERFORM         = ILS_E (0x11D),")
  124. cpp_quote("    ILS_E_LDAP_LOOP_DETECT                  = ILS_E (0x11E),")
  125.  
  126. cpp_quote("    ILS_E_LDAP_NAMING_VIOLATION             = ILS_E (0x11F),")
  127. cpp_quote("    ILS_E_LDAP_OBJECT_CLASS_VIOLATION       = ILS_E (0x120),")
  128. cpp_quote("    ILS_E_LDAP_NOT_ALLOWED_ON_NONLEAF       = ILS_E (0x121),")
  129. cpp_quote("    ILS_E_LDAP_NOT_ALLOWED_ON_RDN           = ILS_E (0x122),")
  130. cpp_quote("    ILS_E_LDAP_NO_OBJECT_CLASS_MODS         = ILS_E (0x123),")
  131. cpp_quote("    ILS_E_LDAP_RESULTS_TOO_LARGE            = ILS_E (0x124),")
  132. cpp_quote("    ILS_E_LDAP_AFFECTS_MULTIPLE_DSAS        = ILS_E (0x125),")
  133.  
  134. cpp_quote("    ILS_E_LDAP_OTHER                        = ILS_E (0x126),")
  135. cpp_quote("    ILS_E_LDAP_SERVER_DOWN                  = ILS_E (0x127),")
  136. cpp_quote("    ILS_E_LDAP_LOCAL_ERROR                  = ILS_E (0x128),")
  137. cpp_quote("    ILS_E_LDAP_ENCODING_ERROR               = ILS_E (0x129),")
  138. cpp_quote("    ILS_E_LDAP_DECODING_ERROR               = ILS_E (0x12A),")
  139. cpp_quote("    ILS_E_LDAP_TIMEOUT                      = ILS_E (0x12B),")
  140. cpp_quote("    ILS_E_LDAP_AUTH_UNKNOWN                 = ILS_E (0x12C),")
  141. cpp_quote("    ILS_E_LDAP_FILTER_ERROR                 = ILS_E (0x12D),")
  142. cpp_quote("    ILS_E_LDAP_USER_CANCELLED               = ILS_E (0x12E),")
  143. cpp_quote("    ILS_E_LDAP_NO_MEMORY                    = ILS_E (0x12F),")
  144. cpp_quote("}; // end of enum")
  145.  
  146. cpp_quote("")
  147. cpp_quote("////////////////////////////////////////////////////////////////////////////")
  148. cpp_quote("//  Constants Definitions")
  149.  
  150. enum
  151. {
  152.     ILS_INVALID_REQ_ID             = 0
  153. };
  154.  
  155. typedef enum 
  156. {
  157.     ILS_UNREGISTERED               = 0,
  158.     ILS_REGISTERING                = 1,
  159.     ILS_REGISTERED                 = 2,
  160.     ILS_UNREGISTERING              = 3,
  161.     ILS_REGISTERED_BUT_INVALID     = 4,
  162.     ILS_NETWORK_DOWN               = 5,
  163.     ILS_IN_SYNC                    = 6,
  164. }
  165.     ILS_STATE;
  166.  
  167. typedef enum
  168. {
  169.     ILS_ATTRTYPE_NONE          = 0,
  170.     ILS_ATTRTYPE_NAME_ONLY     = 1,
  171.     ILS_ATTRTYPE_NAME_VALUE    = 2,
  172. }
  173.     ILS_ATTR_TYPE;
  174.  
  175. cpp_quote("")
  176. cpp_quote("////////////////////////////////////////////////////////////////////////////")
  177. cpp_quote("//  Filters Definitions")
  178.  
  179. typedef enum
  180. {
  181.     ILS_FILTERTYPE_UNKNOWN              = 0,
  182.     ILS_FILTERTYPE_SIMPLE               = 1,
  183.     ILS_FILTERTYPE_COMPOSITE            = 2,
  184. }
  185.     ILS_FILTER_TYPE;
  186.  
  187. typedef enum
  188. {
  189.     ILS_FILTEROP_NONE                   = 0,
  190.     ILS_FILTEROP_EQUAL                  = 1,
  191.     ILS_FILTEROP_APPROX                 = 2,
  192.     ILS_FILTEROP_LESS_THAN              = 3,
  193.     ILS_FILTEROP_GREATER_THAN           = 4,
  194.     ILS_FILTEROP_EXIST                  = 5,
  195.     ILS_FILTEROP_AND                    = 21,
  196.     ILS_FILTEROP_OR                     = 22,
  197.     ILS_FILTEROP_NOT                    = 23,
  198. }
  199.     ILS_FILTER_OP;
  200.  
  201. typedef enum
  202. {
  203.     ILS_STDATTR_NULL                    = 0,
  204.  
  205.     ILS_STDATTR_USER_ID                 = 1,
  206.     ILS_STDATTR_IP_ADDRESS              = 2,
  207.     ILS_STDATTR_EMAIL_NAME              = 3,
  208.     ILS_STDATTR_FIRST_NAME              = 4,
  209.     ILS_STDATTR_LAST_NAME               = 5,
  210.     ILS_STDATTR_CITY_NAME               = 6,
  211.     ILS_STDATTR_COUNTRY_NAME            = 7,
  212.     ILS_STDATTR_COMMENT                 = 8,
  213.     ILS_STDATTR_FLAGS                   = 9,
  214.     ILS_STDATTR_APP_NAME                = 10,
  215.     ILS_STDATTR_APP_MIME_TYPE           = 11,
  216.     ILS_STDATTR_APP_GUID                = 12,
  217.                                                           
  218.     ILS_STDATTR_PROTOCOL_NAME           = 13,
  219.     ILS_STDATTR_PROTOCOL_MIME_TYPE      = 14,
  220.     ILS_STDATTR_PROTOCOL_PORT           = 15,
  221.  
  222.     ILS_NUM_OF_STDATTRS                    = 16
  223. }
  224.     ILS_STD_ATTR_NAME;
  225.  
  226. typedef enum
  227. {
  228.     ILS_AUTH_ANONYMOUS       = 0,
  229.     ILS_AUTH_CLEAR_TEXT      = 1,
  230.     ILS_AUTH_NTLM            = 3,
  231.     ILS_AUTH_DPA             = 4,
  232.     ILS_AUTH_MSN             = 5,
  233.     ILS_AUTH_SICILY          = 6,
  234.     ILS_AUTH_SSPI            = 7,
  235.  
  236.     ILS_NUM_OF_AUTH_METHODS  = 8
  237. }
  238.     ILS_ENUM_AUTH_METHOD;
  239.  
  240. cpp_quote("")
  241. cpp_quote("////////////////////////////////////////////////////////////////////////////")
  242. cpp_quote("//  Interface Definitions")
  243.  
  244. //+---------------------------------------------------------------------------
  245. //
  246. //  Copyright (C) Microsoft Corporation, 1996 - 1997.
  247. //
  248. //  Contents:    IIlsServer interface definition
  249. //              
  250. //----------------------------------------------------------------------------
  251. [
  252.     object,
  253.     uuid(8BCE6B64-85CE-11d0-9CA7-00A0C913B21E),
  254.     pointer_default(unique)
  255. ]
  256. interface IIlsServer : IUnknown
  257. {
  258.     typedef [unique] IIlsServer *LPILS_SERVER;
  259.  
  260.     HRESULT SetAuthenticationMethod (
  261.         [in]  ILS_ENUM_AUTH_METHOD enumAuthMethod );
  262.  
  263.     HRESULT SetLogonName (
  264.         [in]  BSTR bstrLogonName );
  265.  
  266.     HRESULT SetLogonPassword (
  267.         [in]  BSTR bstrLogonPassword );
  268.  
  269.     HRESULT SetDomain (
  270.         [in]  BSTR bstrDomain );
  271.  
  272.     HRESULT SetCredential (
  273.         [in]  BSTR bstrCredential );
  274.  
  275.     HRESULT SetTimeout (
  276.         [in]  ULONG uTimeoutInSecond );
  277.  
  278.     HRESULT SetBaseDN (
  279.         [in]  BSTR bstrBaseDN );
  280. }
  281.  
  282.  
  283. //+---------------------------------------------------------------------------
  284. //
  285. //  Copyright (C) Microsoft Corporation, 1996 - 1997.
  286. //
  287. //  Contents:    IIlsMain interface definition
  288. //              
  289. //----------------------------------------------------------------------------
  290. [
  291.     object,
  292.     uuid(34526E14-4D7D-11d0-8F4B-00C04FC29FEE),
  293.     pointer_default(unique)
  294. ]
  295. interface IIlsMain : IUnknown
  296. {
  297.     typedef [unique] IIlsMain *LPILS_MAIN;
  298.  
  299.     HRESULT Initialize();
  300.  
  301.     HRESULT CreateServer (
  302.         [in]  BSTR bstrServerName,
  303.         [out] IIlsServer **ppServer );
  304.  
  305.     HRESULT CreateUser(
  306.         [in]  BSTR bstrUserID,
  307.         [in]  BSTR bstrAppName,
  308.         [out] IIlsUser **ppUser);
  309.  
  310.     HRESULT GetUser(
  311.         [in]  IIlsServer *pServer,
  312.         [in]  BSTR bstrUserID,
  313.         [in]  BSTR bstrAppName,
  314.         [in]  BSTR bstrProtocolName,
  315.         [in]  IIlsAttributes *pAttrib,
  316.         [out] IIlsUser **ppUser,
  317.         [out] ULONG *puReqID);
  318.  
  319.     HRESULT EnumUserNames(
  320.         [in]  IIlsServer *pServer,
  321.         [in]  IIlsFilter *pFilter,
  322.         [out] IEnumIlsNames **ppEnumUserNames,
  323.         [out] ULONG *puReqID);
  324.  
  325.     HRESULT EnumUsers(
  326.         [in] IIlsServer *pServer,
  327.         [in] IIlsFilter *pFilter,
  328.         [in]  IIlsAttributes *pAttrib,
  329.         [out] IEnumIlsUsers **ppEnumUsers,
  330.         [out] ULONG *puReqID);
  331.  
  332.     HRESULT Abort(
  333.         [in] ULONG uReqID);
  334.  
  335.     HRESULT CreateAttributes(
  336.         [in] ILS_ATTR_TYPE AttrType,
  337.         [out] IIlsAttributes **ppAttributes);
  338.  
  339.     HRESULT CreateFilter (
  340.         [in] ILS_FILTER_TYPE FilterType,
  341.         [in] ILS_FILTER_OP FilterOp,
  342.         [out] IIlsFilter **ppFilter);
  343.  
  344.     HRESULT StringToFilter (
  345.         [in] BSTR bstrFilterString,
  346.         [out] IIlsFilter **ppFilter);
  347.  
  348.     HRESULT Uninitialize();
  349. }
  350.  
  351.  
  352. //+---------------------------------------------------------------------------
  353. //
  354. //  Copyright (C) Microsoft Corporation, 1996 - 1997.
  355. //
  356. //  Contents:    IIlsNotify interface definition
  357. //              
  358. //----------------------------------------------------------------------------
  359. [
  360.     object,
  361.     uuid(551D25EE-4D7D-11d0-8F4B-00C04FC29FEE),
  362.     pointer_default(unique)
  363. ]
  364. interface IIlsNotify : IUnknown
  365. {
  366.     typedef [unique] IIlsNotify *LPILS_NOTIFY;
  367.  
  368.     HRESULT GetUserResult(
  369.         [in] ULONG uReqID,
  370.         [in] IIlsUser *pUser,
  371.         [in] HRESULT hResult);
  372.  
  373.     HRESULT EnumUserNamesResult(
  374.         [in] ULONG uReqID,
  375.         [in] IEnumIlsNames *pEnumUserName,
  376.         [in] HRESULT hResult);
  377.  
  378.     HRESULT EnumUsersResult(
  379.         [in] ULONG uReqID,
  380.         [in] IEnumIlsUsers *pEnumUser,
  381.         [in] HRESULT hResult);
  382. }
  383.  
  384.  
  385. //+---------------------------------------------------------------------------
  386. //
  387. //  Copyright (C) Microsoft Corporation, 1996 - 1997.
  388. //
  389. //  Contents:    IIlsUser interface definition
  390. //              
  391. //----------------------------------------------------------------------------
  392. [
  393.     object,
  394.     uuid(440CC982-20E6-11d0-8796-444553540000),
  395.     pointer_default(unique)
  396. ]
  397. interface IIlsUser : IUnknown
  398. {
  399.     typedef [unique] IIlsUser *LPILS_USER;
  400.  
  401.     HRESULT GetState(
  402.         [out] ILS_STATE *pState);
  403.  
  404.     HRESULT GetStandardAttribute(
  405.         [in]  ILS_STD_ATTR_NAME StdAttr,
  406.         [out] BSTR *pbstrValue);
  407.  
  408.     HRESULT SetStandardAttribute(
  409.         [in] ILS_STD_ATTR_NAME StdAttr,
  410.         [in] BSTR bstrValue);
  411.  
  412.     HRESULT GetExtendedAttribute (
  413.         [in] BSTR bstrName,
  414.         [out] BSTR *pbstrValue );
  415.  
  416.     HRESULT SetExtendedAttribute (
  417.         [in] BSTR bstrName,
  418.         [in] BSTR bstrValue );
  419.  
  420.     HRESULT RemoveExtendedAttribute (
  421.         [in] BSTR bstrName );
  422.  
  423.     HRESULT GetAllExtendedAttributes(
  424.         [out] IIlsAttributes **ppAttributes);
  425.  
  426.     HRESULT IsWritable(
  427.         [in] BOOL *pValue);
  428.  
  429.     HRESULT Register(
  430.         [in] IIlsServer *pServer,
  431.         [out] ULONG *puReqID);
  432.  
  433.     HRESULT Unregister(
  434.         [out] ULONG *puReqID);
  435.  
  436.     HRESULT Update(
  437.         [out] ULONG *puReqID);
  438.  
  439.     HRESULT GetVisible(
  440.         [out] DWORD *pfVisible);
  441.  
  442.     HRESULT SetVisible(
  443.         [in] DWORD fVisible);
  444.  
  445.     HRESULT GetGuid(
  446.         [out] GUID *pGuid);
  447.  
  448.     HRESULT SetGuid(
  449.         [in] GUID *pGuid);
  450.  
  451.     HRESULT CreateProtocol(
  452.         [in] BSTR bstrProtocolName,
  453.         [in] ULONG uPortNumber,
  454.         [in] BSTR bstrMimeType,
  455.         [out] IIlsProtocol **ppProtocol);
  456.  
  457.     HRESULT AddProtocol(
  458.         [in] IIlsProtocol *pProtocol,
  459.         [out] ULONG *puReqID);
  460.  
  461.     HRESULT RemoveProtocol(
  462.         [in] IIlsProtocol *pProtocol,
  463.         [out] ULONG *puReqID);
  464.  
  465.     HRESULT GetProtocol(
  466.         [in]  BSTR bstrProtocolName,
  467.         [in]  IIlsAttributes *pAttributes,
  468.         [out] IIlsProtocol **ppProtocol,
  469.         [out] ULONG *puReqID);
  470.  
  471.     HRESULT EnumProtocols(
  472.         [in]  IIlsFilter     *pFilter,
  473.         [in]  IIlsAttributes *pAttributes,
  474.         [out] IEnumIlsProtocols **ppEnumProtocol,
  475.         [out] ULONG *puReqID);
  476.  
  477.     HRESULT Clone (
  478.         [out] IIlsUser **ppUser );
  479. }
  480.  
  481.  
  482.  
  483.  
  484. //+---------------------------------------------------------------------------
  485. //
  486. //  Copyright (C) Microsoft Corporation, 1996 - 1997.
  487. //
  488. //  Contents:    IIlsProtocol interface definition
  489. //              
  490. //----------------------------------------------------------------------------
  491. [
  492.     object,
  493.     uuid(440CC985-20E6-11d0-8796-444553540000),
  494.     pointer_default(unique)
  495. ]
  496. interface IIlsProtocol : IUnknown
  497. {
  498.     typedef [unique] IIlsProtocol *LPILS_PROTOCOL;
  499.  
  500.     HRESULT IsWritable(
  501.         [in] BOOL *pValue);
  502.  
  503.     HRESULT GetPortNumber(
  504.         [out] ULONG *pulPortNumber);
  505.  
  506.     HRESULT GetStandardAttribute(
  507.         [in]  ILS_STD_ATTR_NAME StdAttr,
  508.         [out] BSTR *pbstrValue);
  509.  
  510.     HRESULT SetStandardAttribute(
  511.         [in] ILS_STD_ATTR_NAME StdAttr,
  512.         [in] BSTR bstrValue);
  513.  
  514.     HRESULT GetExtendedAttribute (
  515.         [in] BSTR bstrName,
  516.         [out] BSTR *pbstrValue );
  517.  
  518.     HRESULT SetExtendedAttribute (
  519.         [in] BSTR bstrName,
  520.         [in] BSTR bstrValue );
  521.  
  522.     HRESULT RemoveExtendedAttribute (
  523.         [in] BSTR bstrName );
  524.  
  525.     HRESULT GetAllExtendedAttributes(
  526.         [out] IIlsAttributes **ppAttributes);
  527.  
  528.     HRESULT Update(
  529.         [out] ULONG *puReqID );
  530. }
  531.  
  532.  
  533. //+---------------------------------------------------------------------------
  534. //
  535. //  Copyright (C) Microsoft Corporation, 1996 - 1997.
  536. //
  537. //  Contents:    IIlsProtocolNotify interface definition
  538. //              
  539. //----------------------------------------------------------------------------
  540. [
  541.     object,
  542.     uuid(440CC986-20E6-11d0-8796-444553540000),
  543.     pointer_default(unique)
  544. ]
  545. interface IIlsProtocolNotify : IUnknown
  546. {
  547.     typedef [unique] IIlsProtocolNotify *LPILS_PROTOCOLNOTIFY;
  548.  
  549.     HRESULT UpdateResult(
  550.         [in] ULONG uReqID,
  551.         [in] HRESULT hResult);
  552. }
  553.  
  554.  
  555.  
  556. //+---------------------------------------------------------------------------
  557. //
  558. //  Copyright (C) Microsoft Corporation, 1996 - 1997.
  559. //
  560. //  Contents:    IIlsUserNotify interface definition
  561. //              
  562. //----------------------------------------------------------------------------
  563. [
  564.     object,
  565.     uuid(440CC988-20E6-11d0-8796-444553540000),
  566.     pointer_default(unique)
  567. ]
  568. interface IIlsUserNotify : IUnknown
  569. {
  570.     typedef [unique] IIlsUserNotify *LPILS_USERNOTIFY;
  571.  
  572.     HRESULT RegisterResult(
  573.         [in] ULONG uReqID,
  574.         [in] HRESULT hResult);
  575.  
  576.     HRESULT UpdateResult(
  577.         [in] ULONG uReqID,
  578.         [in] HRESULT hResult);
  579.  
  580.     HRESULT ProtocolChangeResult(
  581.         [in] ULONG uReqID,
  582.         [in] HRESULT hResult);
  583.  
  584.     HRESULT GetProtocolResult(
  585.         [in] ULONG uReqID,
  586.         [in] IIlsProtocol *pProtocol,
  587.         [in] HRESULT hResult);
  588.  
  589.     HRESULT EnumProtocolsResult(
  590.         [in] ULONG uReqID,
  591.         [in] IEnumIlsNames *pEnumProtocol,
  592.         [in] HRESULT hResult);
  593.  
  594.     HRESULT StateChanged(
  595.         [in] ULONG fPrimary,
  596.         [in] BSTR bstrServerName );
  597.  
  598. }
  599.  
  600.  
  601. //+---------------------------------------------------------------------------
  602. //
  603. //  Copyright (C) Microsoft Corporation, 1996 - 1997.
  604. //
  605. //  Contents:    IIlsAttributes interface definition
  606. //              
  607. //----------------------------------------------------------------------------
  608. [
  609.     object,
  610.     uuid(440CC98C-20E6-11d0-8796-444553540000),
  611.     pointer_default(unique)
  612. ]
  613. interface IIlsAttributes : IUnknown
  614. {
  615.     typedef [unique] IIlsAttributes *LPILS_ATTRIBUTES;
  616.  
  617.     HRESULT SetAttribute(
  618.         [in] BSTR bstrName,
  619.         [in] BSTR bstrValue);
  620.  
  621.     HRESULT GetAttribute(
  622.         [in] BSTR bstrName,
  623.         [out] BSTR *pbstrValue);
  624.  
  625.     HRESULT EnumAttributes(
  626.         [out] IEnumIlsNames **ppEnumAttribute);
  627.  
  628.     HRESULT SetAttributeName (
  629.         [in] BSTR bstrName );
  630. }
  631.  
  632.  
  633. //+---------------------------------------------------------------------------
  634. //
  635. //  Copyright (C) Microsoft Corporation, 1996 - 1997.
  636. //
  637. //  Contents:    IIlsUserFilter interface definition
  638. //              
  639. //----------------------------------------------------------------------------
  640. [
  641.     object,
  642.     uuid(440CC98D-20E6-11d0-8796-444553540000),
  643.     pointer_default(unique)
  644. ]
  645. interface IIlsFilter : IUnknown
  646. {
  647.     typedef [unique] IIlsFilter *LPILS_FILTER;
  648.  
  649. cpp_quote("// Composite filter operations")
  650.  
  651.     HRESULT AddSubFilter (
  652.         [in] IIlsFilter *pFilter );
  653.  
  654.     HRESULT RemoveSubFilter (
  655.         [in] IIlsFilter *pFilter );
  656.  
  657.     HRESULT GetCount (
  658.         [out] ULONG *pcElements );
  659.  
  660. cpp_quote("// Simple filter operations")
  661.  
  662.     HRESULT SetStandardAttributeName (
  663.         [in] ILS_STD_ATTR_NAME  usrStdAttr);
  664.  
  665.     HRESULT SetExtendedAttributeName (
  666.         [in] BSTR bstrAnyAttrName );
  667.  
  668.     HRESULT SetAttributeValue (
  669.         [in] BSTR bstrAttrValue );
  670. }
  671.  
  672.  
  673. //+---------------------------------------------------------------------------
  674. //
  675. //  Copyright (C) Microsoft Corporation, 1996 - 1997.
  676. //
  677. //  Contents:    IEnumIlsProtocols interface definition
  678. //              
  679. //----------------------------------------------------------------------------
  680. [
  681.     object,
  682.     uuid(440CC98E-20E6-11d0-8796-444553540000),
  683.     pointer_default(unique)
  684. ]
  685. interface IEnumIlsProtocols : IUnknown
  686.     typedef [unique] IEnumIlsProtocols *LPENUM_ILS_PROTOCOLS;
  687.  
  688.     HRESULT Next(
  689.         [in] ULONG cProtocols,
  690.         [out] IIlsProtocol **rgpProtocol,
  691.         [out] ULONG *pcFetched);
  692.  
  693.     HRESULT Skip(
  694.         [in] ULONG cProtocols);
  695.         
  696.     HRESULT Reset();
  697.  
  698.     HRESULT Clone(
  699.         [out] IEnumIlsProtocols **ppEnumProtocol);
  700. }
  701.  
  702.  
  703. //+---------------------------------------------------------------------------
  704. //
  705. //  Copyright (C) Microsoft Corporation, 1996 - 1997.
  706. //
  707. //  Contents:    IEnumIlsUsers interface definition
  708. //              
  709. //----------------------------------------------------------------------------
  710. [
  711.     object,
  712.     uuid(440CC98F-20E6-11d0-8796-444553540000),
  713.     pointer_default(unique)
  714. ]
  715. interface IEnumIlsUsers : IUnknown
  716.     typedef [unique] IEnumIlsUsers *LPENUM_ILS_USERS;
  717.  
  718.     HRESULT Next(
  719.         [in] ULONG cUsers,
  720.         [out] IIlsUser **rgpUsers,
  721.         [out] ULONG *pcFetched);
  722.  
  723.     HRESULT Skip(
  724.         [in] ULONG cUsers);
  725.         
  726.     HRESULT Reset();
  727.  
  728.     HRESULT Clone(
  729.         [out] IEnumIlsUsers **ppEnumUser);
  730. }
  731.  
  732.  
  733. //+---------------------------------------------------------------------------
  734. //
  735. //  Copyright (C) Microsoft Corporation, 1996 - 1997.
  736. //
  737. //  Contents:    IEnumIlsNames interface definition
  738. //              
  739. //----------------------------------------------------------------------------
  740. [
  741.     object,
  742.     uuid(440CC990-20E6-11d0-8796-444553540000),
  743.     pointer_default(unique)
  744. ]
  745. interface IEnumIlsNames : IUnknown
  746.     typedef [unique] IEnumIlsNames *LPENUM_ILS_NAMES;
  747.  
  748.     HRESULT Next(
  749.         [in] ULONG cNames,
  750.         [out] BSTR *rgpbstrName,
  751.         [out] ULONG *pcFetched);
  752.  
  753.     HRESULT Skip(
  754.         [in] ULONG cNames);
  755.         
  756.     HRESULT Reset();
  757.  
  758.     HRESULT Clone(
  759.         [out] IEnumIlsNames **ppEnumName);
  760. }
  761.  
  762.  
  763.