|
|
// ALG.idl : IDL source for ALG.dll //
// This file will be processed by the MIDL tool to // produce the type library (ALG.tlb) and marshalling code.
cpp_quote("//+-------------------------------------------------------------------------") cpp_quote("//") cpp_quote("// Microsoft Windows") cpp_quote("// Copyright (C) Microsoft Corporation, 1992-2001.") cpp_quote("//") cpp_quote("//--------------------------------------------------------------------------") cpp_quote("// MODULE: alg.h") cpp_quote("//")
import "oaidl.idl"; import "ocidl.idl";
const int ALG_MAXIMUM_PORT_RANGE_SIZE=10;
typedef enum _ALG_PROTOCOL { eALG_TCP = 0x01, eALG_UDP = 0x02
} ALG_PROTOCOL;
typedef enum _ALG_CAPTURE { eALG_SOURCE_CAPTURE = 0x01, eALG_DESTINATION_CAPTURE = 0x02
} ALG_CAPTURE;
typedef enum _ALG_DIRECTION { eALG_INBOUND = 0x01, eALG_OUTBOUND = 0x02, eALG_BOTH = 0x03
} ALG_DIRECTION;
typedef enum _ALG_ADAPTER_TYPE { eALG_PRIVATE = 0x01, eALG_BOUNDARY = 0x02, eALG_FIREWALLED = 0x04
} ALG_ADAPTER_TYPE;
typedef enum _ALG_NOTIFICATION { eALG_NONE = 0x00, eALG_SESSION_CREATION = 0x01, eALG_SESSION_DELETION = 0x02, eALG_SESSION_BOTH = 0x03
} ALG_NOTIFICATION;
typedef struct _ALG_PRIMARY_CHANNEL_PROPERTIES { ALG_PROTOCOL eProtocol; USHORT usCapturePort; ALG_CAPTURE eCaptureType; BOOL fCaptureInbound; ULONG ulListeningAddress; USHORT usListeningPort;
} ALG_PRIMARY_CHANNEL_PROPERTIES;
typedef struct _ALG_SECONDARY_CHANNEL_PROPERTIES { ALG_PROTOCOL eProtocol; ULONG ulPrivateAddress; USHORT usPrivatePort; ULONG ulPublicAddress; USHORT usPublicPort; ULONG ulRemoteAddress; USHORT usRemotePort; ULONG ulListenAddress; USHORT usListenPort; ALG_DIRECTION eDirection; BOOL fPersistent;
} ALG_SECONDARY_CHANNEL_PROPERTIES;
typedef struct _ALG_DATA_CHANNEL_PROPERTIES { ALG_PROTOCOL eProtocol; ULONG ulPrivateAddress; USHORT usPrivatePort; ULONG ulPublicAddress; USHORT usPublicPort; ULONG ulRemoteAddress; USHORT usRemotePort; ALG_DIRECTION eDirection; ALG_NOTIFICATION eDesiredNotification;
} ALG_DATA_CHANNEL_PROPERTIES;
typedef struct _ALG_PERSISTENT_DATA_CHANNEL_PROPERTIES { ALG_PROTOCOL eProtocol; ULONG ulPrivateAddress; USHORT usPrivatePort; ULONG ulPublicAddress; USHORT usPublicPort; ULONG ulRemoteAddress; USHORT usRemotePort; ALG_DIRECTION eDirection;
} ALG_PERSISTENT_DATA_CHANNEL_PROPERTIES;
[ object, uuid(480BF94A-09FD-4F8A-A3E0-B0700282D84D), pointer_default(unique) ] interface IAdapterInfo : IUnknown { HRESULT GetAdapterIndex( [out] ULONG* pulIndex);
HRESULT GetAdapterType( [out] ALG_ADAPTER_TYPE* pAdapterType);
HRESULT GetAdapterAddresses( [out] ULONG* pulAddressCount, [out] ULONG** prgAddresses ); };
[ object, uuid(B68E5043-3E3D-4CC2-B9C1-5F8F88FEE81C), pointer_default(unique) ] interface IPendingProxyConnection : IUnknown { HRESULT Cancel(); };
[ object, uuid(AD42D12A-4AD0-4856-919E-E854C91D1856), pointer_default(unique), local ] interface IDataChannel : IUnknown { HRESULT Cancel(); HRESULT GetChannelProperties( [out] ALG_DATA_CHANNEL_PROPERTIES** ppProperties );
HRESULT GetSessionCreationEventHandle( [out] HANDLE* pHandle );
HRESULT GetSessionDeletionEventHandle( [out] HANDLE* pHandle ); };
[ object, uuid(A180E934-D92A-415D-9144-759F8054E8F6), pointer_default(unique) ] interface IPersistentDataChannel : IUnknown { HRESULT Cancel(); HRESULT GetChannelProperties( [out] ALG_PERSISTENT_DATA_CHANNEL_PROPERTIES** ppProperties ); };
[ object, uuid(1A2E8B62-9012-4BE6-84AE-32BD66BA657A), pointer_default(unique) ]
interface IPrimaryControlChannel : IUnknown { HRESULT Cancel();
HRESULT GetChannelProperties( [out] ALG_PRIMARY_CHANNEL_PROPERTIES** ppProperties );
HRESULT GetOriginalDestinationInformation( [in] ULONG ulSourceAddress, [in] USHORT usSourcePort, [out] ULONG* pulOriginalDestinationAddress, [out] USHORT* pusOriginalDestinationPort, [out] IAdapterInfo ** ppReceiveAdapter );
};
[ object, uuid(A23F9D10-714C-41FE-8471-FFB19BC28454), pointer_default(unique) ]
interface ISecondaryControlChannel : IUnknown { HRESULT Cancel();
HRESULT GetChannelProperties( [out] ALG_SECONDARY_CHANNEL_PROPERTIES ** ppProperties );
HRESULT GetOriginalDestinationInformation( [in] ULONG ulSourceAddress, [in] USHORT usSourcePort, [out] ULONG* pulOriginalDestinationAddress, [out] USHORT* pusOriginalDestinationPort, [out] IAdapterInfo** ppReceiveAdapter ); };
[ object, uuid(A23F9D11-714C-41FE-8471-FFB19BC28454), pointer_default(unique) ]
interface IEnumAdapterInfo : IUnknown { HRESULT Next( [in] ULONG celt, [out, size_is(celt), length_is(*pCeltFetched)] IAdapterInfo ** rgAI, [out] ULONG * pCeltFetched );
HRESULT Skip( [in] ULONG celt );
HRESULT Reset( );
HRESULT Clone( [out] IEnumAdapterInfo ** ppEnum );
}
// // Implemented by ISV in there ALG proxy's // [ object, uuid(44AB2DC3-23B2-47DE-8228-2E1CCEEB9911), helpstring("IAdapterNotificationSink Interface"), pointer_default(unique) ] interface IAdapterNotificationSink : IUnknown { HRESULT AdapterAdded( IAdapterInfo * pAdapter );
HRESULT AdapterRemoved( IAdapterInfo* pAdapter );
HRESULT AdapterModified( IAdapterInfo* pAdapter ); };
// // ALG main public interface // [ object, uuid(5134842A-FDCE-485D-93CD-DE1640643BBE), pointer_default(unique) ]
interface IApplicationGatewayServices : IUnknown { HRESULT CreatePrimaryControlChannel( [in] ALG_PROTOCOL eProtocol, [in] USHORT usPortToCapture, [in] ALG_CAPTURE eCaptureType, [in] BOOL fCaptureInbound, [in] ULONG ulListenAddress, [in] USHORT usListenPort, [out] IPrimaryControlChannel** ppIControlChannel );
HRESULT CreateSecondaryControlChannel( [in] ALG_PROTOCOL eProtocol, [in] ULONG ulPrivateAddress, [in] USHORT usPrivatePort, [in] ULONG ulPublicAddress, [in] USHORT usPublicPort, [in] ULONG ulRemoteAddress, [in] USHORT usRemotePort, [in] ULONG ulListenAddress, [in] USHORT usListenPort, [in] ALG_DIRECTION eDirection, [in] BOOL fPersistent, [out] ISecondaryControlChannel** ppControlChannel );
HRESULT GetBestSourceAddressForDestinationAddress( [in] ULONG ulDstAddress, [in] BOOL fDemandDial, [out] ULONG* pulBestSrcAddress );
HRESULT PrepareProxyConnection( [in] ALG_PROTOCOL eProtocol, [in] ULONG ulSrcAddress, [in] USHORT usSrcPort, [in] ULONG ulDstAddress, [in] USHORT usDstPort, [in] BOOL fNoTimeout, [out] IPendingProxyConnection** ppPendingConnection );
HRESULT PrepareSourceModifiedProxyConnection( [in] ALG_PROTOCOL eProtocol, [in] ULONG ulSrcAddress, [in] USHORT usSrcPort, [in] ULONG ulDstAddress, [in] USHORT usDstPort, [in] ULONG ulNewSrcAddress, [in] USHORT usNewSourcePort, [out] IPendingProxyConnection** ppPendingConnection );
HRESULT CreateDataChannel( [in] ALG_PROTOCOL eProtocol, [in] ULONG ulPrivateAddress, [in] USHORT usPrivatePort, [in] ULONG ulPublicAddress, [in] USHORT usPublicPort, [in] ULONG ulRemoteAddress, [in] USHORT usRemotePort, [in] ALG_DIRECTION eDirection, [in] ALG_NOTIFICATION eDesiredNotification, [in] BOOL fNoTimeout, [out] IDataChannel** ppDataChannel );
HRESULT CreatePersistentDataChannel( [in] ALG_PROTOCOL eProtocol, [in] ULONG ulPrivateAddress, [in] USHORT usPrivatePort, [in] ULONG ulPublicAddress, [in] USHORT usPublicPort, [in] ULONG ulRemoteAddress, [in] USHORT usRemotePort, [in] ALG_DIRECTION eDirection, [out] IPersistentDataChannel** ppIPersistentDataChannel );
HRESULT ReservePort( [in] USHORT usPortCount, [out] USHORT* pusReservedPort );
HRESULT ReleaseReservedPort( [in] USHORT usReservedPortBase, [in] USHORT usPortCount );
HRESULT EnumerateAdapters( [out] IEnumAdapterInfo ** ppIEnumAdapterInfo );
HRESULT StartAdapterNotifications( [in] IAdapterNotificationSink* pSink, [in] DWORD* pdwCookie );
HRESULT StopAdapterNotifications( [in] DWORD dwCookieOfSink );
};
// // Implemented by the ISV ALG's // [ object, uuid(5134842B-FDCE-485D-93CD-DE1640643BBE), pointer_default(unique) ]
interface IApplicationGateway : IUnknown { HRESULT Initialize( [in] IApplicationGatewayServices* pAlgServices );
HRESULT Stop(void); };
// // // Must be implemented by the ALG Manager //
[ uuid(B6D1D098-E235-4B99-BA98-7C624FD875DB), version(1.0), helpstring("MyICS 1.0 Type Library") ]
library ALGLib { importlib("stdole32.tlb"); importlib("stdole2.tlb");
[ uuid(F8ADE1D3-49DF-4B75-9005-EF9508E6A337), helpstring("ApplicationGatewayServices Class") ] coclass ApplicationGatewayServices { [default] interface IApplicationGatewayServices; };
[ uuid(3CEB5509-C1CD-432F-9D8F-65D1E286AA80), helpstring("PrimaryControlChannel Class") ] coclass PrimaryControlChannel { [default] interface IPrimaryControlChannel; };
[ uuid(7B3181A0-C92F-4567-B0FA-CD9A10ECD7D1), helpstring("SecondaryControlChannel Class") ] coclass SecondaryControlChannel { [default] interface ISecondaryControlChannel; };
[ uuid(6F9942C9-C1B1-4AB5-93DA-6058991DC8F3), helpstring("AdapterInfo Class") ] coclass AdapterInfo { [default] interface IAdapterInfo; };
[ uuid(6F9942CA-C1B1-4AB5-93DA-6058991DC8F3), helpstring("EnumAdapterInfo Class") ] coclass EnumAdapterInfo { [default] interface IEnumAdapterInfo; };
[ uuid(D8A68E5E-2B37-426C-A329-C117C14C429E), helpstring("PendingProxyConnection Class") ] coclass PendingProxyConnection { [default] interface IPendingProxyConnection; }; [ uuid(BBB36F15-408D-4056-8C27-920843D40BE5), helpstring("DataChannel Class") ]
coclass DataChannel { [default] interface IDataChannel; }; [ uuid(BC9B54AB-7883-4C13-909F-033D03267990), helpstring("PersistentDataChannel Class") ]
coclass PersistentDataChannel { [default] interface IPersistentDataChannel; }; };
|