//+------------------------------------------------------------------------- // // Microsoft Windows // // Copyright (C) Microsoft Corporation, 1997 - 1999 // // File: infopriv.h // //-------------------------------------------------------------------------- #ifndef _INFOPRIV_H_ #define _INFOPRIV_H_ #include "setupapi.h" HRESULT RasPhoneBookRemoveInterface(LPCTSTR pszMachine, LPCTSTR pszIf); /*--------------------------------------------------------------------------- Class: CNetcardRegistryHelper This class is provided for NT4/NT5 registry compatibility. This is a temporary class. Change to use the NetCfg APIs once they are in place, that is once they can be remoted. ---------------------------------------------------------------------------*/ class CNetcardRegistryHelper { public: CNetcardRegistryHelper(); ~CNetcardRegistryHelper(); void Initialize(BOOL fNt4, HKEY hkeyBase, LPCTSTR pszKeyBase, LPCTSTR pszMachineName); DWORD ReadServiceName(); LPCTSTR GetServiceName(); DWORD ReadTitle(); LPCTSTR GetTitle(); DWORD ReadDeviceName(); LPCTSTR GetDeviceName(); private: void FreeDevInfo(); DWORD PrivateInit(); DWORD ReadRegistryCString(LPCTSTR pszKey, LPCTSTR pszValue, HKEY hkey, CString *pstDest); CString m_stTitle; // string holding title CString m_stKeyBase; // string holding name of key in hkeyBase (NT5) CString m_stDeviceName; HKEY m_hkeyBase; // Used for Connection info HKEY m_hkeyConnection; // Keys only used for NT4 only HKEY m_hkeyService; // hkey where the service value is held CString m_stService; // string holding service name HKEY m_hkeyTitle; // hkey where the title value is held // Values used for NT5 only HDEVINFO m_hDevInfo; CString m_stMachineName; BOOL m_fInit; BOOL m_fNt4; }; class CWeakRef { public: CWeakRef(); virtual ~CWeakRef() {}; virtual void ReviveStrongRef() {}; virtual void OnLastStrongRef() {}; STDMETHOD_(ULONG, AddRef)(); STDMETHOD_(ULONG, Release)(); STDMETHOD(AddWeakRef)(); STDMETHOD(ReleaseWeakRef)(); protected: // Total number of references (strong and weak) on this object LONG m_cRef; // Number of weak references on this object LONG m_cRefWeak; // Is there a strong reference on this object? BOOL m_fStrongRef; // Has the object been told to destruct? If so, it will do // should call Destruct() in OnLastStrongRef(). BOOL m_fDestruct; // Are we in the process of calling OnLastStrongRef(). If we // are, then additional calls to AddRef() do not cause us // to wake up again. BOOL m_fInShutdown; }; #define IMPLEMENT_WEAKREF_ADDREF_RELEASE(klass) \ STDMETHODIMP_(ULONG) klass::AddRef() \ { \ return CWeakRef::AddRef(); \ } \ STDMETHODIMP_(ULONG) klass::Release() \ { \ return CWeakRef::Release(); \ } \ STDMETHODIMP klass::AddWeakRef() \ { \ return CWeakRef::AddWeakRef(); \ } \ STDMETHODIMP klass::ReleaseWeakRef() \ { \ return CWeakRef::ReleaseWeakRef(); \ } \ #define CONVERT_TO_STRONGREF(p) \ (p)->AddRef(); \ (p)->ReleaseWeakRef(); \ #define CONVERT_TO_WEAKREF(p) \ (p)->AddWeakRef(); \ (p)->Release(); \ interface IRouterInfo; interface IRtrMgrInfo; interface IInterfaceInfo; interface IRtrMgrInterfaceInfo; interface IRtrMgrProtocolInterfaceInfo; HRESULT CreateRouterDataObject(LPCTSTR pszMachineName, DATA_OBJECT_TYPES type, MMC_COOKIE cookie, ITFSComponentData *pTFSCompData, IDataObject **ppDataObject, CDynamicExtensions * pDynExt /* = NULL */, BOOL fAddedAsLocal); HRESULT CreateDataObjectFromRouterInfo(IRouterInfo *pInfo, LPCTSTR pszMachineName, DATA_OBJECT_TYPES type, MMC_COOKIE cookie, ITFSComponentData *pTFSCompData, IDataObject **ppDataObject, CDynamicExtensions * pDynExt /* = NULL */, BOOL fAddedAsLocal); HRESULT CreateDataObjectFromRtrMgrInfo(IRtrMgrInfo *pInfo, IDataObject **ppDataObject); HRESULT CreateDataObjectFromInterfaceInfo(IInterfaceInfo *pInfo, DATA_OBJECT_TYPES type, MMC_COOKIE cookie, ITFSComponentData *pTFSCompData, IDataObject **ppDataObject); HRESULT CreateDataObjectFromRtrMgrInterfaceInfo(IRtrMgrInterfaceInfo *pInfo, IDataObject **ppDataObject); HRESULT CreateDataObjectFromRtrMgrProtocolInterfaceInfo(IRtrMgrProtocolInterfaceInfo *pInfo, IDataObject **ppDataObject); #endif