178 lines
4.5 KiB
C
178 lines
4.5 KiB
C
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// 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
|
||
|
|