You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1009 lines
27 KiB
1009 lines
27 KiB
// Copyright (c) 1995, Microsoft Corporation, all rights reserved
|
|
//
|
|
// pbk.h
|
|
// Remote Access phonebook file (.PBK) library
|
|
// Public header
|
|
//
|
|
// 06/20/95 Steve Cobb
|
|
|
|
|
|
#ifndef _PBK_H_
|
|
#define _PBK_H_
|
|
|
|
|
|
#include <windows.h> // Win32 core
|
|
#include <nouiutil.h> // No-HWNDs utility library
|
|
#include <ras.h> // Win32 RAS
|
|
#include <raserror.h> // Win32 RAS error codes
|
|
#include <rasfile.h> // RAS configuration file library
|
|
#include <rasman.h> // RAS Manager library
|
|
#include <rpc.h> // UUID support
|
|
#include <rasapip.h>
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Constants
|
|
//----------------------------------------------------------------------------
|
|
|
|
#define GLOBALSECTIONNAME "."
|
|
#define GLOBALSECTIONNAMENEW ".GlobalSection"
|
|
#define PREFIXSECTIONNAME ".Prefix"
|
|
#define SUFFIXSECTIONNAME ".Suffix"
|
|
|
|
#define GROUPID_Media "MEDIA="
|
|
#define GROUPKEY_Media "MEDIA"
|
|
#define GROUPID_Device "DEVICE="
|
|
#define GROUPKEY_Device "DEVICE"
|
|
#define GROUPID_NetComponents "NETCOMPONENTS="
|
|
#define GROUPKEY_NetComponents "NETCOMPONENTS"
|
|
|
|
// Project-specific maximums
|
|
//
|
|
// Note that the pbk and API use a different redial maximum than the RasDlg UI.
|
|
#define MAX_UI_REDIAL_ATTEMPTS 99
|
|
#define MAX_UI_REDIAL_CHARS 2
|
|
#define RAS_MaxRedialCount 999999999
|
|
#define RAS_RedialPause10m 600 // 600 seconds=10 min
|
|
|
|
// Pbport flags
|
|
//
|
|
#define PBP_F_PptpDevice 0x00000001
|
|
#define PBP_F_L2tpDevice 0x00000002
|
|
#define PBP_F_NullModem 0x00000004
|
|
#define PBP_F_BogusDevice 0x00000008 // pmay: 233287
|
|
#define PBP_F_PPPoEDevice 0x00000010 // gangz:whistler 345068
|
|
|
|
// ReadPhonebookFile flags
|
|
//
|
|
#define RPBF_ReadOnly 0x00000001
|
|
#define RPBF_HeadersOnly 0x00000002
|
|
#define RPBF_NoList 0x00000004
|
|
#define RPBF_NoCreate 0x00000008
|
|
#define RPBF_Router 0x00000010
|
|
#define RPBF_NoUser 0x00000020
|
|
#define RPBF_HeaderType 0x00000040
|
|
#define RPBF_AllUserPbk 0x00000080 // If no path, then global .pbk 346918
|
|
|
|
// PBENTRY.dwUsage
|
|
#define PBK_ENTRY_USE_F_Internet 0x1 // connection to Internet
|
|
|
|
// Base protocol definitions (see dwBaseProtocol).
|
|
//
|
|
#define BP_Ppp 1
|
|
#define BP_Slip 2
|
|
#define BP_Ras 3
|
|
|
|
#ifdef AMB
|
|
|
|
// Authentication strategy definitions (see dwAuthentication).
|
|
//
|
|
#define AS_Default -1
|
|
#define AS_PppThenAmb 0
|
|
#define AS_AmbThenPpp 1
|
|
#define AS_PppOnly 2
|
|
#define AS_AmbOnly 3
|
|
|
|
#endif
|
|
|
|
// Net protocol bit definitions (see dwfExcludedProtocols)
|
|
//
|
|
// (The NP_* definitions have moved to nouiutil.h with the
|
|
// GetInstalledProtocols routine)
|
|
|
|
// IP address source definitions (see dwIpAddressSource)
|
|
//
|
|
#define ASRC_ServerAssigned 1 // For router means "the ones in NCPA"
|
|
#define ASRC_RequireSpecific 2
|
|
#define ASRC_None 3 // Router only
|
|
|
|
// Security restrictions on authentication (see dwAuthRestrictions)
|
|
//
|
|
// Note: AR_AuthTerminal is defunct and is not written to the phonebook by the
|
|
// new library. It is, however, read and translated into AR_AuthAny,
|
|
// fAutoLogon=0, and an after dialing terminal.
|
|
//
|
|
// Note: The AR_AuthXXX ordinals are replaced with AR_F_AuthXXX flags in NT5
|
|
// to support the fact that these flags are not mutually exclusive.
|
|
// You'll know if you need to upgrade the dwAuthRestrictions variable
|
|
// because old phone books have this value set to 0 or have some of the
|
|
// bottom 3 bits set.
|
|
//
|
|
// Note: The AR_F_AuthCustom bit is used a little differently. It indicates
|
|
// that the settings are made in "advanced" mode rather than "typical"
|
|
// mode. In "typical" mode the bits MUST correspond to one of the
|
|
// AR_F_TypicalXxx sets.
|
|
//
|
|
// Note: The AR_F_AuthEAP bit is mutually exclusive of all other bits, except
|
|
// the AR_F_AuthCustom bit. When AR_F_AuthEap is specified without the
|
|
// AR_F_AuthCustom bit EAP_TLS_PROTOCOL should be assumed.
|
|
//
|
|
// Note: The AR_F_AuthW95MSCHAP flag will not be set in the UI unless
|
|
// AR_F_AuthMSCHAP is set. This is a usability decision to steer user
|
|
// away from misinterpreting the meaning of the W95 bit.
|
|
//
|
|
// The old scalar values (which should no eliminated from all non-PBK-upgrade
|
|
// code).
|
|
//
|
|
#define AR_AuthAny 0 // Upgrade to AR_F_TypicalUnsecure
|
|
#define AR_AuthTerminal 1 // Eliminate during upgrade
|
|
#define AR_AuthEncrypted 2 // Upgrade to AR_F_TypicalSecure
|
|
#define AR_AuthMsEncrypted 3 // Upgrade to AR_F_AuthMSCHAP
|
|
#define AR_AuthCustom 4 // Upgrade ORs in AR_F_AuthEAP
|
|
|
|
// The new bitmask style flags.
|
|
//
|
|
#define AR_F_AuthPAP 0x00000008
|
|
#define AR_F_AuthSPAP 0x00000010
|
|
#define AR_F_AuthMD5CHAP 0x00000020
|
|
#define AR_F_AuthMSCHAP 0x00000040
|
|
#define AR_F_AuthEAP 0x00000080 // See note above
|
|
#define AR_F_AuthCustom 0x00000100 // See note above
|
|
#define AR_F_AuthMSCHAP2 0x00000200
|
|
#define AR_F_AuthW95MSCHAP 0x00000400 // See note above
|
|
|
|
// the bitmask for IPSec Policy
|
|
#define AR_F_IpSecPSK 0x1
|
|
#define AR_F_IpSecUserCerts 0x2
|
|
#define AR_F_IpSecSpecificCerts 0x4
|
|
|
|
#define AR_F_AuthAnyMSCHAP (AR_F_AuthMSCHAP | AR_F_AuthW95MSCHAP | AR_F_AuthMSCHAP2)
|
|
#define AR_F_AuthNoMPPE (AR_F_AuthPAP | AR_F_AuthSPAP | AR_F_AuthMD5CHAP)
|
|
|
|
// "Typical" authentication setting masks. See 'dwAuthRestrictions'.
|
|
//
|
|
#define AR_F_TypicalUnsecure (AR_F_AuthPAP | AR_F_AuthSPAP | AR_F_AuthMD5CHAP | AR_F_AuthMSCHAP | AR_F_AuthMSCHAP2)
|
|
#define AR_F_TypicalSecure (AR_F_AuthMD5CHAP | AR_F_AuthMSCHAP | AR_F_AuthMSCHAP2)
|
|
#define AR_F_TypicalCardOrCert (AR_F_AuthEAP)
|
|
|
|
// "Typical" authentication setting constants. See 'dwTypicalAuth'.
|
|
//
|
|
#define TA_Unsecure 1
|
|
#define TA_Secure 2
|
|
#define TA_CardOrCert 3
|
|
|
|
// Script mode (see dwScriptMode)
|
|
//
|
|
#define SM_None 0
|
|
#define SM_Terminal 1
|
|
#define SM_ScriptWithTerminal 2
|
|
#define SM_ScriptOnly 3
|
|
|
|
// Miscellaneous "no value" constants.
|
|
//
|
|
#define XN_None 0 // No X25 network
|
|
#define CPW_None -1 // No cached password
|
|
|
|
// Description field. Move to ras.h if/when supported by
|
|
// RasGet/SetEntryProperties API.
|
|
//
|
|
#define RAS_MaxDescription 200
|
|
|
|
// 'OverridePref' bits. Set indicates the corresponding value read from the
|
|
// phonebook should be used. Clear indicates the global user preference
|
|
// should be used.
|
|
//
|
|
#define RASOR_RedialAttempts 0x00000001 // Always set in NT5
|
|
#define RASOR_RedialSeconds 0x00000002 // Always set in NT5
|
|
#define RASOR_IdleDisconnectSeconds 0x00000004 // Always set in NT5
|
|
#define RASOR_RedialOnLinkFailure 0x00000008 // Always set in NT5
|
|
#define RASOR_PopupOnTopWhenRedialing 0x00000010
|
|
#define RASOR_CallbackMode 0x00000020
|
|
|
|
// 'DwDataEncryption' codes. These are now bitmask-ish for the convenience of
|
|
// the UI in building capability masks, though more than one bit will never be
|
|
// set in 'dwDataEncryption'.
|
|
//
|
|
#define DE_None 0x00000000 // Do not encrypt
|
|
#define DE_IfPossible 0x00000008 // Request encryption but none OK
|
|
#define DE_Require 0x00000100 // Require encryption of any strength
|
|
#define DE_RequireMax 0x00000200 // Require maximum strength encryption
|
|
|
|
// The following bit values are now defunct and are converted during phonebook
|
|
// upgrade to one of the above set. References should be eliminated from
|
|
// non-PBK code.
|
|
//
|
|
#define DE_Mppe40bit 0x00000001 // Old DE_Weak. Setting for "Always encrypt data"
|
|
#define DE_Mppe128bit 0x00000002 // Old De_Strong. Setting for "Always encrypt data"
|
|
#define DE_IpsecDefault 0x00000004 // Setting for "Always encrypt data" for l2tp
|
|
#define DE_VpnAlways 0x00000010 // Setting for vpn conn to "Always encrypt data"
|
|
#define DE_PhysAlways (DE_Mppe40bit | DE_Mppe128bit)
|
|
|
|
// 'dwDnsFlags' settings
|
|
//
|
|
// Used to determine the dns suffix registration behavior for an entry
|
|
//
|
|
// When 'dwDnsFlags' is 0, it means 'do not register'
|
|
//
|
|
#define DNS_RegPrimary 0x1 // register w/ primary domain suffix
|
|
#define DNS_RegPerConnection 0x2 // register w/ per-connection suffix
|
|
#define DNS_RegDhcpInform 0x4 // register w/ dhcp informed suffix
|
|
#define DNS_RegDefault (DNS_RegPrimary)
|
|
|
|
// 'dwIpNbtFlags' settings
|
|
//
|
|
// Used to determine the whether to enable nbt over tcpip for the connection
|
|
//
|
|
#define PBK_ENTRY_IP_NBT_Enable 1
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Data types
|
|
//-----------------------------------------------------------------------------
|
|
|
|
// Provides shorthand to identify devices without re-parsing RAS Manager
|
|
// strings. "Other" is anything not recognized as another specific type.
|
|
//
|
|
// Note: This datatype is stored in the registry preferences so the values
|
|
// must not change over time. For this reason, I have hard-coded the
|
|
// value of each enumberated type.
|
|
//
|
|
typedef enum
|
|
_PBDEVICETYPE
|
|
{
|
|
PBDT_None = 0,
|
|
PBDT_Null = 1,
|
|
PBDT_Other = 2,
|
|
PBDT_Modem = 3,
|
|
PBDT_Pad = 4,
|
|
PBDT_Switch = 5,
|
|
PBDT_Isdn = 6,
|
|
PBDT_X25 = 7,
|
|
PBDT_ComPort = 8, // added for dcc wizard (nt5)
|
|
PBDT_Irda = 10, // added for nt5
|
|
PBDT_Vpn = 11,
|
|
PBDT_Serial = 12,
|
|
PBDT_Atm = 13,
|
|
PBDT_Parallel = 14,
|
|
PBDT_Sonet = 15,
|
|
PBDT_Sw56 = 16,
|
|
PBDT_FrameRelay = 17,
|
|
PBDT_PPPoE = 18
|
|
}
|
|
PBDEVICETYPE;
|
|
|
|
|
|
// RAS port information read from RASMAN.
|
|
//
|
|
// Each port (and link) is uniquely identified by port name. If it were only
|
|
// that simple...
|
|
//
|
|
// In the old RAS model, the port name was the unique identifier that was
|
|
// presented to the user, and the user can have two same-type devices on two
|
|
// different ports.
|
|
//
|
|
// In TAPI/Unimodem, the "friendly" device name is the unique identifier
|
|
// that's presented to the user and the corresponding port is a property of
|
|
// the device. If the port is changed and you dial it still finds the device
|
|
// you originally selected. If you swap two devices on two ports it uses the
|
|
// one with the matching unique device name. NT5 will follow this model.
|
|
//
|
|
typedef struct
|
|
_PBPORT
|
|
{
|
|
// The port name is always unique, if configured. Unconfigured port names
|
|
// might not be unique. This is never NULL.
|
|
//
|
|
TCHAR* pszPort;
|
|
|
|
// Indicates the port is actually configured and not a remnant of an old
|
|
// configuration read from the phonebook.
|
|
//
|
|
BOOL fConfigured;
|
|
|
|
// The device name is the one from RASMAN when 'fConfigured' or the one
|
|
// from the phonebook if not. May be NULL with unconfigured ports as it
|
|
// was not stored in old phonebooks.
|
|
//
|
|
TCHAR* pszDevice;
|
|
|
|
// The media as it appears in the MEDIA= lines in the phonebook. This is
|
|
// usually but not always (for obscure historical reasons) the same as the
|
|
// RASMAN media. See PbMedia.
|
|
//
|
|
TCHAR* pszMedia;
|
|
|
|
// Shorthand device type code derived from the RASMAN device type string.
|
|
//
|
|
PBDEVICETYPE pbdevicetype;
|
|
|
|
// RASET_* entry type code of the link. This is provided for the
|
|
// convenience of the UI during link configuration.
|
|
//
|
|
DWORD dwType;
|
|
|
|
// PBP_F_* flags that yield additional information concerning this port
|
|
// that may be of use in rendering UI.
|
|
DWORD dwFlags;
|
|
|
|
// These are default settings read from RASMAN and are valid for modems
|
|
// only. See AppendPbportToList.
|
|
//
|
|
DWORD dwBpsDefault;
|
|
BOOL fHwFlowDefault;
|
|
BOOL fEcDefault;
|
|
BOOL fEccDefault;
|
|
DWORD fSpeakerDefault;
|
|
DWORD dwModemProtDefault;
|
|
DTLLIST* pListProtocols;
|
|
|
|
// These are valid only for modems.
|
|
//
|
|
BOOL fScriptBeforeTerminal;
|
|
BOOL fScriptBefore;
|
|
TCHAR* pszScriptBefore;
|
|
}
|
|
PBPORT;
|
|
|
|
|
|
// Phonebook entry link phone number information.
|
|
//
|
|
typedef struct
|
|
_PBPHONE
|
|
{
|
|
TCHAR* pszAreaCode;
|
|
DWORD dwCountryCode;
|
|
DWORD dwCountryID;
|
|
TCHAR* pszPhoneNumber;
|
|
BOOL fUseDialingRules;
|
|
TCHAR* pszComment;
|
|
}
|
|
PBPHONE;
|
|
|
|
|
|
// Phonebook entry link information. One per link, multiple per multi-link.
|
|
//
|
|
typedef struct
|
|
_PBLINK
|
|
{
|
|
// Information about the port/device to which this link is attached.
|
|
//
|
|
PBPORT pbport;
|
|
|
|
// These fields are set for modems only. See SetDefaultModemSettings.
|
|
//
|
|
DWORD dwBps;
|
|
BOOL fHwFlow;
|
|
BOOL fEc;
|
|
BOOL fEcc;
|
|
DWORD fSpeaker;
|
|
DWORD dwModemProtocol; // pmay: 228565
|
|
|
|
// These fields are set for ISDN only. 'LChannels' and 'fCompression' are
|
|
// not used unless 'fProprietaryIsdn' is set.
|
|
//
|
|
BOOL fProprietaryIsdn;
|
|
LONG lLineType;
|
|
BOOL fFallback;
|
|
BOOL fCompression;
|
|
LONG lChannels;
|
|
|
|
// Address and size of opaque device configuration block created/edited by
|
|
// TAPI. Currently, there are no TAPI devices that provide blob-editing
|
|
// acceptable to RAS so these field are unused.
|
|
//
|
|
BYTE* pTapiBlob;
|
|
DWORD cbTapiBlob;
|
|
|
|
// Phone number information for the link.
|
|
//
|
|
// Note: The 'iLastSelectedPhone' field is used only when
|
|
// 'fTryNextAlternateOnFail' is clear. Otherwise, it is ignored and
|
|
// assumed 0 (top of list). See bug 150958.
|
|
//
|
|
DTLLIST* pdtllistPhones;
|
|
DWORD iLastSelectedPhone;
|
|
BOOL fPromoteAlternates;
|
|
BOOL fTryNextAlternateOnFail;
|
|
|
|
// Indicates the link is enabled. All links appearing in the file are
|
|
// enabled. This is provided for the convenience of the UI during link
|
|
// configuration.
|
|
//
|
|
BOOL fEnabled;
|
|
}
|
|
PBLINK;
|
|
|
|
|
|
// Phonebook entry information.
|
|
//
|
|
typedef struct
|
|
_PBENTRY
|
|
{
|
|
// Arbitrary name of entry and it's RASET_* entry type code.
|
|
//
|
|
TCHAR* pszEntryName;
|
|
DWORD dwType;
|
|
|
|
// General page fields.
|
|
//
|
|
DTLLIST* pdtllistLinks;
|
|
BOOL fSharedPhoneNumbers;
|
|
BOOL fGlobalDeviceSettings; // whistler bug 281306
|
|
BOOL fShowMonitorIconInTaskBar;
|
|
TCHAR* pszPrerequisiteEntry;
|
|
TCHAR* pszPrerequisitePbk;
|
|
TCHAR* pszPreferredPort;
|
|
TCHAR* pszPreferredDevice;
|
|
|
|
//For .Net 639551
|
|
//
|
|
DWORD dwPreferredBps; // Port Speed
|
|
BOOL fPreferredHwFlow; // Hardware Flow Control
|
|
BOOL fPreferredEc; // Error control protocol
|
|
BOOL fPreferredEcc; // Compression Control
|
|
DWORD fPreferredSpeaker; // Enable Modem Speaker
|
|
|
|
DWORD dwPreferredModemProtocol; //For whislter bug 402522
|
|
|
|
// Options page fields.
|
|
//
|
|
// Note: Fields marked (1) are ignored when 'fAutoLogon' is set. Field
|
|
// marked (2) *may* be set when 'fPreviewUserPw' is not also set.
|
|
// In this case it means to include the domain in the authentication
|
|
// but to to prompt only when the 'fPreviewUserPw' is set.
|
|
// Otherwise, "save PW" with a domain does not include the domain
|
|
// (MarkL problem) which is wrong. See also bug 212963 and 261374.
|
|
//
|
|
BOOL fShowDialingProgress;
|
|
BOOL fPreviewUserPw; // See above: 1
|
|
BOOL fPreviewDomain; // See above: 1, 2
|
|
BOOL fPreviewPhoneNumber;
|
|
|
|
DWORD dwDialMode;
|
|
DWORD dwDialPercent;
|
|
DWORD dwDialSeconds;
|
|
DWORD dwHangUpPercent;
|
|
DWORD dwHangUpSeconds;
|
|
|
|
// How the connection was configured to be used.
|
|
//
|
|
DWORD dwUseFlags; // See PBK_ENTRY_USE_F_*
|
|
|
|
// IPSec Policy fields for whisler bug 193987 gangz
|
|
//
|
|
DWORD dwIpSecFlags;
|
|
|
|
// These fields are used in place of the equivalent user preference only
|
|
// when the corresponding 'dwfOverridePref' bit is set. In NT5, the
|
|
// indicated fields become always per-entry, i.e. the corresponding
|
|
// override bits are always set.
|
|
//
|
|
DWORD dwfOverridePref;
|
|
|
|
DWORD dwRedialAttempts; // Always per-entry in NT5
|
|
DWORD dwRedialSeconds; // Always per-entry in NT5
|
|
LONG lIdleDisconnectSeconds; // Always per-entry in NT5
|
|
BOOL fRedialOnLinkFailure; // Always per-entry in NT5
|
|
|
|
// Security page fields.
|
|
//
|
|
DWORD dwAuthRestrictions;
|
|
DWORD dwVpnStrategy; // Valid for vpn entries only. see VS_xxx
|
|
DWORD dwDataEncryption;
|
|
BOOL fAutoLogon; // See dependencies on Option page flags
|
|
BOOL fUseRasCredentials;
|
|
|
|
// The selection in the "Typical" security listbox. This is for the UI's
|
|
// use only. Others should refer to 'dwAuthRestrictions' for this
|
|
// information.
|
|
//
|
|
DWORD dwTypicalAuth;
|
|
|
|
// Note: CustomAuth fields have meaning only when dwAuthRestrictions
|
|
// includes AR_F_AuthCustom. If the AR_F_Eap flag is set without
|
|
// AR_F_AuthCustom, it should be assumed to be the
|
|
// 'EAPCFG_DefaultKey' protocol, currently EAP_TLS_PROTOCOL.
|
|
//
|
|
DWORD dwCustomAuthKey;
|
|
BYTE* pCustomAuthData;
|
|
DWORD cbCustomAuthData;
|
|
|
|
BOOL fScriptAfterTerminal;
|
|
BOOL fScriptAfter;
|
|
TCHAR* pszScriptAfter;
|
|
DWORD dwCustomScript;
|
|
|
|
TCHAR* pszX25Network;
|
|
TCHAR* pszX25Address;
|
|
TCHAR* pszX25UserData;
|
|
TCHAR* pszX25Facilities;
|
|
|
|
// Network page fields.
|
|
//
|
|
DWORD dwBaseProtocol;
|
|
DWORD dwfExcludedProtocols;
|
|
BOOL fLcpExtensions;
|
|
BOOL fSwCompression;
|
|
BOOL fNegotiateMultilinkAlways;
|
|
BOOL fSkipNwcWarning;
|
|
BOOL fSkipDownLevelDialog;
|
|
BOOL fSkipDoubleDialDialog;
|
|
|
|
BOOL fShareMsFilePrint;
|
|
BOOL fBindMsNetClient;
|
|
|
|
// List of KEYVALUE nodes containing any key/value pairs found in the
|
|
// NETCOMPONENT group of the entry.
|
|
//
|
|
DTLLIST* pdtllistNetComponents;
|
|
|
|
#ifdef AMB
|
|
|
|
// Note: dwAuthentication is read-only. The phonebook file value of this
|
|
// parameter is set by the RasDial API based on the result of
|
|
// authentication attempts.
|
|
//
|
|
DWORD dwAuthentication;
|
|
|
|
#endif
|
|
|
|
// TCPIP settings sheet PPP or SLIP configuration information.
|
|
// 'DwBaseProtocol' determines which.
|
|
//
|
|
BOOL fIpPrioritizeRemote;
|
|
BOOL fIpHeaderCompression;
|
|
TCHAR* pszIpAddress;
|
|
TCHAR* pszIpDnsAddress;
|
|
TCHAR* pszIpDns2Address;
|
|
TCHAR* pszIpWinsAddress;
|
|
TCHAR* pszIpWins2Address;
|
|
DWORD dwIpAddressSource; // PPP only
|
|
DWORD dwIpNameSource; // PPP only
|
|
DWORD dwFrameSize; // SLIP only
|
|
DWORD dwIpDnsFlags; // DNS_* values
|
|
DWORD dwIpNbtFlags; // PBK_ENTRY_IP_NBT_*
|
|
DWORD dwTcpWindowSize; // Whistler bug 300933. 0=default
|
|
TCHAR* pszIpDnsSuffix; // The dns suffix for this connection
|
|
|
|
// Router page.
|
|
//
|
|
DWORD dwCallbackMode;
|
|
BOOL fAuthenticateServer;
|
|
|
|
// Other fields not shown in UI.
|
|
//
|
|
TCHAR* pszCustomDialDll;
|
|
TCHAR* pszCustomDialFunc;
|
|
|
|
//
|
|
// custom dialer name
|
|
//
|
|
TCHAR* pszCustomDialerName;
|
|
|
|
// The UID of the cached password is fixed at entry creation. The GUID is
|
|
// also created at entry creation and used for inter-machine uniqueness.
|
|
// This is currently used to identify an IP configuration to the external
|
|
// TCP/IP dialogs.
|
|
//
|
|
DWORD dwDialParamsUID;
|
|
GUID* pGuid;
|
|
|
|
// To translate user's old entries, the user name and domain are read and
|
|
// used as authentication defaults if no cached credentials exist. They
|
|
// are not rewritten to the entry.
|
|
//
|
|
TCHAR* pszOldUser;
|
|
TCHAR* pszOldDomain;
|
|
|
|
// Status flags. 'fDirty' is set when the entry has changed so as to
|
|
// differ from the phonebook file on disk. 'fCustom' is set when the
|
|
// entry contains a MEDIA and DEVICE (so RASAPI is able to read it) but
|
|
// was not created by us. When 'fCustom' is set only 'pszEntry' is
|
|
// guaranteed valid and the entry cannot be edited.
|
|
//
|
|
BOOL fDirty;
|
|
BOOL fCustom;
|
|
}
|
|
PBENTRY;
|
|
|
|
|
|
// Phonebook (.PBK) file information.
|
|
//
|
|
typedef struct
|
|
_PBFILE
|
|
{
|
|
// Handle of phone book file.
|
|
//
|
|
HRASFILE hrasfile;
|
|
|
|
// Fully qualified path to the phonebook.
|
|
//
|
|
TCHAR* pszPath;
|
|
|
|
// Phonebook mode, system, personal, or alternate.
|
|
//
|
|
DWORD dwPhonebookMode;
|
|
|
|
// Unsorted list of PBENTRY. The list is manipulated by the Entry
|
|
// dialogs.
|
|
//
|
|
DTLLIST* pdtllistEntries;
|
|
|
|
HANDLE hConnection;
|
|
}
|
|
PBFILE;
|
|
|
|
typedef void (WINAPI *PBKENUMCALLBACK)( PBFILE *, VOID * );
|
|
|
|
|
|
// The callback number for a device. This type is a node in the
|
|
// 'pdllistCallbackNumbers' below.
|
|
//
|
|
typedef struct
|
|
_CALLBACKNUMBER
|
|
{
|
|
TCHAR* pszDevice;
|
|
TCHAR* pszCallbackNumber;
|
|
}
|
|
CALLBACKNUMBER;
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Prototypes
|
|
//----------------------------------------------------------------------------
|
|
|
|
VOID
|
|
ChangeEntryType(
|
|
PBENTRY* ppbentry,
|
|
DWORD dwType );
|
|
|
|
DTLNODE*
|
|
CloneEntryNode(
|
|
DTLNODE* pdtlnodeSrc );
|
|
|
|
VOID
|
|
ClosePhonebookFile(
|
|
IN OUT PBFILE* pFile );
|
|
|
|
DWORD
|
|
CopyToPbport(
|
|
IN PBPORT* ppbportDst,
|
|
IN PBPORT* ppbportSrc );
|
|
|
|
DTLNODE*
|
|
CreateEntryNode(
|
|
BOOL fCreateLink );
|
|
|
|
DTLNODE*
|
|
CreateLinkNode(
|
|
void );
|
|
|
|
DTLNODE*
|
|
CreatePhoneNode(
|
|
void );
|
|
|
|
DTLNODE*
|
|
CreatePortNode(
|
|
void );
|
|
|
|
VOID
|
|
DestroyEntryNode(
|
|
IN DTLNODE* pdtlnode );
|
|
|
|
VOID
|
|
DestroyEntryTypeNode(
|
|
IN DTLNODE *pdtlnode );
|
|
|
|
VOID
|
|
DestroyLinkNode(
|
|
IN DTLNODE* pdtlnode );
|
|
|
|
VOID
|
|
DestroyPhoneNode(
|
|
IN DTLNODE* pdtlnode );
|
|
|
|
VOID
|
|
DestroyPortNode(
|
|
IN DTLNODE* pdtlnode );
|
|
|
|
VOID
|
|
DestroyProtocolNode(
|
|
IN DTLNODE* pdtlnode );
|
|
|
|
DTLNODE*
|
|
DuplicateEntryNode(
|
|
DTLNODE* pdtlnodeSrc );
|
|
|
|
DTLNODE*
|
|
DuplicateLinkNode(
|
|
IN DTLNODE* pdtlnodeSrc );
|
|
|
|
|
|
DTLNODE*
|
|
DuplicatePhoneNode(
|
|
IN DTLNODE* pdtlnodeSrc );
|
|
|
|
DTLNODE*
|
|
DuplicateProtocolNode(
|
|
IN DTLNODE* pdtlnodeSrc );
|
|
|
|
VOID
|
|
EnableOrDisableNetComponent(
|
|
IN PBENTRY* pEntry,
|
|
IN LPCTSTR pszComponent,
|
|
IN BOOL fEnable);
|
|
|
|
BOOL
|
|
FIsNetComponentListed(
|
|
IN PBENTRY* pEntry,
|
|
IN LPCTSTR pszComponent,
|
|
OUT BOOL* pfEnabled,
|
|
OUT KEYVALUE** ppKv);
|
|
|
|
DTLNODE*
|
|
EntryNodeFromName(
|
|
IN DTLLIST* pdtllistEntries,
|
|
IN LPCTSTR pszName );
|
|
|
|
DWORD
|
|
EntryTypeFromPbport(
|
|
IN PBPORT* ppbport );
|
|
|
|
BOOL
|
|
GetDefaultPhonebookPath(
|
|
IN DWORD dwFlags,
|
|
OUT TCHAR** ppszPath );
|
|
|
|
DWORD
|
|
GetOverridableParam(
|
|
IN PBUSER* pUser,
|
|
IN PBENTRY* pEntry,
|
|
IN DWORD dwfRasorBit );
|
|
|
|
BOOL
|
|
GetPhonebookPath(
|
|
IN PBUSER* pUser,
|
|
IN DWORD dwFlags,
|
|
OUT TCHAR** ppszPath,
|
|
OUT DWORD* pdwPhonebookMode );
|
|
|
|
BOOL
|
|
GetPhonebookDirectory(
|
|
IN DWORD dwPhonebookMode,
|
|
OUT TCHAR* pszPathBuf );
|
|
|
|
BOOL
|
|
GetPersonalPhonebookPath(
|
|
IN TCHAR* pszFile,
|
|
OUT TCHAR* pszPathBuf );
|
|
|
|
BOOL
|
|
GetPublicPhonebookPath(
|
|
OUT TCHAR* pszPathBuf );
|
|
|
|
DWORD
|
|
InitializePbk(
|
|
void );
|
|
|
|
DWORD
|
|
InitPersonalPhonebook(
|
|
OUT TCHAR** ppszFile );
|
|
|
|
BOOL
|
|
IsPublicPhonebook(
|
|
IN LPCTSTR pszPhonebookPath );
|
|
|
|
DWORD
|
|
ReadEntryFromSystem(
|
|
IN LPCTSTR pszPhonebook,
|
|
IN LPCTSTR pszEntry,
|
|
IN DWORD dwFlags,
|
|
IN OUT PBFILE *pFile,
|
|
OUT DTLNODE **ppdtlnode,
|
|
OUT OPTIONAL WCHAR **ppszFullPath);
|
|
|
|
DWORD
|
|
GetPbkAndEntryName(
|
|
IN LPCTSTR pszPhonebook,
|
|
IN LPCTSTR pszEntry,
|
|
IN DWORD dwFlags,
|
|
OUT PBFILE *pFile,
|
|
OUT DTLNODE **ppdtlnode);
|
|
|
|
DWORD
|
|
LoadPadsList(
|
|
OUT DTLLIST** ppdtllistPads );
|
|
|
|
DWORD
|
|
LoadPhonebookFile(
|
|
IN TCHAR* pszPhonebookPath,
|
|
IN TCHAR* pszSection,
|
|
IN BOOL fHeadersOnly,
|
|
IN BOOL fReadOnly,
|
|
OUT HRASFILE* phrasfile,
|
|
OUT BOOL* pfPersonal );
|
|
|
|
DWORD
|
|
LoadPortsList(
|
|
OUT DTLLIST** ppdtllistPorts );
|
|
|
|
DWORD
|
|
LoadPortsList2(
|
|
IN HANDLE hConnection,
|
|
OUT DTLLIST** ppdtllistPorts,
|
|
IN BOOL fRouter );
|
|
|
|
DWORD
|
|
LoadScriptsList(
|
|
IN HANDLE hConnection,
|
|
OUT DTLLIST** ppdtllistScripts );
|
|
|
|
PBDEVICETYPE
|
|
PbdevicetypeFromPszType(
|
|
IN TCHAR* pszDeviceType );
|
|
|
|
PBDEVICETYPE
|
|
PbdevicetypeFromPszTypeA(
|
|
IN CHAR* pszDeviceType );
|
|
|
|
PBPORT*
|
|
PpbportFromPortAndDeviceName(
|
|
IN DTLLIST* pdtllistPorts,
|
|
IN TCHAR* pszPort,
|
|
IN TCHAR* pszDevice );
|
|
|
|
PBPORT*
|
|
PpbportFromNT4PortandDevice(
|
|
IN DTLLIST* pdtlllistPorts,
|
|
IN TCHAR* pszPort,
|
|
IN TCHAR* pszDevice);
|
|
|
|
DWORD
|
|
RdtFromPbdt(PBDEVICETYPE pbdt,
|
|
DWORD dwFlags);
|
|
|
|
DWORD
|
|
CalculatePhonebookPath(
|
|
IN LPCTSTR pszPhonebookPath,
|
|
IN PBUSER* pUser,
|
|
IN DWORD dwFlags,
|
|
OUT DWORD* lpdwMode,
|
|
OUT LPTSTR* ppszFullPath);
|
|
|
|
DWORD
|
|
ReadPhonebookFile(
|
|
IN LPCTSTR pszPhonebookPath,
|
|
IN PBUSER* pUser,
|
|
IN LPCTSTR pszSection,
|
|
IN DWORD dwFlags,
|
|
OUT PBFILE* pFile );
|
|
|
|
TCHAR *pszDeviceTypeFromRdt(
|
|
RASDEVICETYPE rdt);
|
|
|
|
BOOL
|
|
SetDefaultModemSettings(
|
|
IN PBLINK* pLink );
|
|
|
|
DWORD
|
|
SetPersonalPhonebookInfo(
|
|
IN BOOL fPersonal,
|
|
IN TCHAR* pszPath );
|
|
|
|
VOID
|
|
TerminatePbk(
|
|
void );
|
|
|
|
DWORD
|
|
WritePhonebookFile(
|
|
IN PBFILE* pFile,
|
|
IN LPCTSTR pszSectionToDelete );
|
|
|
|
DWORD
|
|
UpgradePhonebookFile(
|
|
IN LPCTSTR pszPhonebookPath,
|
|
IN PBUSER* pUser,
|
|
OUT BOOL* pfUpgraded );
|
|
|
|
BOOL
|
|
ValidateAreaCode(
|
|
IN OUT TCHAR* pszAreaCode );
|
|
|
|
BOOL
|
|
ValidateEntryName(
|
|
IN LPCTSTR pszEntry );
|
|
|
|
|
|
BOOL
|
|
IsRouterPhonebook(LPCTSTR pszPhonebook);
|
|
|
|
DWORD
|
|
DwPbentryToDetails(
|
|
IN PBENTRY* pEntry,
|
|
IN LPCWSTR pszPhonebookPath,
|
|
IN BOOL fIsAllUsersPbk,
|
|
OUT RASENUMENTRYDETAILS* pDetails);
|
|
|
|
DWORD
|
|
DwSendRasNotification(
|
|
IN RASEVENTTYPE Type,
|
|
IN PBENTRY* pEntry,
|
|
IN LPCTSTR pszPhonebookPath,
|
|
IN HANDLE hData); // Extra Type-specific info
|
|
|
|
DWORD
|
|
DwGetCustomDllEntryPoint(
|
|
LPCTSTR lpszPhonebook,
|
|
LPCTSTR lpszEntry,
|
|
BOOL *pfCustomDllSpecified,
|
|
FARPROC *pfnCustomEntryPoint,
|
|
HINSTANCE *phInstDll,
|
|
DWORD dwFnId,
|
|
LPTSTR pszCustomDialerName
|
|
);
|
|
|
|
DWORD
|
|
DwCustomDialDlg(
|
|
LPTSTR lpszPhonebook,
|
|
LPTSTR lpszEntry,
|
|
LPTSTR lpszPhoneNumber,
|
|
LPRASDIALDLG lpInfo,
|
|
DWORD dwFlags,
|
|
BOOL *pfStatus,
|
|
PVOID pvInfo,
|
|
LPTSTR pszCustomDialer);
|
|
|
|
|
|
DWORD
|
|
DwCustomEntryDlg(
|
|
LPTSTR lpszPhonebook,
|
|
LPTSTR lpszEntry,
|
|
LPRASENTRYDLG lpInfo,
|
|
BOOL *pfStatus);
|
|
|
|
DWORD
|
|
DwCustomDeleteEntryNotify(
|
|
LPCTSTR lpszPhonebook,
|
|
LPCTSTR lpszEntry,
|
|
LPTSTR pszCustomDialer);
|
|
|
|
|
|
|
|
DWORD
|
|
DwGetExpandedDllPath(LPTSTR pszDllPath,
|
|
LPTSTR *ppszExpandedDllPath);
|
|
|
|
DWORD
|
|
DwGetEntryMode( LPCTSTR pszPhonebook,
|
|
LPCTSTR pszEntry,
|
|
PBFILE *pFileIn,
|
|
DWORD *pdwFlags);
|
|
|
|
DWORD
|
|
DwEnumeratePhonebooksFromDirectory(
|
|
TCHAR *pszDir,
|
|
DWORD dwFlags,
|
|
PBKENUMCALLBACK pfnCallback,
|
|
VOID *pvContext
|
|
);
|
|
|
|
DWORD
|
|
DwGetCustomAuthData(
|
|
PBENTRY *pEntry,
|
|
DWORD *pcbCustomAuthData,
|
|
PBYTE *ppCustomAuthData
|
|
);
|
|
|
|
DWORD
|
|
DwSetCustomAuthData(
|
|
PBENTRY *pEntry,
|
|
DWORD cbCustomAuthData,
|
|
PBYTE pCustomAuthData
|
|
);
|
|
|
|
DWORD
|
|
DwCustomTerminalDlg(
|
|
TCHAR *pszPhonebook,
|
|
HRASCONN hrasconn,
|
|
PBENTRY *pEntry,
|
|
HWND hwndDlg,
|
|
RASDIALPARAMS *prdp,
|
|
PVOID pvReserved
|
|
);
|
|
|
|
DWORD
|
|
DwGetVpnDeviceName(
|
|
DWORD dwVpnStrategy,
|
|
WCHAR *pszDeviceDefault,
|
|
WCHAR *pszDeviceName);
|
|
|
|
|
|
#endif // _PBK_H_
|