Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

582 lines
15 KiB

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