// // ALG_Private.idl : IDL source to be use by ALG.exe an IPNatHlp.dll and will be link with the proxyStub HNETCNG.dll // // JPDup@Microsoft.com // // This file will be processed by the MIDL tool to // import "oaidl.idl"; import "ocidl.idl"; // // // Must be implemented by the IPNatHlp (ALG part) // The Only consumer of these interface is the ALG.exe // [ object, uuid(FDD384CC-78C6-4E6D-8694-1DACBEE57F96), helpstring("INat Interface"), pointer_default(unique) ] interface INat : IUnknown { [helpstring("method CreateRedirect")] HRESULT CreateRedirect( [in] ULONG Flags, [in] UCHAR Protocol, [in] ULONG DestinationAddress, [in] USHORT DestinationPort, [in] ULONG SourceAddress, [in] USHORT SourcePort, [in] ULONG NewDestinationAddress, [in] USHORT NewDestinationPort, [in] ULONG NewSourceAddress, [in] USHORT NewSourcePort, [in] ULONG RestrictAdapterIndex, [in] DWORD_PTR dwAlgProcessId, [in] HANDLE_PTR hCreateEvent, [in] HANDLE_PTR hDeleteEvent ); [helpstring("method CancelRedirect")] HRESULT CancelRedirect( [in] UCHAR Protocol, [in] ULONG DestinationAddress, [in] USHORT DestinationPort, [in] ULONG SourceAddress, [in] USHORT SourcePort, [in] ULONG NewDestinationAddress, [in] USHORT NewDestinationPort, [in] ULONG NewSourceAddress, [in] USHORT NewSourcePort ); [helpstring("method CreateDynamicRedirect")] HRESULT CreateDynamicRedirect( [in] ULONG Flags, [in] ULONG AdapterIndex, [in] UCHAR Protocol, [in] ULONG DestinationAddress, [in] USHORT DestinationPort, [in] ULONG SourceAddress, [in] USHORT SourcePort, [in] ULONG NewDestinationAddress, [in] USHORT NewDestinationPort, [in] ULONG NewSourceAddress, [in] USHORT NewSourcePort, [out] HANDLE_PTR* DynamicRedirectHandle ); [helpstring("method CancelDynamicRedirect")] HRESULT CancelDynamicRedirect( [in] HANDLE_PTR DynamicRedirectHandle ); [helpstring("method GetBestSourceAddressForDestinationAddress")] HRESULT GetBestSourceAddressForDestinationAddress( [in] ULONG ulDestinationAddress, [in] BOOL fDemandDial, [out] ULONG* pulBestSrcAddress ); [helpstring("method LookupAdapterPortMapping")] HRESULT LookupAdapterPortMapping( [in] ULONG ulAdapterIndex, [in] UCHAR Protocol, [in] ULONG ulDestinationAddress, [in] USHORT usDestinationPort, [out] ULONG* pulRemapAddress, [out] USHORT* pusRemapPort ); [helpstring("method GetOriginalDestinationInformation")] HRESULT GetOriginalDestinationInformation( [in] UCHAR Protocol, [in] ULONG ulDestinationAddress, [in] USHORT usDestinationPort, [in] ULONG ulSourceAddress, [in] USHORT usSourcePort, [out] ULONG* pulOriginalDestinationAddress, [out] USHORT* pusOriginalDestinationPort, [out] ULONG* pulAdapterIndex ); [helpstring("method ReservePort")] HRESULT ReservePort( [in] USHORT PortCount, [out] USHORT* ReservedPortBase ); [helpstring("method ReleasePort")] HRESULT ReleasePort( [in] USHORT ReservedPortBase, [in] USHORT PortCount ); }; // // // Implemented in the ALG.exe the only consumer of these interface // is IPNatHlp.dll // [ object, uuid(B71BFBF1-2AF2-4820-810C-4F8EFF838E60), pointer_default(unique) ] interface IAlgController : IUnknown { HRESULT Start( INat* pINat ); HRESULT Stop(); HRESULT Adapter_Add( [in] ULONG Index, [in] short Type ); HRESULT Adapter_Remove( [in] ULONG Index ); HRESULT Adapter_Modify( [in] ULONG Index ); HRESULT Adapter_Bind( [in] ULONG Index, [in] ULONG RealAdapterIndex, [in] ULONG nAddressCount, [in, size_is(nAddressCount)] LPDWORD anAddress ); HRESULT Adapter_PortMappingChanged( [in] ULONG Index, [in] UCHAR Protocol, [in] USHORT Port ); }; [ uuid(B6D1D099-E235-4B99-BA98-7C624FD875DB), version(1.0), helpstring("MyICS Private 1.0 Type Library") ] library ALGLibPrivate { importlib("stdole32.tlb"); importlib("stdole2.tlb"); [ uuid(D6015EC3-FA16-4813-9CA1-DA204574F5DA), helpstring("AlgController Class") ] coclass AlgController { [default] interface IAlgController; }; }