windows-nt/Source/XPSP1/NT/net/mmc/mprsnap/infopriv.h
2020-09-26 16:20:57 +08:00

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