windows-nt/Source/XPSP1/NT/net/rras/ras/ui/rassrvui/rassrv.h
2020-09-26 16:20:57 +08:00

194 lines
5.6 KiB
C

/*
File Rassrv.h
Functions that perform ras server operations that can be implemented
independent of the ui.
Paul Mayfield, 10/7/97
*/
#ifndef __rassrv_h
#define __rassrv_h
// Standard includes
#include <nt.h>
#include <ntrtl.h>
#include <nturtl.h>
#include <windows.h> // Windows base lib
#include <windowsx.h>
#include <mprapi.h> // Public router api's
#include <mprapip.h> // Private router api's
#include <commctrl.h> // Common controls header
#include <lmaccess.h> // Needed to add new users
#include <lmapibuf.h> // " " " "
#include <lmerr.h> // " " " "
#include <stdlib.h> // duh
#include <uiutil.h> // Common ui utilities
#include <popupdlg.h> // Msg box utilities
#include <debug.h> // Trace/assert library
#include <inetcfgp.h> // INetCfg interfaces
#include <rasman.h> // rasman stuff used in devicedb
#include <dsrole.h> // is this machine ntw, nts, dc, etc?
#include <raserror.h> // some ras error codes we return
#include <devguid.h>
#define _PNP_POWER_
#include <ntdef.h>
#include "ndispnp.h"
#include "ntddip.h" // IP_PNP_RECONFIG_REQUEST
// temporary
#include <stdio.h> // duh
// Definition of interface between shell and ras server ui
#include <rasuip.h>
// The resource file is in a common directory so that it gets
// built into rasdlg.dll. Also, the help id file.
#include <rassrvrc.h>
#include <rassrvrh.h>
// Includes within the project
#include "utils.h"
#include "devicedb.h"
#include "hnportmapping.h"
#include "miscdb.h"
#include "userdb.h"
#include "netcfgdb.h"
#include "gentab.h"
#include "usertab.h"
#include "nettab.h"
#include "wizard.h"
#include "service.h"
#include "error.h"
#include "ipxui.h"
#include "tcpipui.h"
#include "mdm.h"
// ============================================================
// ============================================================
// Tab and property sheet identifiers.
// ============================================================
// ============================================================
// Property Sheet Page ID's
#define RASSRVUI_GENERAL_TAB 1
#define RASSRVUI_USER_TAB 2
#define RASSRVUI_ADVANCED_TAB 4
#define RASSRVUI_MULTILINK_TAB 8
// Wizard Page ID's
#define RASSRVUI_DEVICE_WIZ_TAB 16
#define RASSRVUI_VPN_WIZ_TAB 32
#define RASSRVUI_USER_WIZ_TAB 64
#define RASSRVUI_PROT_WIZ_TAB 128
#define RASSRVUI_FINISH_WIZ_TAB 256
// Wizard Page ID's for the direct connect wizard (host)
#define RASSRVUI_DCC_DEVICE_WIZ_TAB 512
// Wizard Page ID that allows us to pop up warning and
// switch to mmc
#define RASSRVUI_SWITCHMMC_WIZ_TAB 1024
// Console page id's to be used for launching mmc consoles.
#define RASSRVUI_NETWORKCONSOLE 1
#define RASSRVUI_USERCONSOLE 2
#define RASSRVUI_MPRCONSOLE 3
#define RASSRVUI_SERVICESCONSOLE 4
// Wizard page counts to report to the shell
#define RASSRVUI_WIZ_PAGE_COUNT_INCOMING 5
#define RASSRVUI_WIZ_PAGE_COUNT_SWITCH 1
#define RASSRVUI_WIZ_PAGE_COUNT_DIRECT 2
// Reasons for restarting remoteaccess at commit time
#define RASSRVUI_RESTART_REASON_NONE 0
#define RASSRVUI_RESTART_REASON_NBF_ADDED 1
#define RASSRVUI_RESTART_REASON_NBF_REMOVED 2
// ============================================================
// ============================================================
// Functions to maintain data accross property sheet pages.
// ============================================================
// ============================================================
//
// This structure defines the information that needs
// to be provided for each property sheet (wizard) page
// that uses the RasSrvMessageFilter. The structure must be
// passed in as the lParam member of the PROPSHEETPAGE of the page.
//
typedef struct _RASSRV_PAGE_CONTEXT {
DWORD dwId; // ID_XXX value below
DWORD dwType; // RASWIZ_TYPE_XXX value
PVOID pvContext; // Created with RasSrvCreateContext
} RASSRV_PAGE_CONTEXT;
#define ID_DEVICE_DATABASE 1
#define ID_USER_DATABASE 2
#define ID_PROTOCOL_DATABASE 4
#define ID_MISC_DATABASE 8
#define ID_NETCOMP_DATABASE 16
// Helper function lets us know if we should display the
// connections ras server wizard.
DWORD
APIENTRY
RasSrvAllowConnectionsWizard (
OUT BOOL* pfAllow);
// Creates a context to be used to manage information associated
// with a given page.
DWORD
RassrvCreatePageSetCtx(
OUT PVOID * ppvContext);
// Causes the remoteaccess service to not be stopped even if the context
// associated with the given property sheet page is never committed.
DWORD
RasSrvLeaveServiceRunning (
IN HWND hwndPage);
// Gets a handle to a particular database. If this database needs
// to be opened, it will be opened. In order to use this function,
// the window proc of hwndPage must first call into RasSrvMessageFilter.
DWORD
RasSrvGetDatabaseHandle(
IN HWND hwndPage,
IN DWORD dwDatabaseId,
IN HANDLE * hDatabase);
// Returns the id of the page whose handle is hwndPage
DWORD
RasSrvGetPageId (
IN HWND hwndPage,
OUT LPDWORD lpdwId);
//
// Callback function for property sheet pages that cleans up
// the page.
//
UINT
CALLBACK
RasSrvInitDestroyPropSheetCb(
IN HWND hwndPage,
IN UINT uMsg,
IN LPPROPSHEETPAGE pPropPage);
// Filters messages for RasSrv Property Pages. If this function returns
// true, the winproc of the dialog window should return true immediately.
// Otherwise message processing may continue as normal.
BOOL
RasSrvMessageFilter(
IN HWND hwndDlg,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam);
#endif