windows-nt/Source/XPSP1/NT/net/config/netman/conman/enuml.h
2020-09-26 16:20:57 +08:00

65 lines
1.7 KiB
C++

#pragma once
#include "nmbase.h"
#include "nmres.h"
extern LONG g_CountLanConnectionEnumerators;
class ATL_NO_VTABLE CLanConnectionManagerEnumConnection :
public CComObjectRootEx <CComMultiThreadModel>,
public CComCoClass <CLanConnectionManagerEnumConnection,
&CLSID_LanConnectionManagerEnumConnection>,
public IEnumNetConnection
{
private:
HDEVINFO m_hdi;
DWORD m_dwIndex;
public:
CLanConnectionManagerEnumConnection()
{
m_hdi = NULL;
m_dwIndex = 0;
InterlockedIncrement(&g_CountLanConnectionEnumerators);
}
~CLanConnectionManagerEnumConnection();
DECLARE_REGISTRY_RESOURCEID(IDR_LAN_CONMAN_ENUM)
BEGIN_COM_MAP(CLanConnectionManagerEnumConnection)
COM_INTERFACE_ENTRY(IEnumNetConnection)
END_COM_MAP()
// IEnumNetConnection
STDMETHOD(Next)(ULONG celt, INetConnection **rgelt, ULONG *pceltFetched);
STDMETHOD(Skip)(ULONG celt);
STDMETHOD(Reset)();
STDMETHOD(Clone)(IEnumNetConnection **ppenum);
private:
//
// Private functions
//
HRESULT HrNextOrSkip(ULONG celt, INetConnection **rgelt,
ULONG *pceltFetched);
HRESULT HrCreateLanConnectionInstance(SP_DEVINFO_DATA &deid,
INetConnection **rgelt,
ULONG ulEntry);
public:
static HRESULT CreateInstance(NETCONMGR_ENUM_FLAGS Flags,
REFIID riid,
LPVOID *ppv);
};
//
// Helper functions
//
BOOL FIsValidNetCfgDevice(HKEY hkey);
HRESULT HrIsLanCapableAdapterFromHkey(HKEY hkey);
BOOL FIsFunctioning(SP_DEVINFO_DATA * pdeid);