89 lines
2.4 KiB
C
89 lines
2.4 KiB
C
|
//+---------------------------------------------------------------------------
|
||
|
//
|
||
|
// Microsoft Windows
|
||
|
// Copyright (C) Microsoft Corporation, 1997.
|
||
|
//
|
||
|
// File: E N U M . H
|
||
|
//
|
||
|
// Contents: Enumerator for connection objects.
|
||
|
//
|
||
|
// Notes:
|
||
|
//
|
||
|
// Author: shaunco 21 Sep 1997
|
||
|
//
|
||
|
//----------------------------------------------------------------------------
|
||
|
|
||
|
#pragma once
|
||
|
#include "nmbase.h"
|
||
|
#include "nmres.h"
|
||
|
|
||
|
|
||
|
class ATL_NO_VTABLE CConnectionManagerEnumConnection :
|
||
|
public CComObjectRootEx <CComMultiThreadModel>,
|
||
|
public CComCoClass <CConnectionManagerEnumConnection,
|
||
|
&CLSID_ConnectionManagerEnumConnection>,
|
||
|
public IEnumNetConnection
|
||
|
{
|
||
|
private:
|
||
|
NETCONMGR_ENUM_FLAGS m_EnumFlags;
|
||
|
|
||
|
// m_ClassManagers is a binary tree (STL map) of pointers to the
|
||
|
// INetConnectionManager interfaces implemented by our registered
|
||
|
// class managers, indexed by the GUIDs of the class manager.
|
||
|
//
|
||
|
CLASSMANAGERMAP m_mapClassManagers;
|
||
|
|
||
|
// m_iCurClassMgr is the iterator into the above map for the current
|
||
|
// class manager involved in the enumeration.
|
||
|
//
|
||
|
CLASSMANAGERMAP::iterator m_iterCurClassMgr;
|
||
|
|
||
|
// m_penumCurClassMgr is the enumerator corresponding to the current
|
||
|
// class manager.
|
||
|
IEnumNetConnection* m_penumCurClassMgr;
|
||
|
|
||
|
private:
|
||
|
VOID ReleaseCurrentClassEnumerator ()
|
||
|
{
|
||
|
ReleaseObj (m_penumCurClassMgr);
|
||
|
m_penumCurClassMgr = NULL;
|
||
|
}
|
||
|
|
||
|
public:
|
||
|
CConnectionManagerEnumConnection ()
|
||
|
{
|
||
|
m_EnumFlags = NCME_DEFAULT;
|
||
|
m_penumCurClassMgr = NULL;
|
||
|
m_iterCurClassMgr = m_mapClassManagers.begin();
|
||
|
}
|
||
|
VOID FinalRelease ();
|
||
|
|
||
|
DECLARE_REGISTRY_RESOURCEID(IDR_CONMAN_ENUM)
|
||
|
|
||
|
BEGIN_COM_MAP(CConnectionManagerEnumConnection)
|
||
|
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);
|
||
|
|
||
|
public:
|
||
|
static HRESULT CreateInstance (
|
||
|
NETCONMGR_ENUM_FLAGS Flags,
|
||
|
CLASSMANAGERMAP& mapClassManagers,
|
||
|
REFIID riid,
|
||
|
VOID** ppv);
|
||
|
};
|
||
|
|