/////////////////////////////////////////////////////////////////////////// // // Copyright(C) 1997-1998 Microsoft Corporation all rights reserved. // // Module: iaspipeline.idl // // Project: Everest // // Description: IAS Pipeline Interfaces // // Author: TLP 1/20/98 // /////////////////////////////////////////////////////////////////////////// // This file will be processed by the MIDL tool to // produce the type library (iaspolcy.tlb) and marshalling code. import "iaspolcy.idl"; import "iascomp.idl"; ////////////////////////////////////////////////////////////////////////// // Pipeline Interfaces ////////////////////////////////////////////////////////////////////////// interface IPipeline; // Forward reference interface IStage; // Forward reference interface IConnector; // Forward reference // Pipeline Object Types // typedef enum _PIPELINE_OBJECT_TYPES { PIPELINE_OBJECT_PIPELINE=1, PIPELINE_OBJECT_STAGE, PIPELINE_OBJECT_HANDLER } PIPELINE_OBJECT_TYPES; // Pipeline Ids // typedef enum _PIPELINE_IDS { PIPELINE_BEGIN_SESSION=1, // 1 PIPELINE_IN_SESSION, // 2 PIPELINE_END_SESSION, // 3 // New Pipeline Ids Here PIPELINE_MAX_ID } PIPELINE_IDS; // Stage Ids // typedef enum _STAGE_IDS { STAGE_PREOP=1, // 1 STAGE_POSTOP, // 2 STAGE_ROAMING, // 3 STAGE_CREDENTIAL_RETRIEVAL, // 4 STAGE_NAP_EVALUATION, // 5 STAGE_USER_AUTHORIZATION, // 6 STAGE_AUTHENTICATION, // 7 STAGE_ACCOUNTING, // 8 STAGE_USER_RESTRICTIONS, // 9 STAGE_LOGGING, // 10 // New Stage Ids Here... STAGE_MAX_ID } STAGE_IDS; // Request Handler Ids - See - iascomp.idl // // Relative order of pipeline objects typedef enum _IASMERIT { MERIT_FIRST_IN_CHAIN = 1, // 2 - 1023 for object ordering MERIT_LAST_IN_CHAIN = 1024 } IASMERIT; // Upper bounds on pipeline objects typedef enum _IAS_PIPELINE_MAX { IAS_MAX_PIPELINES=16, // Maximum number of pipelines in a pipeline group IAS_MAX_STAGES=32, // Maximum number of stages on a pipeline IAS_MAX_HANDLERS=32, // Maximum number of request handlers on a stage IAS_MAX_EVENTS=32, // Maximum number of events for a pipeline IAS_MAX_NAME=32, // Maximum length of a pipeline object name IAS_MAX_PROGID=32, // Maximum length of a pipeline object ProgID IAS_MAX_DESCRIPTION=64 // Maximum length of a pipeline object description } IAS_PIPELINE_MAX; typedef struct _PIPELINE_OBJECT_INFO { QUALITYSTATUS eQualityStatus; IUnknown* pObjectUnkwn; LONG lType; LONG lId; LONG lParentId; ULONG ulMerit; ULONG ulEventCount; LONG lEvents[IAS_MAX_EVENTS]; WCHAR Name[IAS_MAX_NAME]; WCHAR Description[IAS_MAX_DESCRIPTION]; WCHAR ProgID[IAS_MAX_PROGID]; } PIPELINE_OBJECT_INFO, *PPIPELINE_OBJECT_INFO; ////////////////////////////////////////////////////////////////////////// // Pipeline Manager Object Interface ////////////////////////////////////////////////////////////////////////// [ object, hidden, restricted, uuid(6BC096BE-0CE6-11D1-BAAE-00C04FC2E20D), pointer_default(unique) ] interface IPipelineManager : IUnknown { HRESULT Initialize([in] LPCWSTR lpszPipelineGroup); HRESULT Shutdown(void); HRESULT EnumPipelines([in, out] LPDWORD lpdwCount, [out] PIPELINE_OBJECT_INFO* pPipelineInfo); }; ////////////////////////////////////////////////////////////////////////// // Pipeline Object Interface ////////////////////////////////////////////////////////////////////////// [ object, hidden, restricted, uuid(6BC096AD-0CE6-11D1-BAAE-00C04FC2E20D), pointer_default(unique) ] interface IPipeline : IUnknown { HRESULT Initialize([in] PIPELINE_OBJECT_INFO* pPipelineInfo); HRESULT Shutdown(void); HRESULT EnumStages([in, out] LPDWORD lpdwCount, [out] PIPELINE_OBJECT_INFO* pStageInfo); HRESULT GetPipelineInfo([out] PIPELINE_OBJECT_INFO* pPipelineInfo); }; ////////////////////////////////////////////////////////////////////////// // Pipeline Stage Object Interface ////////////////////////////////////////////////////////////////////////// [ object, hidden, restricted, uuid(6BC096AC-0CE6-11D1-BAAE-00C04FC2E20D), pointer_default(unique) ] interface IStage : IUnknown { HRESULT Initialize([in] PIPELINE_OBJECT_INFO* pStageInfo); HRESULT Shutdown(void); HRESULT GetOutboundConnector( [out] IConnector** pOutboundConnector); HRESULT GetInboundConnector([out] IConnector** pInboundConnector); HRESULT EnumRequestHandlers([in, out] LPDWORD lpdwCount, [out] PIPELINE_OBJECT_INFO* pRequestHandlerInfo); HRESULT GetStageInfo([out] PIPELINE_OBJECT_INFO* pStageInfo); }; ////////////////////////////////////////////////////////////////////////// // Pipeline Stage Connector Object Interface ////////////////////////////////////////////////////////////////////////// typedef enum _CONNECTOR_DIRECTION { CONNECTOR_DIRECTION_INBOUND = 1, CONNECTOR_DIRECTION_OUTBOUND = 2 } CONNECTOR_DIRECTION; typedef enum _CONNECTOR_STATE { CONNECTOR_STATE_CONNECTED = 1, CONNECTOR_STATE_DISCONNECTED = 2 } CONNECTOR_STATE; typedef struct _tagCONNECTORINFO { CONNECTOR_STATE eState; CONNECTOR_DIRECTION eDirection; ULONG ulStageID; ULONG ulRequestCount; } CONNECTORINFO, *PCONNECTORINFO; [ object, hidden, restricted, uuid(6BC096AE-0CE6-11D1-BAAE-00C04FC2E20D), pointer_default(unique) ] interface IConnector : IUnknown { HRESULT Connect([in] IConnector* pInboundConnector); HRESULT ReceiveConnection([in] IConnector* pOutboundConnector); HRESULT Disconnect(void); HRESULT ConnectedTo([out] IConnector** ppConnector); HRESULT GetConnectorInfo([out] PCONNECTORINFO pConnectorInfo); }; ////////////////////////////////////////////////////////////////////////// // Pipeline Stage Connector Object Input Interface ////////////////////////////////////////////////////////////////////////// [ object, hidden, restricted, uuid(6BC096AF-0CE6-11D1-BAAE-00C04FC2E20D), pointer_default(unique) ] interface IConnectorInput : IUnknown { HRESULT ReceiveRequest([in] IRequest* pRequest); }; /////////////// // Type Library /////////////// [ uuid(6BC096B9-0CE6-11D1-BAAE-00C04FC2E20D), version(1.0), helpstring("IAS Pipeline 1.0 Type Library") ] library IASPipelineLib { importlib("stdole2.tlb"); ////////// // Classes ////////// ////////////////////////////////////////////////////////////////////////// [ uuid(6BC096B2-0CE6-11D1-BAAE-00C04FC2E20D), helpstring("Stage Class"), hidden, restricted ] coclass Stage { [default] interface IStage; }; ////////////////////////////////////////////////////////////////////////// [ uuid(6BC096B3-0CE6-11D1-BAAE-00C04FC2E20D), helpstring("Pipeline Class"), hidden, restricted ] coclass Pipeline { [default] interface IPipeline; }; ////////////////////////////////////////////////////////////////////////// [ uuid(6BC096BF-0CE6-11D1-BAAE-00C04FC2E20D), helpstring("Pipeline Manager Class"), hidden, restricted ] coclass PipelineManager { [default] interface IPipelineManager; }; };