197 lines
4.6 KiB
C++
197 lines
4.6 KiB
C++
|
/**********************************************************************/
|
||
|
/** Microsoft Windows/NT **/
|
||
|
/** Copyright(c) Microsoft Corporation, 1997 - 1999 **/
|
||
|
/**********************************************************************/
|
||
|
|
||
|
/*
|
||
|
rasuser.cpp
|
||
|
Define and Implement the application class for RASUser component
|
||
|
|
||
|
|
||
|
FILE HISTORY:
|
||
|
|
||
|
*/
|
||
|
|
||
|
// Note: Proxy/Stub Information
|
||
|
// To build a separate proxy/stub DLL,
|
||
|
// run nmake -f Rasdialps.mk in the project directory.
|
||
|
|
||
|
#include "stdafx.h"
|
||
|
#include "resource.h"
|
||
|
#include "initguid.h"
|
||
|
|
||
|
#include "rasdial.h"
|
||
|
#include "Dialin.h"
|
||
|
#include "sharesdo.h"
|
||
|
|
||
|
// tfscore -- for registering extension snapin
|
||
|
#include "std.h"
|
||
|
#include "compont.h"
|
||
|
#include "compdata.h"
|
||
|
#include "register.h"
|
||
|
|
||
|
#include <atlimpl.cpp>
|
||
|
|
||
|
CComModule _Module;
|
||
|
DWORD g_dwTraceHandle = 0;
|
||
|
|
||
|
BEGIN_OBJECT_MAP(ObjectMap)
|
||
|
OBJECT_ENTRY(CLSID_RasDialin, CRasDialin)
|
||
|
END_OBJECT_MAP()
|
||
|
|
||
|
class CRasdialApp : public CWinApp
|
||
|
{
|
||
|
public:
|
||
|
virtual BOOL InitInstance();
|
||
|
virtual int ExitInstance();
|
||
|
};
|
||
|
|
||
|
CRasdialApp theApp;
|
||
|
|
||
|
BOOL CRasdialApp::InitInstance()
|
||
|
{
|
||
|
_Module.Init(ObjectMap, m_hInstance);
|
||
|
|
||
|
g_dwTraceHandle = TraceRegister(_T("rasuser"));
|
||
|
TracePrintf(g_dwTraceHandle, _T("DLL Init"));
|
||
|
g_pSdoServerPool = NULL;
|
||
|
return CWinApp::InitInstance();
|
||
|
}
|
||
|
|
||
|
int CRasdialApp::ExitInstance()
|
||
|
{
|
||
|
TracePrintf(g_dwTraceHandle, _T("DLL Exit"));
|
||
|
TraceDeregister(g_dwTraceHandle);
|
||
|
|
||
|
_Module.Term();
|
||
|
|
||
|
return CWinApp::ExitInstance();
|
||
|
}
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// Used to determine whether the DLL can be unloaded by OLE
|
||
|
|
||
|
STDAPI DllCanUnloadNow(void)
|
||
|
{
|
||
|
AFX_MANAGE_STATE(AfxGetStaticModuleState());
|
||
|
return (AfxDllCanUnloadNow()==S_OK && _Module.GetLockCount()==0) ? S_OK : S_FALSE;
|
||
|
}
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// Returns a class factory to create an object of the requested type
|
||
|
|
||
|
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
|
||
|
{
|
||
|
return _Module.GetClassObject(rclsid, riid, ppv);
|
||
|
}
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// DllRegisterServer - Adds entries to the system registry
|
||
|
|
||
|
/* extern */ const CLSID CLSID_LocalUser =
|
||
|
{ /* 5d6179c8-17ec-11d1-9aa9-00c04fd8fe93 */
|
||
|
0x5d6179c8,
|
||
|
0x17ec,
|
||
|
0x11d1,
|
||
|
{0x9a, 0xa9, 0x00, 0xc0, 0x4f, 0xd8, 0xfe, 0x93}
|
||
|
};
|
||
|
/* extern */ const GUID NODETYPE_User =
|
||
|
{ /* 5d6179cc-17ec-11d1-9aa9-00c04fd8fe93 */
|
||
|
0x5d6179cc,
|
||
|
0x17ec,
|
||
|
0x11d1,
|
||
|
{0x9a, 0xa9, 0x00, 0xc0, 0x4f, 0xd8, 0xfe, 0x93}
|
||
|
};
|
||
|
|
||
|
/* extern */ const GUID NODETYPE_LocalSecRootFolder =
|
||
|
{ /* 5d6179d3-17ec-11d1-9aa9-00c04fd8fe93 */
|
||
|
0x5d6179d3,
|
||
|
0x17ec,
|
||
|
0x11d1,
|
||
|
{0x9a, 0xa9, 0x00, 0xc0, 0x4f, 0xd8, 0xfe, 0x93}
|
||
|
};
|
||
|
|
||
|
/* extern */ const GUID NODETYPE_DsAdminDomain =
|
||
|
{ /* 19195a5b-6da0-11d0-afd3-00c04fd930c9 */
|
||
|
0x19195a5b,
|
||
|
0x6da0,
|
||
|
0x11d0,
|
||
|
{0xaf, 0xd3, 0x00, 0xc0, 0x4f, 0xd9, 0x30, 0xc9}
|
||
|
|
||
|
};
|
||
|
|
||
|
|
||
|
STDAPI DllRegisterServer(void)
|
||
|
{
|
||
|
// registers object, typelib and all interfaces in typelib
|
||
|
HRESULT hr = _Module.RegisterServer(TRUE);
|
||
|
|
||
|
// registers the object with Admin property page for User Object
|
||
|
#ifdef _REGDS
|
||
|
if(S_OK == hr)
|
||
|
hr = CRasDialin::RegisterAdminPropertyPage(true);
|
||
|
#endif
|
||
|
|
||
|
// register it as extension to localsecurity snapin
|
||
|
//
|
||
|
hr = RegisterSnapinGUID(&CLSID_RasDialin,
|
||
|
&CLSID_RasDialin, // fake, no about for now
|
||
|
&CLSID_RasDialin,
|
||
|
_T("RAS Dialin - User Node Extension"),
|
||
|
_T("1.0"),
|
||
|
FALSE);
|
||
|
ASSERT(SUCCEEDED(hr));
|
||
|
|
||
|
|
||
|
hr = RegisterAsRequiredExtensionGUID(
|
||
|
&NODETYPE_User,
|
||
|
&CLSID_RasDialin,
|
||
|
_T("Ras Dialin property page extension"),
|
||
|
EXTENSION_TYPE_PROPERTYSHEET,
|
||
|
NULL
|
||
|
);
|
||
|
ASSERT(SUCCEEDED(hr));
|
||
|
#ifdef SINGLE_SDO_CONNECTION // for share the same sdo connection for multiple users
|
||
|
|
||
|
hr = RegisterAsRequiredExtensionGUID(
|
||
|
&NODETYPE_LocalSecRootFolder,
|
||
|
&CLSID_RasDialin,
|
||
|
_T("Ras Dialin property page extension"),
|
||
|
EXTENSION_TYPE_NAMESPACE,
|
||
|
NULL
|
||
|
);
|
||
|
|
||
|
ASSERT(SUCCEEDED(hr));
|
||
|
|
||
|
hr = RegisterAsRequiredExtensionGUID(
|
||
|
&NODETYPE_DsAdminDomain,
|
||
|
&CLSID_RasDialin,
|
||
|
_T("Ras Dialin property page extension"),
|
||
|
EXTENSION_TYPE_NAMESPACE,
|
||
|
NULL
|
||
|
);
|
||
|
#endif
|
||
|
|
||
|
if(FAILED(hr))
|
||
|
return SELFREG_E_CLASS;
|
||
|
|
||
|
return S_OK;
|
||
|
}
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// DllUnregisterServer - Removes entries from the system registry
|
||
|
|
||
|
STDAPI DllUnregisterServer(void)
|
||
|
{
|
||
|
_Module.UnregisterServer();
|
||
|
#ifdef _REGDS
|
||
|
if(FAILED(CRasDialin::RegisterAdminPropertyPage(false)))
|
||
|
return SELFREG_E_CLASS;
|
||
|
#endif
|
||
|
|
||
|
return S_OK;
|
||
|
}
|
||
|
|
||
|
|
||
|
|