Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

312 lines
7.5 KiB

  1. ///////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright(C) 1997-1998 Microsoft Corporation all rights reserved.
  4. //
  5. // Module: iaspipeline.idl
  6. //
  7. // Project: Everest
  8. //
  9. // Description: IAS Pipeline Interfaces
  10. //
  11. // Author: TLP 1/20/98
  12. //
  13. ///////////////////////////////////////////////////////////////////////////
  14. // This file will be processed by the MIDL tool to
  15. // produce the type library (iaspolcy.tlb) and marshalling code.
  16. import "iaspolcy.idl";
  17. import "iascomp.idl";
  18. //////////////////////////////////////////////////////////////////////////
  19. // Pipeline Interfaces
  20. //////////////////////////////////////////////////////////////////////////
  21. interface IPipeline; // Forward reference
  22. interface IStage; // Forward reference
  23. interface IConnector; // Forward reference
  24. // Pipeline Object Types
  25. //
  26. typedef enum _PIPELINE_OBJECT_TYPES
  27. {
  28. PIPELINE_OBJECT_PIPELINE=1,
  29. PIPELINE_OBJECT_STAGE,
  30. PIPELINE_OBJECT_HANDLER
  31. } PIPELINE_OBJECT_TYPES;
  32. // Pipeline Ids
  33. //
  34. typedef enum _PIPELINE_IDS
  35. {
  36. PIPELINE_BEGIN_SESSION=1, // 1
  37. PIPELINE_IN_SESSION, // 2
  38. PIPELINE_END_SESSION, // 3
  39. // New Pipeline Ids Here
  40. PIPELINE_MAX_ID
  41. } PIPELINE_IDS;
  42. // Stage Ids
  43. //
  44. typedef enum _STAGE_IDS
  45. {
  46. STAGE_PREOP=1, // 1
  47. STAGE_POSTOP, // 2
  48. STAGE_ROAMING, // 3
  49. STAGE_CREDENTIAL_RETRIEVAL, // 4
  50. STAGE_NAP_EVALUATION, // 5
  51. STAGE_USER_AUTHORIZATION, // 6
  52. STAGE_AUTHENTICATION, // 7
  53. STAGE_ACCOUNTING, // 8
  54. STAGE_USER_RESTRICTIONS, // 9
  55. STAGE_LOGGING, // 10
  56. // New Stage Ids Here...
  57. STAGE_MAX_ID
  58. } STAGE_IDS;
  59. // Request Handler Ids - See - iascomp.idl
  60. //
  61. // Relative order of pipeline objects
  62. typedef enum _IASMERIT
  63. {
  64. MERIT_FIRST_IN_CHAIN = 1,
  65. // 2 - 1023 for object ordering
  66. MERIT_LAST_IN_CHAIN = 1024
  67. } IASMERIT;
  68. // Upper bounds on pipeline objects
  69. typedef enum _IAS_PIPELINE_MAX
  70. {
  71. IAS_MAX_PIPELINES=16, // Maximum number of pipelines in a pipeline group
  72. IAS_MAX_STAGES=32, // Maximum number of stages on a pipeline
  73. IAS_MAX_HANDLERS=32, // Maximum number of request handlers on a stage
  74. IAS_MAX_EVENTS=32, // Maximum number of events for a pipeline
  75. IAS_MAX_NAME=32, // Maximum length of a pipeline object name
  76. IAS_MAX_PROGID=32, // Maximum length of a pipeline object ProgID
  77. IAS_MAX_DESCRIPTION=64 // Maximum length of a pipeline object description
  78. } IAS_PIPELINE_MAX;
  79. typedef struct _PIPELINE_OBJECT_INFO
  80. {
  81. QUALITYSTATUS eQualityStatus;
  82. IUnknown* pObjectUnkwn;
  83. LONG lType;
  84. LONG lId;
  85. LONG lParentId;
  86. ULONG ulMerit;
  87. ULONG ulEventCount;
  88. LONG lEvents[IAS_MAX_EVENTS];
  89. WCHAR Name[IAS_MAX_NAME];
  90. WCHAR Description[IAS_MAX_DESCRIPTION];
  91. WCHAR ProgID[IAS_MAX_PROGID];
  92. } PIPELINE_OBJECT_INFO, *PPIPELINE_OBJECT_INFO;
  93. //////////////////////////////////////////////////////////////////////////
  94. // Pipeline Manager Object Interface
  95. //////////////////////////////////////////////////////////////////////////
  96. [
  97. object,
  98. hidden,
  99. restricted,
  100. uuid(6BC096BE-0CE6-11D1-BAAE-00C04FC2E20D),
  101. pointer_default(unique)
  102. ]
  103. interface IPipelineManager : IUnknown
  104. {
  105. HRESULT
  106. Initialize([in] LPCWSTR lpszPipelineGroup);
  107. HRESULT
  108. Shutdown(void);
  109. HRESULT
  110. EnumPipelines([in, out] LPDWORD lpdwCount, [out] PIPELINE_OBJECT_INFO* pPipelineInfo);
  111. };
  112. //////////////////////////////////////////////////////////////////////////
  113. // Pipeline Object Interface
  114. //////////////////////////////////////////////////////////////////////////
  115. [
  116. object,
  117. hidden,
  118. restricted,
  119. uuid(6BC096AD-0CE6-11D1-BAAE-00C04FC2E20D),
  120. pointer_default(unique)
  121. ]
  122. interface IPipeline : IUnknown
  123. {
  124. HRESULT
  125. Initialize([in] PIPELINE_OBJECT_INFO* pPipelineInfo);
  126. HRESULT
  127. Shutdown(void);
  128. HRESULT
  129. EnumStages([in, out] LPDWORD lpdwCount, [out] PIPELINE_OBJECT_INFO* pStageInfo);
  130. HRESULT
  131. GetPipelineInfo([out] PIPELINE_OBJECT_INFO* pPipelineInfo);
  132. };
  133. //////////////////////////////////////////////////////////////////////////
  134. // Pipeline Stage Object Interface
  135. //////////////////////////////////////////////////////////////////////////
  136. [
  137. object,
  138. hidden,
  139. restricted,
  140. uuid(6BC096AC-0CE6-11D1-BAAE-00C04FC2E20D),
  141. pointer_default(unique)
  142. ]
  143. interface IStage : IUnknown
  144. {
  145. HRESULT
  146. Initialize([in] PIPELINE_OBJECT_INFO* pStageInfo);
  147. HRESULT
  148. Shutdown(void);
  149. HRESULT
  150. GetOutboundConnector( [out] IConnector** pOutboundConnector);
  151. HRESULT
  152. GetInboundConnector([out] IConnector** pInboundConnector);
  153. HRESULT
  154. EnumRequestHandlers([in, out] LPDWORD lpdwCount, [out] PIPELINE_OBJECT_INFO* pRequestHandlerInfo);
  155. HRESULT
  156. GetStageInfo([out] PIPELINE_OBJECT_INFO* pStageInfo);
  157. };
  158. //////////////////////////////////////////////////////////////////////////
  159. // Pipeline Stage Connector Object Interface
  160. //////////////////////////////////////////////////////////////////////////
  161. typedef enum _CONNECTOR_DIRECTION
  162. {
  163. CONNECTOR_DIRECTION_INBOUND = 1,
  164. CONNECTOR_DIRECTION_OUTBOUND = 2
  165. } CONNECTOR_DIRECTION;
  166. typedef enum _CONNECTOR_STATE
  167. {
  168. CONNECTOR_STATE_CONNECTED = 1,
  169. CONNECTOR_STATE_DISCONNECTED = 2
  170. } CONNECTOR_STATE;
  171. typedef struct _tagCONNECTORINFO
  172. {
  173. CONNECTOR_STATE eState;
  174. CONNECTOR_DIRECTION eDirection;
  175. ULONG ulStageID;
  176. ULONG ulRequestCount;
  177. } CONNECTORINFO, *PCONNECTORINFO;
  178. [
  179. object,
  180. hidden,
  181. restricted,
  182. uuid(6BC096AE-0CE6-11D1-BAAE-00C04FC2E20D),
  183. pointer_default(unique)
  184. ]
  185. interface IConnector : IUnknown
  186. {
  187. HRESULT
  188. Connect([in] IConnector* pInboundConnector);
  189. HRESULT
  190. ReceiveConnection([in] IConnector* pOutboundConnector);
  191. HRESULT
  192. Disconnect(void);
  193. HRESULT
  194. ConnectedTo([out] IConnector** ppConnector);
  195. HRESULT
  196. GetConnectorInfo([out] PCONNECTORINFO pConnectorInfo);
  197. };
  198. //////////////////////////////////////////////////////////////////////////
  199. // Pipeline Stage Connector Object Input Interface
  200. //////////////////////////////////////////////////////////////////////////
  201. [
  202. object,
  203. hidden,
  204. restricted,
  205. uuid(6BC096AF-0CE6-11D1-BAAE-00C04FC2E20D),
  206. pointer_default(unique)
  207. ]
  208. interface IConnectorInput : IUnknown
  209. {
  210. HRESULT
  211. ReceiveRequest([in] IRequest* pRequest);
  212. };
  213. ///////////////
  214. // Type Library
  215. ///////////////
  216. [
  217. uuid(6BC096B9-0CE6-11D1-BAAE-00C04FC2E20D),
  218. version(1.0),
  219. helpstring("IAS Pipeline 1.0 Type Library")
  220. ]
  221. library IASPipelineLib
  222. {
  223. importlib("stdole2.tlb");
  224. //////////
  225. // Classes
  226. //////////
  227. //////////////////////////////////////////////////////////////////////////
  228. [
  229. uuid(6BC096B2-0CE6-11D1-BAAE-00C04FC2E20D),
  230. helpstring("Stage Class"),
  231. hidden,
  232. restricted
  233. ]
  234. coclass Stage
  235. {
  236. [default] interface IStage;
  237. };
  238. //////////////////////////////////////////////////////////////////////////
  239. [
  240. uuid(6BC096B3-0CE6-11D1-BAAE-00C04FC2E20D),
  241. helpstring("Pipeline Class"),
  242. hidden,
  243. restricted
  244. ]
  245. coclass Pipeline
  246. {
  247. [default] interface IPipeline;
  248. };
  249. //////////////////////////////////////////////////////////////////////////
  250. [
  251. uuid(6BC096BF-0CE6-11D1-BAAE-00C04FC2E20D),
  252. helpstring("Pipeline Manager Class"),
  253. hidden,
  254. restricted
  255. ]
  256. coclass PipelineManager
  257. {
  258. [default] interface IPipelineManager;
  259. };
  260. };