|
|
/////////////////////////////////////////////////////////////////////////// // // 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; };
};
|