//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1997. // // File: N C N E T C O N . H // // Contents: Common routines for dealing with the connections interfaces. // // Notes: // // Author: shaunco 25 Jan 1998 // //---------------------------------------------------------------------------- #pragma once #ifndef _NCNETCON_H_ #define _NCNETCON_H_ #include "nccom.h" #include "netconp.h" #include "oleauto.h" typedef enum tagNETCONPROPS_EX_FIELDS { NCP_DWSIZE = 0, NCP_GUIDID, NCP_BSTRNAME, NCP_BSTRDEVICENAME, NCP_NCSTATUS, NCP_MEDIATYPE, NCP_SUBMEDIATYPE, NCP_DWCHARACTER, NCP_CLSIDTHISOBJECT, NCP_CLSIDUIOBJECT, NCP_BSTRPHONEORHOSTADDRESS, NCP_BSTRPERSISTDATA, NCP_MAX = NCP_BSTRPERSISTDATA, NCP_ELEMENTS = NCP_MAX + 1 } NETCONPROPS_EX_FIELDS; BOOL FAnyReasonToEnumerateConnectionsForShowIconInfo ( VOID); BOOL FIsValidConnectionName( IN PCWSTR pszName); VOID FreeNetconProperties ( IN NETCON_PROPERTIES* pProps); HRESULT HrGetConnectionPersistData ( IN INetConnection* pConn, OUT BYTE** ppbData, OUT ULONG* pulSize, OUT CLSID* pclsid OPTIONAL); HRESULT HrGetConnectionFromPersistData ( IN const CLSID& clsid, IN const BYTE* pbData, IN ULONG cbData, IN REFIID riid, OUT VOID** ppv); //------------------------------------------------------------------------ // CIterNetCon - iterator for IEnumNetConnection // // This class is is a simple wrapper around CIEnumIter with a call // to INetConnectionManager::EnumConnections to get the enumerator. // class CIterNetCon : public CIEnumIter { public: NOTHROW CIterNetCon ( INetConnectionManager* pConMan, NETCONMGR_ENUM_FLAGS Flags); NOTHROW ~CIterNetCon () { ReleaseObj (m_pEnum); } // Specialization to set the proxy blanket before returning NOTHROW HRESULT HrNext(INetConnection ** ppConnection); protected: IEnumNetConnection* m_pEnum; }; inline NOTHROW CIterNetCon::CIterNetCon ( INetConnectionManager* pConMan, NETCONMGR_ENUM_FLAGS Flags ) : CIEnumIter (NULL) { AssertH (pConMan); // If EnumConnections() fails, make sure ReleaseObj() won't die. m_pEnum = NULL; // Get the enumerator and set it for the base class. // Important to set m_hrLast so that if this fails, we'll also // fail any subsequent calls to HrNext. // m_hrLast = pConMan->EnumConnections (Flags, &m_pEnum); TraceHr (ttidError, FAL, m_hrLast, FALSE, "INetConnectionManager->EnumConnections"); if (SUCCEEDED(m_hrLast)) { NcSetProxyBlanket (m_pEnum); SetEnumerator (m_pEnum); } TraceHr (ttidError, FAL, m_hrLast, FALSE, "CIterNetCon::CIterNetCon"); } // Specialization to set the proxy blanket before returning inline NOTHROW HRESULT CIterNetCon::HrNext(INetConnection ** ppConnection) { HRESULT hr = CIEnumIter::HrNext(ppConnection); if(SUCCEEDED(hr) && *ppConnection) { NcSetProxyBlanket(*ppConnection); } return hr; } VOID SetOrQueryAtLeastOneLanWithShowIcon ( IN BOOL fSet, IN BOOL fSetValue, OUT BOOL* pfQueriedValue); HRESULT HrSafeArrayFromNetConPropertiesEx ( IN NETCON_PROPERTIES_EX* pPropsEx, OUT SAFEARRAY** ppsaProperties); HRESULT HrNetConPropertiesExFromSafeArray( IN SAFEARRAY* psaProperties, OUT NETCON_PROPERTIES_EX** pPropsEx); HRESULT HrFreeNetConProperties2( NETCON_PROPERTIES_EX* pPropsEx); #endif // _NCNETCON_H_