182 lines
4.8 KiB
C++
182 lines
4.8 KiB
C++
|
/**********************************************************************/
|
||
|
/** Microsoft Windows/NT **/
|
||
|
/** Copyright(c) Microsoft Corporation, 1997 - 1999 **/
|
||
|
/**********************************************************************/
|
||
|
|
||
|
/*
|
||
|
rtrui.cpp
|
||
|
|
||
|
FILE HISTORY:
|
||
|
|
||
|
*/
|
||
|
|
||
|
#include "stdafx.h"
|
||
|
#include "tfschar.h"
|
||
|
#include "info.h"
|
||
|
#include "rtrui.h"
|
||
|
#include "add.h" // dialogs
|
||
|
#include "rtrstr.h"
|
||
|
#include "tregkey.h"
|
||
|
#include "reg.h" // Connect/DisconnectRegistry
|
||
|
|
||
|
//----------------------------------------------------------------------------
|
||
|
// Function: AddRmInterfacePrompt
|
||
|
//
|
||
|
// Prompts the user to select from a list of the interfaces on which
|
||
|
// a specified router-manager can be enabled.
|
||
|
//
|
||
|
// Returns TRUE if the user selects an interface, FALSE otherwise.
|
||
|
//
|
||
|
// If the user selects an interface, then on output 'ppRmInterfaceInfo'
|
||
|
// will contain a pointer to a 'CRmInterfaceInfo' describing the interface
|
||
|
// selected by the user.
|
||
|
//----------------------------------------------------------------------------
|
||
|
|
||
|
BOOL
|
||
|
AddRmInterfacePrompt(
|
||
|
IN IRouterInfo* pRouterInfo,
|
||
|
IN IRtrMgrInfo* pRmInfo,
|
||
|
OUT IRtrMgrInterfaceInfo** ppRmInterfaceInfo,
|
||
|
IN CWnd* pParent
|
||
|
) {
|
||
|
|
||
|
//
|
||
|
// Construct and display the interfaces dialog.
|
||
|
//
|
||
|
|
||
|
CRmAddInterface dlg(pRouterInfo, pRmInfo, ppRmInterfaceInfo, pParent);
|
||
|
|
||
|
if (dlg.DoModal() != IDOK) { return FALSE; }
|
||
|
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
|
||
|
//----------------------------------------------------------------------------
|
||
|
// Function: CreateRtrLibImageList
|
||
|
//
|
||
|
// Creates an imagelist containing images from the resource 'IDB_IMAGELIST'.
|
||
|
//----------------------------------------------------------------------------
|
||
|
|
||
|
BOOL
|
||
|
CreateRtrLibImageList(
|
||
|
IN CImageList* imageList
|
||
|
) {
|
||
|
|
||
|
return imageList->Create(
|
||
|
MAKEINTRESOURCE(IDB_RTRLIB_IMAGELIST), 16, 0, PALETTEINDEX(6)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
|
||
|
//----------------------------------------------------------------------------
|
||
|
// Function: AddRmProtInterfacePrompt
|
||
|
//
|
||
|
// Prompts the user to select from a list of the interfaces on which
|
||
|
// a specified routing-protocol can be enabled.
|
||
|
//
|
||
|
// Returns TRUE if the user selects an interface, FALSE otherwise.
|
||
|
//
|
||
|
// If the user selects an interface, then on output 'ppRmInterfaceInfo'
|
||
|
// will contain a pointer to a 'CRmInterfaceInfo' describing the interface
|
||
|
// selected by the user.
|
||
|
//
|
||
|
// Requires common.rc.
|
||
|
//----------------------------------------------------------------------------
|
||
|
|
||
|
BOOL
|
||
|
AddRmProtInterfacePrompt(
|
||
|
IN IRouterInfo* pRouterInfo,
|
||
|
IN IRtrMgrProtocolInfo* pRmProtInfo,
|
||
|
OUT IRtrMgrProtocolInterfaceInfo** ppRmProtInterfaceInfo,
|
||
|
IN CWnd* pParent)
|
||
|
{
|
||
|
|
||
|
//
|
||
|
// Construct and display the interfaces dialog.
|
||
|
//
|
||
|
|
||
|
CRpAddInterface dlg(pRouterInfo, pRmProtInfo, ppRmProtInterfaceInfo, pParent);
|
||
|
|
||
|
if (dlg.DoModal() != IDOK) { return FALSE; }
|
||
|
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
|
||
|
BOOL
|
||
|
AddProtocolPrompt(IN IRouterInfo *pRouter,
|
||
|
IN IRtrMgrInfo *pRm,
|
||
|
IN IRtrMgrProtocolInfo **ppRmProt,
|
||
|
IN CWnd *pParent)
|
||
|
{
|
||
|
|
||
|
//
|
||
|
// Construct and display the routing-protocol dialog.
|
||
|
//
|
||
|
|
||
|
CAddRoutingProtocol dlg(pRouter, pRm, ppRmProt, pParent);
|
||
|
|
||
|
if (dlg.DoModal() != IDOK) { return FALSE; }
|
||
|
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
static unsigned int s_cfComputerAddedAsLocal = RegisterClipboardFormat(L"MMC_MPRSNAP_COMPUTERADDEDASLOCAL");
|
||
|
|
||
|
BOOL ExtractComputerAddedAsLocal(LPDATAOBJECT lpDataObject)
|
||
|
{
|
||
|
BOOL fReturn = FALSE;
|
||
|
BOOL * pReturn;
|
||
|
pReturn = Extract<BOOL>(lpDataObject, (CLIPFORMAT) s_cfComputerAddedAsLocal, -1);
|
||
|
if (pReturn)
|
||
|
{
|
||
|
fReturn = *pReturn;
|
||
|
GlobalFree(pReturn);
|
||
|
}
|
||
|
|
||
|
return fReturn;
|
||
|
}
|
||
|
|
||
|
|
||
|
/*!--------------------------------------------------------------------------
|
||
|
NatConflictExists
|
||
|
Returns TRUE if SharedAccess is already running on the specified
|
||
|
machine.
|
||
|
Author: AboladeG
|
||
|
---------------------------------------------------------------------------*/
|
||
|
BOOL NatConflictExists(LPCTSTR lpszMachine)
|
||
|
{
|
||
|
SC_HANDLE hScm;
|
||
|
SC_HANDLE hSharedAccess;
|
||
|
BOOL fReturn = FALSE;
|
||
|
SERVICE_STATUS serviceStatus;
|
||
|
|
||
|
hScm = OpenSCManager(lpszMachine, SERVICES_ACTIVE_DATABASE, GENERIC_READ);
|
||
|
|
||
|
if (hScm)
|
||
|
{
|
||
|
hSharedAccess = OpenService(hScm, c_szSharedAccessService, GENERIC_READ);
|
||
|
|
||
|
if (hSharedAccess)
|
||
|
{
|
||
|
if (QueryServiceStatus(hSharedAccess, &serviceStatus))
|
||
|
{
|
||
|
if (SERVICE_RUNNING == serviceStatus.dwCurrentState
|
||
|
|| SERVICE_START_PENDING == serviceStatus.dwCurrentState)
|
||
|
{
|
||
|
fReturn = TRUE;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
CloseServiceHandle(hSharedAccess);
|
||
|
}
|
||
|
|
||
|
CloseServiceHandle(hScm);
|
||
|
}
|
||
|
|
||
|
return fReturn;
|
||
|
}
|