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.
65 lines
1.9 KiB
65 lines
1.9 KiB
#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() throw()
|
|
{
|
|
m_hdi = NULL;
|
|
m_dwIndex = 0;
|
|
InterlockedIncrement(&g_CountLanConnectionEnumerators);
|
|
}
|
|
|
|
~CLanConnectionManagerEnumConnection() throw();
|
|
|
|
DECLARE_REGISTRY_RESOURCEID(IDR_LAN_CONMAN_ENUM)
|
|
|
|
BEGIN_COM_MAP(CLanConnectionManagerEnumConnection)
|
|
COM_INTERFACE_ENTRY(IEnumNetConnection)
|
|
END_COM_MAP()
|
|
|
|
// IEnumNetConnection
|
|
STDMETHOD(Next)(IN ULONG celt, OUT INetConnection **rgelt, OUT ULONG *pceltFetched);
|
|
STDMETHOD(Skip)(IN ULONG celt);
|
|
STDMETHOD(Reset)();
|
|
STDMETHOD(Clone)(OUT IEnumNetConnection **ppenum);
|
|
|
|
private:
|
|
//
|
|
// Private functions
|
|
//
|
|
|
|
HRESULT HrNextOrSkip(IN ULONG celt,
|
|
OUT INetConnection **rgelt,
|
|
OUT ULONG *pceltFetched);
|
|
HRESULT HrCreateLanConnectionInstance(IN SP_DEVINFO_DATA &deid,
|
|
OUT INetConnection **rgelt,
|
|
IN ULONG ulEntry);
|
|
public:
|
|
static HRESULT CreateInstance(IN NETCONMGR_ENUM_FLAGS Flags,
|
|
OUT REFIID riid,
|
|
OUT TAKEOWNERSHIP LPVOID *ppv);
|
|
};
|
|
|
|
//
|
|
// Helper functions
|
|
//
|
|
|
|
BOOL FIsValidNetCfgDevice(IN HKEY hkey) throw();
|
|
HRESULT HrIsLanCapableAdapterFromHkey(IN HKEY hkey) throw();
|
|
BOOL FIsFunctioning(IN const SP_DEVINFO_DATA * pdeid) throw();
|
|
|