windows-nt/Source/XPSP1/NT/public/internal/net/inc/rasuip.h
2020-09-26 16:20:57 +08:00

389 lines
9.8 KiB
C

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// File: R A S U I P . H
//
// Contents: Private RAS APIs used by the NT5 Connections UI. These
// APIs are exported by rasdlg.dll.
//
// Notes:
//
// Author: shaunco 10 Nov 1997
//
//----------------------------------------------------------------------------
#ifndef _RASUIP_
#define _RASUIP_
#if defined (_MSC_VER)
#if ( _MSC_VER >= 1200 )
#pragma warning(push)
#endif
#if ( _MSC_VER >= 800 )
#pragma warning(disable:4001)
#pragma warning(disable:4201)
#pragma warning(disable:4214)
#pragma warning(disable:4514)
#endif
#if (_MSC_VER >= 1020)
#pragma once
#endif
#endif
#include <prsht.h>
#include <ras.h>
#include <hnetcfg.h>
#ifdef __cplusplus
extern "C" {
#endif
//+---------------------------------------------------------------------------
// RASENTRYDLG.reserved2 argument block valid when RASENTRYDLG.dwFlags
// RASEDFLAG_ShellOwned is set.
//
typedef struct
_RASEDSHELLOWNEDR2
{
// Add page routine to be called by RasEntryDlg before returning.
// Callback returns context 'lparam'.
//
LPFNADDPROPSHEETPAGE pfnAddPage;
LPARAM lparam;
// When RASEDFLAG_NewEntry and RASEDFLAG_ShellOwned are set,
// pvWizardCtx is filled in by RasEntryDlg so that the shell has
// context information with which to pass to the NccXXX APIs below.
//
LPVOID pvWizardCtx;
}
RASEDSHELLOWNEDR2;
//+---------------------------------------------------------------------------
// RAS Connection wizard APIs
//
// Flags returned from RasWizCreateNewEntry
//
#define NCC_FLAG_ALL_USERS 0x1 // Create connection for all users
#define NCC_FLAG_CREATE_INCOMING 0x2 // Create incoming connection instead
#define NCC_FLAG_SHARED 0x4
#define NCC_FLAG_FIREWALL 0x8 // If turn on Firewall
#define NCC_FLAG_GLOBALCREDS 0x10 // If the credentials is for all users
#define NCC_FLAG_DEFAULT_INTERNET 0x20 // If this is a default internet connection
// Types of connections to be used in calls to RasWizXXX
#define RASWIZ_TYPE_DIALUP 0x1
#define RASWIZ_TYPE_DIRECT 0x2
#define RASWIZ_TYPE_INCOMING 0x3
#define RASWIZ_TYPE_BROADBAND 0x4
DWORD
APIENTRY
RasWizCreateNewEntry(
IN DWORD dwRasWizType,
IN LPVOID pvData,
OUT LPWSTR pszwPbkFile,
OUT LPWSTR pszwEntryName,
OUT DWORD* pdwFlags);
DWORD
APIENTRY
RasWizGetNCCFlags(
IN DWORD dwRasWizType,
IN LPVOID pvData,
OUT DWORD * pdwFlags);
DWORD
APIENTRY
RasWizGetUserInputConnectionName (
IN LPVOID pvData,
OUT LPWSTR pszwInputName);
DWORD
APIENTRY
RasWizGetSuggestedEntryName(
IN DWORD dwRasWizType,
IN LPVOID pvData,
OUT LPWSTR pszwSuggestedName);
DWORD
APIENTRY
RasWizQueryMaxPageCount(
IN DWORD dwRasWizType);
DWORD
APIENTRY
RasWizSetEntryName(
IN DWORD dwRasWizType,
IN LPVOID pvData,
IN LPCWSTR pszwName);
DWORD
APIENTRY
RasWizIsEntryRenamable(
IN DWORD dwRasWizType,
IN LPVOID pvData,
OUT BOOL* pfRenamable);
//+---------------------------------------------------------------------------
// Inbound connection APIs
//
typedef HANDLE HRASSRVCONN;
#define RASSRV_MaxName 256
// Types of ras server connections (RASSRVCONN.dwType values)
//
#define RASSRVUI_MODEM 0
#define RASSRVUI_VPN 1
#define RASSRVUI_DCC 2
// Defines a structure that identifies a client connection
//
typedef struct _RASSRVCONN
{
DWORD dwSize; // Size of the structure (used for versioning)
HRASSRVCONN hRasSrvConn; // Handle of the connection
DWORD dwType;
WCHAR szEntryName [RASSRV_MaxName + 1];
WCHAR szDeviceName [RASSRV_MaxName + 1];
GUID Guid;
} RASSRVCONN, *LPRASSRVCONN;
// Starts the remote access service and marks it as autostart.
// If the remoteaccess service is not installed, this function
// returns an error.
DWORD
APIENTRY
RasSrvInitializeService (
VOID);
// Stops the remote access service and marks it as disabled.
DWORD
APIENTRY
RasSrvCleanupService (
VOID);
DWORD
APIENTRY
RasSrvIsServiceRunning (
OUT BOOL* pfIsRunning);
//
// Returns whether is it ok to display the "Incoming Connections"
// connection.
//
DWORD
APIENTRY
RasSrvAllowConnectionsConfig (
OUT BOOL* pfAllow);
DWORD
APIENTRY
RasSrvAddPropPages (
IN HRASSRVCONN hRasSrvConn,
IN HWND hwndParent,
IN LPFNADDPROPSHEETPAGE pfnAddPage,
IN LPARAM lParam,
IN OUT PVOID * ppvContext);
DWORD
APIENTRY
RasSrvAddWizPages (
IN LPFNADDPROPSHEETPAGE pfnAddPage,
IN LPARAM lParam,
IN OUT PVOID * ppvContext); // context should be passed in as pvData
// subsequent calls to RasWizXXX
// Function behaves anagolously to the WIN32 function RasEnumConnections but
// for client connections instead of dialout connections.
DWORD
APIENTRY
RasSrvEnumConnections (
IN OUT LPRASSRVCONN pRasSrvConn, // Buffer of array of connections.
IN LPDWORD pcb, // size in bytes of buffer
OUT LPDWORD pcConnections); // number of connections written to buffer
// Gets the status of a Ras Server Connection
DWORD
APIENTRY
RasSrvIsConnectionConnected (
IN HRASSRVCONN hRasSrvConn, // The connection in question
OUT BOOL* pfConnected); // Buffer to hold the type
// Hang up the given connection
DWORD
APIENTRY
RasSrvHangupConnection (
IN HRASSRVCONN hRasSrvConn); // The connection in question
// Has "show icons in taskbar" been checked?
DWORD
APIENTRY
RasSrvQueryShowIcon (
OUT BOOL* pfShowIcon);
// Allows the editing of ras user preferences
DWORD
APIENTRY
RasUserPrefsDlg (
HWND hwndParent);
// Enables or disables having the user manually dial
// his/her remote access server.
DWORD
APIENTRY
RasUserEnableManualDial (
IN HWND hwndParent, // parent for error dialogs
IN BOOL bLogon, // whether a user is logged in
IN BOOL bEnable ); // whether to enable or not
DWORD
APIENTRY
RasUserGetManualDial (
IN HWND hwndParent, // parent for error dialogs
IN BOOL bLogon, // whether a user is logged in
IN PBOOL pbEnabled ); // whether to enable or not
//+---------------------------------------------------------------------------
// Connection sharing API routines
//
// Defines the structure used to store information about the shared connection.
// This structure is stored as binary data in the registry, and any changes
// to it must be made with this in mind.
//
#include <packon.h>
typedef struct _RASSHARECONN
{
DWORD dwSize;
BOOL fIsLanConnection;
union {
GUID guid;
RASENTRYNAMEW name;
};
} RASSHARECONN, *LPRASSHARECONN;
#include <packoff.h>
// Flag set by 'RasQueryLanConnTable' for private LAN connections
//
#define NCCF_PRIVATE_LAN 0x1000
// Name of secure event object shared with rasauto service.
//
#define RAS_AUTO_DIAL_SHARED_CONNECTION_EVENT \
"RasAutoDialSharedConnectionEvent"
// VOID
// RasEntryToSharedConnection(
// IN LPCWSTR pszPhonebookPath,
// IN LPCWSTR pszEntryName,
// OUT LPRASSHARECONN pConn );
//
// Macro for conversion of phonebook/entry to 'RASSHARECONN'.
//
#define RasEntryToSharedConnection( _pszPhonebookPath, _pszEntryName, _pConn ) \
( \
ZeroMemory((_pConn), sizeof(RASSHARECONN)), \
(_pConn)->dwSize = sizeof(RASSHARECONN), \
(_pConn)->fIsLanConnection = FALSE, \
(_pConn)->name.dwSize = sizeof((_pConn)->name), \
(_pConn)->name.dwFlags = REN_AllUsers, \
lstrcpynW((_pConn)->name.szPhonebookPath, _pszPhonebookPath, MAX_PATH), \
lstrcpynW((_pConn)->name.szEntryName, _pszEntryName, RAS_MaxEntryName) \
)
// VOID
// RasGuidToSharedConnection(
// IN REFGUID guid,
// OUT LPRASSHARECONN pConn );
//
// Macro for conversion of LAN GUID to 'RASSHARECONN'
//
#define RasGuidToSharedConnection( _guid, _pConn ) \
( \
ZeroMemory((_pConn), sizeof(RASSHARECONN)), \
(_pConn)->dwSize = sizeof(RASSHARECONN), \
(_pConn)->fIsLanConnection = TRUE, \
CopyMemory(&(_pConn)->guid, (_guid), sizeof(GUID)) \
)
// VOID
// RasIsEqualSharedConnection(
// IN LPRASSHARECONN pConn1,
// IN LPRASSHARECONN pConn2 );
//
// Macro for comparison of 'RASSHARECONN' values
//
#define RasIsEqualSharedConnection( _pConn1, _pConn2 ) \
( \
((_pConn1)->fIsLanConnection == (_pConn2)->fIsLanConnection) && \
((_pConn1)->fIsLanConnection \
? !memcmp(&(_pConn1)->guid, &(_pConn2)->guid, sizeof(GUID)) \
: (!lstrcmpiW( \
(_pConn1)->name.szPhonebookPath, \
(_pConn2)->name.szPhonebookPath) && \
!lstrcmpiW( \
(_pConn1)->name.szEntryName, \
(_pConn2)->name.szEntryName))) \
)
DWORD
APIENTRY
RasAutoDialSharedConnection( VOID );
DWORD
APIENTRY
RasIsSharedConnection(
IN LPRASSHARECONN pConn,
OUT PBOOL pfShared );
DWORD
APIENTRY
RasQuerySharedAutoDial(
IN PBOOL pfEnabled );
DWORD
APIENTRY
RasQuerySharedConnection(
OUT LPRASSHARECONN pConn );
DWORD
APIENTRY
RasSetSharedAutoDial(
IN BOOL fEnable );
//+---------------------------------------------------------------------------
// Internal RAS APIs
//
DWORD
APIENTRY
DwRasUninitialize();
#ifdef __cplusplus
} // extern "C"
#endif
#if defined (_MSC_VER)
#if ( _MSC_VER >= 1200 )
#pragma warning(pop)
#elif ( _MSC_VER >= 800 )
#pragma warning(default:4001)
#pragma warning(default:4201)
#pragma warning(default:4214)
#pragma warning(default:4514)
#endif
#endif
#endif // _RASUIP_