313 lines
7.2 KiB
Plaintext
313 lines
7.2 KiB
Plaintext
///////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// 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;
|
|
};
|
|
|
|
};
|