windows-nt/Source/XPSP1/NT/net/homenet/alg/exe/primarycontrolchannel.h
2020-09-26 16:20:57 +08:00

92 lines
1.9 KiB
C++

// PrimaryControlChannel.h : Declaration of the CPrimaryControlChannel
#pragma once
#include "CollectionRedirects.h"
#include "resource.h" // main symbols
#include <list>
/////////////////////////////////////////////////////////////////////////////
// CPrimaryControlChannel
class ATL_NO_VTABLE CPrimaryControlChannel :
public CComObjectRootEx<CComMultiThreadModel>,
public CComCoClass<CPrimaryControlChannel, &CLSID_PrimaryControlChannel>,
public IPrimaryControlChannel
{
public:
DECLARE_REGISTRY_RESOURCEID(IDR_PRIMARYCONTROLCHANNEL)
DECLARE_NOT_AGGREGATABLE(CPrimaryControlChannel)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CPrimaryControlChannel)
COM_INTERFACE_ENTRY(IPrimaryControlChannel)
END_COM_MAP()
//
// IPrimaryControlChannel - Methods
//
public:
STDMETHODIMP Cancel();
STDMETHODIMP GetChannelProperties(
ALG_PRIMARY_CHANNEL_PROPERTIES ** ppProperties
);
STDMETHODIMP GetOriginalDestinationInformation(
ULONG ulSourceAddress,
USHORT usSourcePort,
ULONG * pulOriginalDestinationAddress,
USHORT * pusOriginalDestinationPort,
IAdapterInfo ** ppReceiveAdapter
);
//
// Methods not part of the Interface
//
// Set the redirect and return the hCookie associated with the new redirect
HRESULT
SetRedirect(
ALG_ADAPTER_TYPE eAdapterType,
ULONG nAdapterIndex,
ULONG nAdapterAddress
);
//
HRESULT
CancelRedirects()
{
return m_CollectionRedirects.RemoveAll();
}
//
HRESULT
CancelRedirectsForAdapter(
ULONG nAdapterIndex
);
HRESULT
CreateInboundRedirect(
ULONG nAdapterIndex
);
//
// Properties
//
ALG_PRIMARY_CHANNEL_PROPERTIES m_Properties;
CCollectionRedirects m_CollectionRedirects;
};