windows-nt/Source/XPSP1/NT/net/ias/idl/iaspipe.idl
2020-09-26 16:20:57 +08:00

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