68 lines
1.8 KiB
C++
68 lines
1.8 KiB
C++
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 2000.
|
|
//
|
|
// File: I N T E R F A C E L I S T . H
|
|
//
|
|
// Contents: Common code to manage the list of network interfaces
|
|
//
|
|
// Notes:
|
|
//
|
|
// Author: mbend 29 Dec 2000
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#pragma once
|
|
|
|
#include "upsync.h"
|
|
#include "ulist.h"
|
|
#include "InterfaceManager.h"
|
|
|
|
class CUPnPInterfaceChange
|
|
{
|
|
public:
|
|
virtual void OnInterfaceChange(const InterfaceMappingList & interfaceMappingList) = 0;
|
|
};
|
|
|
|
class CUPnPInterfaceList
|
|
{
|
|
public:
|
|
~CUPnPInterfaceList();
|
|
|
|
static CUPnPInterfaceList & Instance();
|
|
|
|
HRESULT HrInitialize();
|
|
HRESULT HrShutdown();
|
|
BOOL FShouldSendOnInterface(DWORD dwIpAddr);
|
|
BOOL FShouldSendOnIndex(DWORD dwIndex);
|
|
HRESULT HrSetGlobalEnable();
|
|
HRESULT HrClearGlobalEnable();
|
|
HRESULT HrSetICSInterfaces(long nCount, GUID * arInterfaceGuidsToAllow);
|
|
HRESULT HrSetICSOff();
|
|
HRESULT HrRegisterInterfaceChange(CUPnPInterfaceChange * pInterfaceChange);
|
|
private:
|
|
CUPnPInterfaceList();
|
|
CUPnPInterfaceList(const CUPnPInterfaceList &);
|
|
CUPnPInterfaceList & operator=(const CUPnPInterfaceList &);
|
|
|
|
typedef CUArray<CUPnPInterfaceChange*> InterfaceChangeList;
|
|
|
|
static CUPnPInterfaceList s_instance;
|
|
|
|
static void CALLBACK InterfaceChangeCallback(void *, BOOLEAN);
|
|
|
|
HRESULT HrBuildIPAddressList();
|
|
|
|
CUCriticalSection m_critSec;
|
|
IpAddressList m_ipAddressList;
|
|
IndexList m_indexList;
|
|
InterfaceList m_interfaceList;
|
|
InterfaceChangeList m_interfaceChangeList;
|
|
BOOL m_bGlobalEnable;
|
|
BOOL m_bICSEnabled;
|
|
HANDLE m_hInterfaceChangeWait;
|
|
OVERLAPPED m_olInterfaceChangeEvent;
|
|
};
|
|
|