This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/WATCOM/h/nt/mprapi.h

1239 lines
47 KiB
C

/*
* mprapi.h Multiple Provider Router (MPR) functions
*
* =========================================================================
*
* Open Watcom Project
*
* Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved.
*
* This file is automatically generated. Do not edit directly.
*
* =========================================================================
*/
#ifndef __ROUTING_MPRADMIN_H__
#define __ROUTING_MPRADMIN_H__
#ifndef _ENABLE_AUTODEPEND
#pragma read_only_file;
#endif
#include <lmcons.h>
#include <ras.h>
#include <in6addr.h>
#include <wincrypt.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Server handles */
typedef HANDLE RAS_SERVER_HANDLE;
typedef HANDLE MPR_SERVER_HANDLE;
typedef HANDLE MIB_SERVER_HANDLE;
/* Remoting and Remote Access Service (RRAS) name */
#define RRAS_SERVICE_NAME TEXT( "RemoteAccess" )
/* Protocol identifiers */
#define PID_IPX 0x0000002BL
#define PID_IP 0x00000021L
#define PID_IPV6 0x00000057L
#define PID_NBF 0x0000003FL
#define PID_ATALK 0x00000029L
/* Maximum lengths */
#define MAX_INTERFACE_NAME_LEN 256
#define MAX_TRANSPORT_NAME_LEN 40
#define MAX_MEDIA_NAME 16
#define MAX_PORT_NAME 16
#define MAX_DEVICE_NAME 128
#define MAX_PHONE_NUMBER_LEN 128
#define MAX_DEVICETYPE_NAME 16
/* MPR interface flags */
#define MPR_INTERFACE_OUT_OF_RESOURCES 0x00000001L
#define MPR_INTERFACE_ADMIN_DISABLED 0x00000002L
#define MPR_INTERFACE_CONNECTION_FAILURE 0x00000004L
#define MPR_INTERFACE_SERVICE_PAUSED 0x00000008L
#define MPR_INTERFACE_DIALOUT_HOURS_RESTRICTION 0x00000010L
#define MPR_INTERFACE_NO_MEDIA_SENSE 0x00000020L
#define MPR_INTERFACE_NO_DEVICE 0x00000040L
/* Aliases of maximum lengths from RAS */
#if (WINVER >= 0x0500)
#define MPR_MaxDeviceType RAS_MaxDeviceType
#define MPR_MaxPhoneNumber RAS_MaxPhoneNumber
#define MPR_MaxIpAddress RAS_MaxIpAddress
#define MPR_MaxIpxAddress RAS_MaxIpxAddress
#define MPR_MaxEntryName RAS_MaxEntryName
#define MPR_MaxDeviceName RAS_MaxDeviceName
#define MPR_MaxCallbackNumber RAS_MaxCallbackNumber
#define MPR_MaxAreaCode RAS_MaxAreaCode
#define MPR_MaxPadType RAS_MaxPadType
#define MPR_MaxX25Address RAS_MaxX25Address
#define MPR_MaxFacilities RAS_MaxFacilities
#define MPR_MaxUserData RAS_MaxUserData
#endif
/* MPR interface options */
#if (WINVER >= 0x0500)
#define MPRIO_SpecificIpAddr RASEO_SpecificIpAddr
#define MPRIO_SpecificNameServers RASEO_SpecificNameServers
#define MPRIO_IpHeaderCompression RASEO_IpHeaderCompression
#define MPRIO_RemoteDefaultGateway RASEO_RemoteDefaultGateway
#define MPRIO_DisableLcpExtensions RASEO_DisableLcpExtensions
#define MPRIO_SwCompression RASEO_SwCompression
#define MPRIO_RequireEncryptedPw RASEO_RequireEncryptedPw
#define MPRIO_RequireMsEncryptedPw RASEO_RequireMsEncryptedPw
#define MPRIO_RequireDataEncryption RASEO_RequireDataEncryption
#define MPRIO_NetworkLogon RASEO_NetworkLogon
#define MPRIO_PromoteAlternates RASEO_PromoteAlternates
#define MPRIO_SecureLocalFiles RASEO_SecureLocalFiles
#define MPRIO_RequireEAP RASEO_RequireEAP
#define MPRIO_RequirePAP RASEO_RequirePAP
#define MPRIO_RequireSPAP RASEO_RequireSPAP
#define MPRIO_SharedPhoneNumbers RASEO_SharedPhoneNumbers
#define MPRIO_RequireCHAP RASEO_RequireCHAP
#define MPRIO_RequireMsCHAP RASEO_RequireMsCHAP
#define MPRIO_RequireMsCHAP2 RASEO_RequireMsCHAP2
#endif
#if (WINVER >= 0x0501)
#define MPRIO_IpSecPreSharedKey 0x80000000L
#endif
/* MPR interface protocols */
#if (WINVER >= 0x0500)
#define MPRNP_Ipx RASNP_Ipx
#define MPRNP_Ip RASNP_Ip
#endif
#if (WINVER >= 0x0600)
#define MRPNP_IPv6 RASNP_Ipv6
#endif
/* MPR interface device types */
#if (WINVER >= 0x0500)
#define MPRDT_Modem RASDT_Modem
#define MPRDT_Isdn RASDT_Isdn
#define MPRDT_X25 RASDT_X25
#define MPRDT_Vpn RASDT_Vpn
#define MPRDT_Pad RASDT_Pad
#define MPRDT_Generic RASDT_Generic
#define MPRDT_Serial RASDT_Serial
#define MPRDT_FrameRelay RASDT_FrameRelay
#define MPRDT_Atm RASDT_Atm
#define MPRDT_Sonet RASDT_Sonet
#define MPRDT_SW56 RASDT_SW56
#define MRPDT_Irda RASDT_Irda
#define MPRDT_Parallel RASDT_Parallel
#endif
/* MPR interface types */
#if (WINVER >= 0x0500)
#define MPRET_Phone RASET_Phone
#define MPRET_Vpn RASET_Vpn
#define MPRET_Direct RASET_Direct
#endif
/* MPR interface dial modes */
#if (WINVER >= 0x0500)
#define MPRDM_DialFirst 0L
#define MPRDM_DialAll RASEDM_DialAll
#define MPRDM_DialAsNeeded RASEDM_DialAsNeeded
#endif
/* MPR interface idle disconnect seconds special values */
#if (WINVER >= 0x0500)
#define MPRIDS_Disabled RASIDS_Disabled
#define MPRIDS_UseGlobalValue RASIDS_UseGlobalValue
#endif
/* MPR interface encryption types */
#if (WINVER >= 0x0500)
#define MPR_ET_None ET_None
#define MPR_ET_Require ET_Require
#define MPR_ET_RequireMax ET_RequireMax
#define MPR_ET_Optional ET_Optional
#endif
/* MPR interface VPN strategies */
#if (WINVER >= 0x0500)
#define MPR_VS_Default VS_Default
#define MPR_VS_PptpOnly VS_PptpOnly
#define MPR_VS_PptpFirst VS_PptpFirst
#define MPR_VS_L2tpOnly VS_L2tpOnly
#define MPR_VS_L2tpFirst VS_L2tpFirst
#endif
/* MPR server flags */
#if (WINVER >= 0x0501)
#define MPR_ENABLE_RAS_ON_DEVICE 0x00000001L
#define MPR_ENABLE_ROUTING_ON_DEVICE 0x00000002L
#endif
/* Address lengths */
#define IPADDRESSLEN 15
#define IPXADDRESSLEN 22
#define ATADDRESSLEN 32
#define MAXIPADRESSLEN 64
/* PPP IPCP options */
#define PPP_IPCP_VJ 0x00000001L
/* PPP compression control protocol compression algorithms */
#if (WINVER >= 0x0500)
#define RASCCPCA_MPPC 0x00000006L
#define RASCCPCA_STAC 0x00000005L
#endif
/* PPP compression control protocol options */
#if (WINVER >= 0x0500)
#define PPP_CCP_COMPRESSION 0x00000001L
#define PPP_CCP_ENCRYPTION40BITOLD 0x00000010L
#define PPP_CPP_ENCRYPTION40BIT 0x00000020L
#define PPP_CCP_ENCRYPTION128BIT 0x00000040L
#define PPP_CCP_ENCRYPTION56BIT 0x00000080L
#define PPP_CCP_HISTORYLESS 0x01000000L
#endif
/* PPP link control protocol authentication options */
#if (WINVER >= 0x0500)
#define PPP_LCP_PAP 0xC023
#define PPP_LCP_SPAP 0xC027
#define PPP_LCP_CHAP 0xC223
#define PPP_LCP_EAP 0xC227
#endif
/* PPP link control protocol authentication data */
#if (WINVER >= 0x0500)
#define PPP_LCP_CHAP_MD5 0x05
#define PPP_LCP_CHAP_MS 0x80
#define PPP_LCP_CHAP_MSV2 0x81
#endif
/* PPP link control protocol options */
#if (WINVER >= 0x0500)
#define PPP_LCP_MULTILINK_FRAMING 0x00000001L
#define PPP_LCP_PFC 0x00000002L
#define PPP_LCP_ACFC 0x00000004L
#define PPP_LCP_SSHF 0x00000008L
#define PPP_LCP_DES_56 0x00000010L
#define PPP_LCP_3_DES 0x00000020L
#endif
#if (WINVER >= 0x0600)
#define PPP_LCP_AES_128 0x00000040L
#define PPP_LCP_AES_256 0x00000080L
#endif
/* RAS connection flags */
#define RAS_FLAGS_PPP_CONNECTION 0x00000001L
#define RAS_FLAGS_MESSENGER_PRESENT 0x00000002L
#if (WINVER < 0x0501)
#define RAS_FLAGS_RAS_CONNECTION 0x00000004L
#endif
#define RAS_FLAGS_QUARANTINE_PRESENT 0x00000008L
#if (WINVER >= 0x0601)
#define RAS_FLAGS_DORMANT 0x00000020L
#endif
/* RAS privileges */
#define RASPRIV_NoCallback 0x01
#define RASPRIV_AdminSetCallback 0x02
#define RASPRIV_CallerSetCallback 0x04
#define RASPRIV_DialinPrivilege 0x08
#define RASPRIV_CallbackType \
(RASPRIV_AdminSetCallback | RASPRIV_CallerSetCallback | RASPRIV_NoCallback)
/* RAS secondary privileges */
#define RASPRIV2_DialinPolicy 0x01
/* IKEv2 authentication types */
#if (WINVER >= 0x0601)
#define MPRAPI_IKEV2_AUTH_USING_CERT 1L
#define MPRAPI_IKEV2_AUTH_USING_EAP 2L
#endif
/* Projection information types */
#if (WINVER >= 0x0601)
#define MPRAPI_PPP_PROJECTION_INFO_TYPE 1
#define MPRAPI_IKEV2_PROJECTION_INFO_TYPE 2
#endif
/* MPRAPI object revision numbers */
#if (WINVER >= 0x0601)
#define MPRAPI_RAS_CONNECTION_OBJECT_REVISION_1 0x01
#define MPRAPI_MPR_SERVER_OBJECT_REVISION_1 0x01
#define MPRAPI_MPR_SERVER_SET_CONFIG_OBJECT_REVISION_1 0x01
#define MPRAPI_RAS_UPDATE_CONNECTION_OBJECT_REVISION_1 0x01
#endif
/* Tunnel configuration parameter flags */
#if (WINVER >= 0x0601)
#define MPRAPI_IKEV2_SET_TUNNEL_CONFIG_PARAMS 0x00000001L
#endif
/* Maximum SSTP hash size */
#if (WINVER >= 0x0601)
#define MAX_SSTP_HASH_SIZE 32
#endif
/* Configuration protocol tunnel types */
#if (WINVER >= 0x0601)
#define MPRAPI_SET_CONFIG_PROTOCOL_FOR_PPTP 0x00000001L
#define MPRAPI_SET_CONFIG_PROTOCOL_FOR_L2TP 0x00000002L
#define MPRAPI_SET_CONFIG_PROTOCOL_FOR_SSTP 0x00000004L
#define MPRAPI_SET_CONFIG_PROTOCOL_FOR_IKEV2 0x00000008L
#endif
/* Authentication constants */
#if (WINVER >= 0x0601)
#define ALLOW_NO_AUTH 1
#define DO_NOT_ALLOW_NO_AUTH 2
#endif
/* MPRAPI administration DLL version numbers */
#if (WINVER >= 0x0601)
#define MPRAPI_ADMIN_DLL_VERSION_1 0x00000001L
#define MPRAPI_ADMIN_DLL_VERSION_2 0x00000002L
#endif
/* Router interface types */
typedef enum _ROUTER_INTERFACE_TYPE {
ROUTER_IF_TYPE_CLIENT = 0,
ROUTER_IF_TYPE_HOME_ROUTER = 1,
ROUTER_IF_TYPE_FULL_ROUTER = 2,
ROUTER_IF_TYPE_DEDICATED = 3,
ROUTER_IF_TYPE_INTERNAL = 4,
ROUTER_IF_TYPE_LOOPBACK = 5,
ROUTER_IF_TYPE_TUNNEL1 = 6,
ROUTER_IF_TYPE_DIALOUT = 7,
ROUTER_IF_TYPE_MAX = 8
} ROUTER_INTERFACE_TYPE;
/* Router connection states */
typedef enum _ROUTER_CONNECTION_STATE {
ROUTER_IF_STATE_UNREACHABLE = 0,
ROUTER_IF_STATE_DISCONNECTED = 1,
ROUTER_IF_STATE_CONNECTING = 2,
ROUTER_IF_STATE_CONNECTED = 3
} ROUTER_CONNECTION_STATE;
/* MPR interface (level 0) */
typedef struct _MPR_INTERFACE_0 {
WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN + 1];
HANDLE hInterface;
BOOL fEnabled;
ROUTER_INTERFACE_TYPE dwIfType;
ROUTER_CONNECTION_STATE dwConnectionState;
DWORD fUnReachabilityReasons;
DWORD dwLastError;
} MPR_INTERFACE_0;
typedef MPR_INTERFACE_0 *PMPR_INTERFACE_0;
/* MPR interface (level 1) */
#if (WINVER >= 0x0500)
typedef struct _MPR_INTERFACE_1 {
WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN + 1];
HANDLE hInterface;
BOOL fEnabled;
ROUTER_INTERFACE_TYPE dwIfType;
ROUTER_CONNECTION_STATE dwConnectionState;
DWORD fUnReachabilityReasons;
DWORD dwLastError;
LPWSTR lpwsDialoutHoursRestriction;
} MPR_INTERFACE_1;
typedef MPR_INTERFACE_1 *PMPR_INTERFACE_1;
#endif
/* MPR interface (level 2) */
#if (WINVER >= 0x0500)
typedef struct _MPR_INTERFACE_2 {
WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN + 1];
HANDLE hInterface;
BOOL fEnabled;
ROUTER_INTERFACE_TYPE dwIfType;
ROUTER_CONNECTION_STATE dwConnectionState;
DWORD fUnReachabilityReasons;
DWORD dwLastError;
DWORD dwfOptions;
WCHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1];
PWCHAR szAlternates;
DWORD ipaddr;
DWORD ipaddrDns;
DWORD ipaddrDnsAlt;
DWORD ipaddrWins;
DWORD ipaddrWinsAlt;
DWORD dwfNetProtocols;
WCHAR szDeviceType[MPR_MaxDeviceType + 1];
WCHAR szDeviceName[MPR_MaxDeviceName + 1];
WCHAR szX25PadType[MPR_MaxPadType + 1];
WCHAR szX25Address[MPR_MaxX25Address + 1];
WCHAR szX25Facilities[MPR_MaxFacilities + 1];
WCHAR szX25UserData[MPR_MaxUserData + 1];
DWORD dwChannels;
DWORD dwSubEntries;
DWORD dwDialMode;
DWORD dwDialExtraPercent;
DWORD dwDialExtraSampleSeconds;
DWORD dwHangUpExtraPercent;
DWORD dwHangUpExtraSampleSeconds;
DWORD dwIdleDisconnectSeconds;
DWORD dwType;
DWORD dwEncryptionType;
DWORD dwCustomAuthKey;
DWORD dwCustomAuthDataSize;
LPBYTE lpbCustomAuthData;
GUID guidId;
DWORD dwVpnStrategy;
} MPR_INTERFACE_2;
typedef MPR_INTERFACE_2 *PMPR_INTERFACE_2;
#endif
/* MPR interface (level 3) */
#if (WINVER >= 0x0600)
typedef struct _MPR_INTERFACE_3 {
WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN + 1];
HANDLE hInterface;
BOOL fEnabled;
ROUTER_INTERFACE_TYPE dwIfType;
ROUTER_CONNECTION_STATE dwConnectionState;
DWORD fUnReachabilityReasons;
DWORD dwLastError;
DWORD dwfOptions;
WCHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1];
PWCHAR szAlternates;
DWORD ipaddr;
DWORD ipaddrDns;
DWORD ipaddrDnsAlt;
DWORD ipaddrWins;
DWORD ipaddrWinsAlt;
DWORD dwfNetProtocols;
WCHAR szDeviceType[MPR_MaxDeviceType + 1];
WCHAR szDeviceName[MPR_MaxDeviceName + 1];
WCHAR szX25PadType[MPR_MaxPadType + 1];
WCHAR szX25Address[MPR_MaxX25Address + 1];
WCHAR szX25Facilities[MPR_MaxFacilities + 1];
WCHAR szX25UserData[MPR_MaxUserData + 1];
DWORD dwChannels;
DWORD dwSubEntries;
DWORD dwDialMode;
DWORD dwDialExtraPercent;
DWORD dwDialExtraSampleSeconds;
DWORD dwHangUpExtraPercent;
DWORD dwHangUpExtraSampleSeconds;
DWORD dwIdleDisconnectSeconds;
DWORD dwType;
DWORD dwEncryptionType;
DWORD dwCustomAuthKey;
DWORD dwCustomAuthDataSize;
LPBYTE lpbCustomAuthData;
GUID guidId;
DWORD dwVpnStrategy;
ULONG AddressCount;
IN6_ADDR ipv6addrDns;
IN6_ADDR ipv6addrDnsAlt;
IN6_ADDR *ipv6addr;
} MPR_INTERFACE_3;
typedef MPR_INTERFACE_3 *PMPR_INTERFACE_3;
#endif
/* MPR IP in IP interface (level 0) */
typedef struct _MPR_IPINIP_INTERFACE_0 {
WCHAR wszFriendlyName[MAX_INTERFACE_NAME_LEN + 1];
GUID Guid;
} MPR_IPINIP_INTERFACE_0;
typedef MPR_IPINIP_INTERFACE_0 *PMPR_IPINIP_INTERFACE_0;
/* MPR device (level 0) */
#if (WINVER >= 0x0500)
typedef struct _MPR_DEVICE_0 {
WCHAR szDeviceType[MPR_MaxDeviceType + 1];
WCHAR szDeviceName[MPR_MaxDeviceName + 1];
} MPR_DEVICE_0;
typedef MPR_DEVICE_0 *PMPR_DEVICE_0;
#endif
/* MPR device (level 1) */
#if (WINVER >= 0x0500)
typedef struct _MPR_DEVICE_1 {
WCHAR szDeviceType[MPR_MaxDeviceType + 1];
WCHAR szDeviceName[MPR_MaxDeviceName + 1];
WCHAR szLocalPhoneNumber[MPR_MaxPhoneNumber + 1];
PWCHAR szAlternates;
} MPR_DEVICE_1;
typedef MPR_DEVICE_1 *PMPR_DEVICE_1;
#endif
/* MPR extended credentials (level 0) */
#if (WINVER >= 0x0500)
typedef struct _MPR_CREDENTIALSEX_0 {
DWORD dwSize;
LPBYTE lpbCredentialsInfo;
} MPR_CREDENTIALSEX_0;
typedef MPR_CREDENTIALSEX_0 *PMPR_CREDENTIALSEX_0;
#endif
/* MPR extended credentials (level 1) */
#if (WINVER >= 0x0500)
typedef struct _MPR_CREDENTIALSEX_1 {
DWORD dwSize;
LPBYTE lpbCredentialsInfo;
} MPR_CREDENTIALSEX_1;
typedef MPR_CREDENTIALSEX_1 *PMPR_CREDENTIALSEX_1;
#endif
/* MPR transport (level 0) */
typedef struct _MPR_TRANSPORT_0 {
DWORD dwTransportId;
HANDLE hTransport;
WCHAR wszTransportName[MAX_TRANSPORT_NAME_LEN + 1];
} MPR_TRANSPORT_0;
typedef MPR_TRANSPORT_0 *PMPR_TRANSPORT_0;
/* MPR interface transport (level 0) */
typedef struct _MPR_IFTRANSPORT_0 {
DWORD dwTransportId;
HANDLE hIfTransport;
WCHAR wszIfTransportName[MAX_TRANSPORT_NAME_LEN + 1];
} MPR_IFTRANSPORT_0;
typedef MPR_IFTRANSPORT_0 *PMPR_IFTRANSPORT_0;
/* MPR server (level 0) */
typedef struct _MPR_SERVER_0 {
BOOL fLanOnlyMode;
DWORD dwUpTime;
DWORD dwTotalPorts;
DWORD dwPortsInUse;
} MPR_SERVER_0;
typedef MPR_SERVER_0 *PMPR_SERVER_0;
/* MPR server (level 1) */
#if (WINVER >= 0x0501)
typedef struct _MPR_SERVER_1 {
DWORD dwNumPptpPorts;
DWORD dwPptpPortFlags;
DWORD dwNumL2tpPorts;
DWORD dwL2tpPortFlags;
} MPR_SERVER_1;
typedef MPR_SERVER_1 *PMPR_SERVER_1;
#endif
/* MPR server (level 2) */
#if (WINVER >= 0x0600)
typedef struct _MPR_SERVER_2 {
DWORD dwNumPptpPorts;
DWORD dwPptpPortFlags;
DWORD dwNumL2tpPorts;
DWORD dwL2tpPortFlags;
DWORD dwNumSstpPorts;
DWORD dwSstpPortFlags;
} MPR_SERVER_2;
typedef MPR_SERVER_2 *PMPR_SERVER_2;
#endif
/* RAS port conditions */
typedef enum _RAS_PORT_CONDITION {
RAS_PORT_NON_OPERATIONAL = 0,
RAS_PORT_DISCONNECTED = 1,
RAS_PORT_CALLING_BACK = 2,
RAS_PORT_LISTENING = 3,
RAS_PORT_AUTHENTICATING = 4,
RAS_PORT_AUTHENTICATED = 5,
RAS_PORT_INITIALIZING = 6
} RAS_PORT_CONDITION;
/* RAS hardware conditions */
typedef enum _RAS_HARDWARE_CONDITION {
RAS_HARDWARE_OPERATIONAL = 0,
RAS_HARDWARE_FAILURE = 1
} RAS_HARDWARE_CONDITION;
/* RAS port (level 0) */
typedef struct _RAS_PORT_0 {
HANDLE hPort;
HANDLE hConnection;
RAS_PORT_CONDITION dwPortCondition;
DWORD dwTotalNumberOfCalls;
DWORD dwConnectDuration;
WCHAR wszPortName[MAX_PORT_NAME + 1];
WCHAR wszMediaName[MAX_MEDIA_NAME + 1];
WCHAR wszDeviceName[MAX_DEVICE_NAME + 1];
WCHAR wszDeviceType[MAX_DEVICETYPE_NAME + 1];
} RAS_PORT_0;
typedef RAS_PORT_0 *PRAS_PORT_0;
/* RAS port (level 1) */
typedef struct _RAS_PORT_1 {
HANDLE hPort;
HANDLE hConnection;
RAS_HARDWARE_CONDITION dwHardwareCondition;
DWORD dwLineSpeed;
DWORD dwBytesXmitted;
DWORD dwBytesRcved;
DWORD dwFramesXmitted;
DWORD dwFramesRcved;
DWORD dwCrcErr;
DWORD dwTimeoutErr;
DWORD dwAlignmentErr;
DWORD dwHardwareOverrunErr;
DWORD dwFramingErr;
DWORD dwBufferOverrunErr;
DWORD dwCompressionRatioIn;
DWORD dwCompressionRatioOut;
} RAS_PORT_1;
typedef RAS_PORT_1 *PRAS_PORT_1;
/* PPP NBFCP information */
typedef struct _PPP_NBFCP_INFO {
DWORD dwError;
WCHAR wszWksta[NETBIOS_NAME_LEN + 1];
} PPP_NBFCP_INFO;
/* PPP IPCP information */
typedef struct _PPP_IPCP_INFO {
DWORD dwError;
WCHAR wszAddress[IPADDRESSLEN + 1];
WCHAR wszRemoteAddress[IPADDRESSLEN + 1];
} PPP_IPCP_INFO;
/* PPP IPCP information (version 2) */
typedef struct _PPP_IPCP_INFO2 {
DWORD dwError;
WCHAR wszAddress[IPADDRESSLEN + 1];
WCHAR wszRemoteAddress[IPADDRESSLEN + 1];
DWORD dwOptions;
DWORD dwRemoteOptions;
} PPP_IPCP_INFO2;
/* PPP IPXCP information */
typedef struct _PPP_IPXCP_INFO {
DWORD dwError;
WCHAR wszAddress[IPXADDRESSLEN + 1];
} PPP_IPXCP_INFO;
/* PPP ATCP information */
typedef struct _PPP_ATCP_INFO {
DWORD dwError;
WCHAR wszAddress[ATADDRESSLEN + 1];
} PPP_ATCP_INFO;
/* PPP IPv6 CP information */
#if (WINVER >= 0x0600)
typedef struct _PPP_IPV6_CP_INFO {
DWORD dwVersion;
DWORD dwSize;
DWORD dwError;
BYTE bInterfaceIdentifier[8];
BYTE bRemoteInterfaceIdentifier[8];
DWORD dwOptions;
DWORD dwRemoteOptions;
BYTE bPrefix[8];
DWORD dwPrefixLength;
} PPP_IPV6_CP_INFO;
#endif
/* PPP information */
typedef struct _PPP_INFO {
PPP_NBFCP_INFO nbf;
PPP_IPCP_INFO ip;
PPP_IPXCP_INFO ipx;
PPP_ATCP_INFO at;
} PPP_INFO;
/* PPP compression control protocol information */
#if (WINVER >= 0x0500)
typedef struct _PPP_CCP_INFO {
DWORD dwError;
DWORD dwCompressionAlgorithm;
DWORD dwOptions;
DWORD dwRemoteCompressionAlgorithm;
DWORD dwRemoteOptions;
} PPP_CCP_INFO;
#endif
/* PPP link control protocol information */
#if (WINVER >= 0x0500)
typedef struct _PPP_LCP_INFO {
DWORD dwError;
DWORD dwAuthenticationProtocol;
DWORD dwAuthenticationData;
DWORD dwRemoteAuthenticationProtocol;
DWORD dwRemoteAuthenticationData;
DWORD dwTerminateReason;
DWORD dwRemoteTerminateReason;
DWORD dwOptions;
DWORD dwRemoteOptions;
DWORD dwEapTypeId;
DWORD dwRemoteEapTypeId;
} PPP_LCP_INFO;
#endif
/* PPP information (version 2) */
#if (WINVER >= 0x0500)
typedef struct _PPP_INFO_2 {
PPP_NBFCP_INFO nbf;
PPP_IPCP_INFO ip;
PPP_IPXCP_INFO ipx;
PPP_ATCP_INFO at;
PPP_CCP_INFO ccp;
PPP_LCP_INFO lcp;
} PPP_INFO_2;
#endif
/* PPP information (version 3) */
#if (WINVER >= 0x0600)
typedef struct _PPP_INFO_3 {
PPP_NBFCP_INFO nbf;
PPP_IPCP_INFO2 ip;
PPP_IPV6_CP_INFO ipv6;
PPP_CCP_INFO ccp;
PPP_LCP_INFO lcp;
} PPP_INFO_3;
#endif
/* RAS connection (level 0) */
typedef struct _RAS_CONNECTION_0 {
HANDLE hConnection;
HANDLE hInterface;
DWORD dwConnectDuration;
ROUTER_INTERFACE_TYPE dwInterfaceType;
DWORD dwConnectionFlags;
WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN + 1];
WCHAR wszUserName[UNLEN + 1];
WCHAR wszLogonDomain[DNLEN + 1];
WCHAR wszRemoteComputer[NETBIOS_NAME_LEN + 1];
} RAS_CONNECTION_0;
typedef RAS_CONNECTION_0 *PRAS_CONNECTION_0;
/* RAS connection (level 1) */
typedef struct _RAS_CONNECTION_1 {
HANDLE hConnection;
HANDLE hInterface;
PPP_INFO PppInfo;
DWORD dwBytesXmitted;
DWORD dwBytesRcved;
DWORD dwFramesXmitted;
DWORD dwFramesRcved;
DWORD dwCrcErr;
DWORD dwTimeoutErr;
DWORD dwAlignmentErr;
DWORD dwHardwareOverrunErr;
DWORD dwFramingErr;
DWORD dwBufferOverrunErr;
DWORD dwCompressionRatioIn;
DWORD dwCompressionRatioOut;
} RAS_CONNECTION_1;
typedef RAS_CONNECTION_1 *PRAS_CONNECTION_1;
/* RAS connection (level 2) */
#if (WINVER >= 0x0500)
typedef struct _RAS_CONNECTION_2 {
HANDLE hConnection;
WCHAR wszUserName[UNLEN + 1];
ROUTER_INTERFACE_TYPE dwInterfaceType;
GUID guid;
PPP_INFO_2 PppInfo2;
} RAS_CONNECTION_2;
typedef RAS_CONNECTION_2 *PRAS_CONNECTION_2;
#endif
/* RAS quarantine states */
#if (WINVER >= 0x0500)
typedef enum _RAS_QUARANTINE_STATE {
RAS_QUAR_STATE_NORMAL = 0,
RAS_QUAR_STATE_QUARANTINE = 1,
RAS_QUAR_STATE_PROBATION = 2,
RAS_QUAR_STATE_NOT_CAPABLE = 3
} RAS_QUARANTINE_STATE;
#endif
/* RAS connection (level 3) */
#if (WINVER >= 0x0600)
typedef struct _RAS_CONNECTION_3 {
DWORD dwVersion;
DWORD dwSize;
HANDLE hConnection;
WCHAR wszUserName[UNLEN + 1];
ROUTER_INTERFACE_TYPE dwInterfaceType;
GUID guid;
PPP_INFO_3 PppInfo3;
RAS_QUARANTINE_STATE rasQuarState;
FILETIME timer;
} RAS_CONNECTION_3;
typedef RAS_CONNECTION_3 *PRAS_CONNECTION_3;
#endif
/* RAS user (level 0) */
typedef struct _RAS_USER_0 {
BYTE bfPrivilege;
WCHAR wszPhoneNumber[MAX_PHONE_NUMBER_LEN + 1];
} RAS_USER_0;
typedef RAS_USER_0 *PRAS_USER_0;
/* RAS user (level 1) */
typedef struct _RAS_USER_1 {
BYTE bfPrivilege;
WCHAR wszPhoneNumber[MAX_PHONE_NUMBER_LEN + 1];
BYTE bfPrivilege2;
} RAS_USER_1;
typedef RAS_USER_1 *PRAS_USER_1;
/* MPR filter (level 0) */
#if (WINVER >= 0x0600)
typedef struct _MPR_FILTER_0 {
BOOL fEnable;
} MPR_FILTER_0;
typedef MPR_FILTER_0 *PMPR_FILTER_0;
#endif
/* MPRAPI object header */
#if (WINVER >= 0x0601)
typedef struct _MPRAPI_OBJECT_HEADER {
UCHAR revision;
UCHAR type;
USHORT size;
} MPRAPI_OBJECT_HEADER;
typedef MPRAPI_OBJECT_HEADER *PMPRAPI_OBJECT_HEADER;
#endif
/* MPRAPI object types */
#if (WINVER >= 0x0601)
typedef enum _MPRAPI_OBJECT_TYPE {
MPRAPI_OBJECT_TYPE_RAS_CONNECTION_OBJECT = 1,
MPRAPI_OBJECT_TYPE_MPR_SERVER_OBJECT = 2,
MPRAPI_OBJECT_TYPE_MPR_SERVER_SET_CONFIG_OBJECT = 3,
MPRAPI_OBJECT_TYPE_AUTH_VALIDATION_OBJECT = 4,
MPRAPI_OBJECT_TYPE_UPDATE_CONNECTION_OBJECT = 5
} MPRAPI_OBJECT_TYPE;
typedef MPRAPI_OBJECT_TYPE *PMPRAPI_OBJECT_TYPE;
#endif
/* PPP projection information */
#if (WINVER >= 0x0601)
typedef struct _PPP_PROJECTION_INFO {
DWORD dwIPv4NegotiationError;
WCHAR wszAddress[IPADDRESSLEN + 1];
WCHAR wszRemoteAddress[IPADDRESSLEN + 1];
DWORD dwIPv4Options;
DWORD dwIPv4RemoteOptions;
ULONG64 IPv4SubInterfaceIndex;
DWORD dwIPv6NegotiationError;
BYTE bInterfaceIdentifier[8];
BYTE bRemoteInterfaceIdentifier[8];
BYTE bPrefix[8];
DWORD dwPrefixLength;
ULONG64 IPv6SubInterfaceIndex;
DWORD dwLcpError;
DWORD dwAuthenticationProtocol;
DWORD dwAuthenticationData;
DWORD dwRemoteAuthenticationProtocol;
DWORD dwRemoteAuthenticationData;
DWORD dwLcpTerminateReason;
DWORD dwLcpRemoteTerminateReason;
DWORD dwLcpOptions;
DWORD dwLcpRemoteOptions;
DWORD dwEapTypeId;
DWORD dwRemoteEapTypeId;
DWORD dwCcpError;
DWORD dwCompressionAlgorithm;
DWORD dwCcpOptions;
DWORD dwRemoteCompressionAlgorithm;
DWORD dwCcpRemoteOptions;
} PPP_PROJECTION_INFO;
typedef PPP_PROJECTION_INFO *PPPP_PROJECTION_INFO;
#endif
/* IKEv2 projection information */
#if (WINVER >= 0x0601)
typedef struct _IKEV2_PROJECTION_INFO {
DWORD dwIPv4NegotiationError;
WCHAR wszAddress[IPADDRESSLEN + 1];
WCHAR wszRemoteAddress[IPADDRESSLEN + 1];
ULONG64 IPv4SubInterfaceIndex;
DWORD dwIPv6NegotiationError;
BYTE bInterfaceIdentifier[8];
BYTE bRemoteInterfaceIdentifier[8];
BYTE bPrefix[8];
DWORD dwPrefixLength;
ULONG64 IPv6SubInterfaceIndex;
DWORD dwOptions;
DWORD dwAuthenticationProtocol;
DWORD dwEapTypeId;
DWORD dwCompressionAlgorithm;
DWORD dwEncryptionMethod;
} IKEV2_PROJECTION_INFO;
typedef IKEV2_PROJECTION_INFO *PIKEV2_PROJECTION_INFO;
#endif
/* Projection information */
#if (WINVER >= 0x0601)
typedef struct _PROJECTION_INFO {
UCHAR projectionInfoType;
union {
PPP_PROJECTION_INFO PppProjectionInfo;
IKEV2_PROJECTION_INFO Ikev2ProjectionInfo;
};
} PROJECTION_INFO;
typedef PROJECTION_INFO *PPROJECTION_INFO;
#endif
/* RAS connection (extended version) */
#if (WINVER >= 0x0601)
typedef struct _RAS_CONNECTION_EX {
MPRAPI_OBJECT_HEADER Header;
DWORD dwConnectDuration;
ROUTER_INTERFACE_TYPE dwInterfaceType;
DWORD dwConnectionFlags;
WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN + 1];
WCHAR wszUserName[UNLEN + 1];
WCHAR wszLogonDomain[DNLEN + 1];
WCHAR wszRemoteComputer[NETBIOS_NAME_LEN + 1];
GUID guid;
RAS_QUARANTINE_STATE rasQuarState;
FILETIME probationTime;
DWORD dwBytesXmited;
DWORD dwBytesRcved;
DWORD dwFramesXmited;
DWORD dwFramesRcved;
DWORD dwCrcErr;
DWORD dwTimeoutErr;
DWORD dwAlignmentErr;
DWORD dwHardwareOverrunErr;
DWORD dwFramingErr;
DWORD dwBufferOverrunErr;
DWORD dwCompressionRatioIn;
DWORD dwCompressionRatioOut;
DWORD dwNumSwitchOvers;
WCHAR wszRemoteEndpointAddress[MAXIPADRESSLEN + 1];
WCHAR wszLocalEndpointAddress[MAXIPADRESSLEN + 1];
PROJECTION_INFO ProjectionInfo;
HANDLE hConnection;
HANDLE hInterface;
} RAS_CONNECTION_EX;
typedef RAS_CONNECTION_EX *PRAS_CONNECTION_EX;
#endif
/* IKEv2 tunnel configuration parameters */
#if (WINVER >= 0x0601)
typedef struct _IKEV2_TUNNEL_CONFIG_PARAMS {
DWORD dwIdleTimeout;
DWORD dwNetworkBlackoutTime;
DWORD dwSaLifeTime;
DWORD dwSaDataSizeForRenegotiation;
DWORD dwConfigOptions;
DWORD dwTotalCertificates;
CERT_NAME_BLOB *certificateNames;
} IKEV2_TUNNEL_CONFIG_PARAMS;
typedef IKEV2_TUNNEL_CONFIG_PARAMS *PIKEV2_TUNNEL_CONFIG_PARAMS;
#endif
/* IKEv2 configuration parameters */
#if (WINVER >= 0x0601)
typedef struct _IKEV2_CONFIG_PARAMS {
DWORD dwNumPorts;
DWORD dwPortFlags;
DWORD dwTunnelConfigParamFlags;
IKEV2_TUNNEL_CONFIG_PARAMS TunnelConfigParams;
} IKEV2_CONFIG_PARAMS;
typedef IKEV2_CONFIG_PARAMS *PIKEV2_CONFIG_PARAMS;
#endif
/* PPTP configuration parameters */
#if (WINVER >= 0x0601)
typedef struct _PPTP_CONFIG_PARAMS {
DWORD dwNumPorts;
DWORD dwPortFlags;
} PPTP_CONFIG_PARAMS;
typedef PPTP_CONFIG_PARAMS *PPPTP_CONFIG_PARAMS;
#endif
/* L2TP configuration parameters */
#if (WINVER >= 0x0601)
typedef struct _L2TP_CONFIG_PARAMS {
DWORD dwNumPorts;
DWORD dwPortFlags;
} L2TP_CONFIG_PARAMS;
typedef L2TP_CONFIG_PARAMS *PL2TP_CONFIG_PARAMS;
#endif
/* SSTP certificate information */
#if (WINVER >= 0x0601)
typedef struct _SSTP_CERT_INFO {
BOOL isDefault;
CRYPT_HASH_BLOB certBlob;
} SSTP_CERT_INFO;
typedef SSTP_CERT_INFO *PSSTP_CERT_INFO;
#endif
/* SSTP configuration parameters */
#if (WINVER >= 0x0601)
typedef struct _SSTP_CONFIG_PARAMS {
DWORD dwNumPorts;
DWORD dwPortFlags;
BOOL isUseHttps;
DWORD certAlgorithm;
SSTP_CERT_INFO sstpCertDetails;
} SSTP_CONFIG_PARAMS;
typedef SSTP_CONFIG_PARAMS *PSSTP_CONFIG_PARAMS;
#endif
/* MPRAPI tunnel configuration parameters */
#if (WINVER >= 0x0601)
typedef struct _MPRAPI_TUNNEL_CONFIG_PARAMS {
IKEV2_CONFIG_PARAMS IkeConfigParams;
PPTP_CONFIG_PARAMS PptpConfigParams;
L2TP_CONFIG_PARAMS L2tpConfigParams;
SSTP_CONFIG_PARAMS SstpConfigParams;
} MPRAPI_TUNNEL_CONFIG_PARAMS;
typedef MPRAPI_TUNNEL_CONFIG_PARAMS *PMPRAPI_TUNNEL_CONFIG_PARAMS;
#endif
/* MPR server (extended version) */
#if (WINVER >= 0x0601)
typedef struct _MPR_SERVER_EX {
MPRAPI_OBJECT_HEADER Header;
DWORD fLanOnlyMode;
DWORD dwUpTime;
DWORD dwTotalPorts;
DWORD dwPortsInUse;
DWORD Reserved;
MPRAPI_TUNNEL_CONFIG_PARAMS ConfigParams;
} MPR_SERVER_EX;
typedef MPR_SERVER_EX *PMPR_SERVER_EX;
#endif
/* MPR server set configuration (extended version) */
#if (WINVER >= 0x0601)
typedef struct _MPR_SERVER_SET_CONFIG_EX {
MPRAPI_OBJECT_HEADER Header;
DWORD setConfigForProtocols;
MPRAPI_TUNNEL_CONFIG_PARAMS ConfigParams;
} MPR_SERVER_SET_CONFIG_EX;
typedef MPR_SERVER_SET_CONFIG_EX *PMPR_SERVER_SET_CONFIG_EX;
#endif
/* Authentication validation (extended version) */
#if (WINVER >= 0x0601)
typedef struct _AUTH_VALIDATION_EX {
MPRAPI_OBJECT_HEADER Header;
HANDLE hRasConnection;
WCHAR wszUserName[UNLEN + 1];
WCHAR wszLogonDomain[DNLEN + 1];
DWORD AuthInfoSize;
BYTE AuthInfo[1];
} AUTH_VALIDATION_EX;
#endif
/* RAS update connection */
#if (WINVER >= 0x0601)
typedef struct RAS_UPDATE_CONNECTION_ {
MPRAPI_OBJECT_HEADER Header;
DWORD dwIfIndex;
WCHAR wszLocalEndpointAddress[MAXIPADRESSLEN + 1];
WCHAR wszRemoteEndpointAddress[MAXIPADRESSLEN + 1];
} RAS_UPDATE_CONNECTION;
typedef RAS_UPDATE_CONNECTION *PRAS_UPDATE_CONNECTION;
#endif
/* MPRAPI administration DLL function templates */
#if (WINVER >= 0x0601)
typedef DWORD (APIENTRY *PMPRADMINGETIPADDRESSFORUSER)( WCHAR *, WCHAR *, DWORD *, BOOL * );
typedef VOID (APIENTRY *PMPRADMINRELEASEIPADRESS)( WCHAR *, WCHAR *, DWORD * );
typedef DWORD (APIENTRY *PMPRADMINGETIPV6ADDRESSFORUSER)( WCHAR *, WCHAR *, IN6_ADDR *, BOOL * );
typedef VOID (APIENTRY *PMPRADMINRELEASEIPV6ADDRESSFORUSER)( WCHAR *, WCHAR *, IN6_ADDR * );
typedef BOOL (APIENTRY *PMPRADMINACCEPTNEWCONNECTION)( RAS_CONNECTION_0 *, RAS_CONNECTION_1 * );
typedef BOOL (APIENTRY *PMPRADMINACCEPTNEWCONNECTION2)( RAS_CONNECTION_0 *, RAS_CONNECTION_1 *, RAS_CONNECTION_2 * );
typedef BOOL (APIENTRY *PMPRADMINACCEPTNEWCONNECTION3)( RAS_CONNECTION_0 *, RAS_CONNECTION_1 *, RAS_CONNECTION_2 *, RAS_CONNECTION_3 * );
typedef BOOL (APIENTRY *PMPRADMINACCEPTNEWLINK)( RAS_PORT_0 *, RAS_PORT_1 * );
typedef VOID (APIENTRY *PMPRADMINCONNECTIONHANGUPNOTIFICATION)( RAS_CONNECTION_0 *, RAS_CONNECTION_1 * );
typedef VOID (APIENTRY *PMPRADMINCONNECTIONHANGUPNOTIFICATION2)( RAS_CONNECTION_0 *, RAS_CONNECTION_1 *, RAS_CONNECTION_2 * );
typedef VOID (APIENTRY *PMPRADMINCONNECTIONHANGUPNOTIFICATION3)( RAS_CONNECTION_0 *, RAS_CONNECTION_1 *, RAS_CONNECTION_2 *, RAS_CONNECTION_3 * );
typedef VOID (APIENTRY *PMPRADMINLINKHANGUPNOTIFICATION)( RAS_PORT_0 *, RAS_PORT_1 * );
typedef DWORD (APIENTRY *PMPRADMINTERMINATEDLL)();
typedef BOOL (APIENTRY *PMPRADMINACCEPTREAUTHENTICATION)( RAS_CONNECTION_0 *, RAS_CONNECTION_1 *, RAS_CONNECTION_2 *, RAS_CONNECTION_3 * );
typedef BOOL (APIENTRY *PMPRADMINACCEPTNEWCONNECTIONEX)( RAS_CONNECTION_EX * );
typedef BOOL (APIENTRY *PMPRADMINACCEPTREAUTHENTICATIONEX)( RAS_CONNECTION_EX * );
typedef BOOL (APIENTRY *PMPRADMINACCEPTTUNNELENDPOINTCHANGEEX)( RAS_CONNECTION_EX * );
typedef VOID (APIENTRY *PMPRADMINCONNECTIONHANGUPNOTIFICATIONEX)( RAS_CONNECTION_EX * );
typedef DWORD (APIENTRY *PMPRADMINRASVALIDATEPREAUTHENTICATEDCONNECTIONEX)( AUTH_VALIDATION_EX * );
#endif
/* MPRAPI administration DLL callbacks */
#if (WINVER >= 0x0601)
typedef struct _MPRAPI_ADMIN_DLL_CALLBACKS {
UCHAR revision;
PMPRADMINGETIPADDRESSFORUSER lpfnMprAdminGetIpAddressForUser;
PMPRADMINRELEASEIPADRESS lpfnMprAdminReleaseIpAddress;
PMPRADMINGETIPV6ADDRESSFORUSER lpfnMprAdminGetIpv6AddressForUser;
PMPRADMINRELEASEIPV6ADDRESSFORUSER lpfnMprAdminReleaseIpv6AddressForUser;
PMPRADMINACCEPTNEWLINK lpfnRasAdminAcceptNewLink;
PMPRADMINLINKHANGUPNOTIFICATION lpfnRasAdminLinkHangupNotification;
PMPRADMINTERMINATEDLL lpfnRasAdminTerminateDll;
PMPRADMINACCEPTNEWCONNECTIONEX lpfnRasAdminAcceptNewConnectionEx;
PMPRADMINACCEPTTUNNELENDPOINTCHANGEEX lpfnRasAdminAcceptEndpointChangeEx;
PMPRADMINACCEPTREAUTHENTICATIONEX lpfnRasAdminAcceptReauthenticationEx;
PMPRADMINCONNECTIONHANGUPNOTIFICATIONEX lpfnRasAdminConnectionHangupNotificationEx;
PMPRADMINRASVALIDATEPREAUTHENTICATEDCONNECTIONEX lpfnRASValidatePreAuthenticatedConnectionEx;
} MPRAPI_ADMIN_DLL_CALLBACKS;
typedef MPRAPI_ADMIN_DLL_CALLBACKS *PMPRAPI_ADMIN_DLL_CALLBACKS;
#endif
/* Functions in MPRAPI.DLL */
DWORD APIENTRY MprAdminBufferFree( LPVOID );
DWORD APIENTRY MprAdminConnectionClearStatus( RAS_SERVER_HANDLE, HANDLE );
DWORD APIENTRY MprAdminConnectionEnum( RAS_SERVER_HANDLE, DWORD, LPBYTE *, DWORD, LPDWORD, LPDWORD, LPDWORD );
DWORD APIENTRY MprAdminConnectionGetInfo( RAS_SERVER_HANDLE, DWORD, HANDLE, LPBYTE * );
DWORD APIENTRY MprAdminGetErrorString( DWORD, LPWSTR * );
DWORD APIENTRY MprAdminGetPDCServer( const WCHAR *, const WCHAR *, LPWSTR );
DWORD APIENTRY MprAdminInterfaceConnect( MPR_SERVER_HANDLE, HANDLE, HANDLE, BOOL );
DWORD APIENTRY MprAdminInterfaceCreate( MPR_SERVER_HANDLE, DWORD, LPBYTE, HANDLE * );
DWORD APIENTRY MprAdminInterfaceDelete( MPR_SERVER_HANDLE, HANDLE );
DWORD APIENTRY MprAdminInterfaceDisconnect( MPR_SERVER_HANDLE, HANDLE );
DWORD APIENTRY MprAdminInterfaceGetCredentials( LPWSTR, LPWSTR, LPWSTR, LPWSTR, LPWSTR );
DWORD APIENTRY MprAdminInterfaceGetHandle( MPR_SERVER_HANDLE, LPWSTR, HANDLE *, BOOL );
DWORD APIENTRY MprAdminInterfaceGetInfo( MPR_SERVER_HANDLE, HANDLE, DWORD, LPBYTE * );
DWORD APIENTRY MprAdminInterfaceQueryUpdateResult( MPR_SERVER_HANDLE, HANDLE, DWORD, LPDWORD );
DWORD APIENTRY MprAdminInterfaceSetCredentials( LPWSTR, LPWSTR, LPWSTR, LPWSTR, LPWSTR );
DWORD APIENTRY MprAdminInterfaceSetInfo( MPR_SERVER_HANDLE, HANDLE, DWORD, LPBYTE );
DWORD APIENTRY MprAdminInterfaceTransportAdd( MPR_SERVER_HANDLE, HANDLE, DWORD, LPBYTE, DWORD );
DWORD APIENTRY MprAdminInterfaceTransportGetInfo( MPR_SERVER_HANDLE, HANDLE, DWORD, LPBYTE *, LPDWORD );
DWORD APIENTRY MprAdminInterfaceTransportRemove( MPR_SERVER_HANDLE, HANDLE, DWORD );
DWORD APIENTRY MprAdminInterfaceTransportSetInfo( MPR_SERVER_HANDLE, HANDLE, DWORD, LPBYTE, DWORD );
DWORD APIENTRY MprAdminInterfaceUpdatePhonebookInfo( MPR_SERVER_HANDLE, HANDLE );
DWORD APIENTRY MprAdminInterfaceUpdateRoutes( MPR_SERVER_HANDLE, HANDLE, DWORD, HANDLE );
BOOL APIENTRY MprAdminIsServiceRunning( LPWSTR );
DWORD APIENTRY MprAdminMIBBufferFree( LPVOID );
DWORD APIENTRY MprAdminMIBEntryCreate( MIB_SERVER_HANDLE, DWORD, DWORD, LPVOID, DWORD );
DWORD APIENTRY MprAdminMIBEntryDelete( MIB_SERVER_HANDLE, DWORD, DWORD, LPVOID, DWORD );
DWORD APIENTRY MprAdminMIBEntryGet( MIB_SERVER_HANDLE, DWORD, DWORD, LPVOID, DWORD, LPVOID *, LPDWORD );
DWORD APIENTRY MprAdminMIBEntryGetFirst( MIB_SERVER_HANDLE, DWORD, DWORD, LPVOID, DWORD, LPVOID *, LPDWORD );
DWORD APIENTRY MprAdminMIBEntryGetNext( MIB_SERVER_HANDLE, DWORD, DWORD, LPVOID, DWORD, LPVOID *, LPDWORD );
DWORD APIENTRY MprAdminMIBEntrySet( MIB_SERVER_HANDLE, DWORD, DWORD, LPVOID, DWORD );
DWORD APIENTRY MprAdminMIBServerConnect( LPWSTR, MIB_SERVER_HANDLE * );
VOID APIENTRY MprAdminMIBServerDisconnect( MIB_SERVER_HANDLE );
DWORD APIENTRY MprAdminPortClearStatus( RAS_SERVER_HANDLE, HANDLE );
DWORD APIENTRY MprAdminPortDisconnect( RAS_SERVER_HANDLE, HANDLE );
DWORD APIENTRY MprAdminPortEnum( RAS_SERVER_HANDLE, DWORD, HANDLE, LPBYTE *, DWORD, LPDWORD, LPDWORD, LPDWORD );
DWORD APIENTRY MprAdminPortGetInfo( RAS_SERVER_HANDLE, DWORD, HANDLE, LPBYTE * );
DWORD APIENTRY MprAdminPortReset( RAS_SERVER_HANDLE, HANDLE );
DWORD APIENTRY MprAdminServerConnect( LPWSTR, MPR_SERVER_HANDLE * );
VOID APIENTRY MprAdminServerDisconnect( MPR_SERVER_HANDLE );
DWORD APIENTRY MprAdminServerGetInfo( MPR_SERVER_HANDLE, DWORD, LPBYTE * );
DWORD APIENTRY MprAdminTransportGetInfo( MPR_SERVER_HANDLE, DWORD, LPBYTE *, LPDWORD, LPBYTE *, LPDWORD );
DWORD APIENTRY MprAdminTransportSetInfo( MPR_SERVER_HANDLE, DWORD, LPBYTE, DWORD, LPBYTE, DWORD );
DWORD APIENTRY MprAdminUserGetInfo( const WCHAR *, const WCHAR *, DWORD, LPBYTE );
DWORD APIENTRY MprAdminUserSetInfo( const WCHAR *, const WCHAR *, DWORD, const LPBYTE );
DWORD APIENTRY MprConfigGetFriendlyName( HANDLE, PWCHAR, PWCHAR, DWORD );
DWORD APIENTRY MprConfigGetGuidName( HANDLE, PWCHAR, PWCHAR, DWORD );
DWORD APIENTRY MprConfigInterfaceCreate( HANDLE, DWORD, LPBYTE, HANDLE * );
DWORD APIENTRY MprConfigInterfaceDelete( HANDLE, HANDLE );
DWORD APIENTRY MprConfigInterfaceEnum( HANDLE, DWORD, LPBYTE *, DWORD, LPDWORD, LPDWORD, LPDWORD );
DWORD APIENTRY MprConfigInterfaceGetHandle( HANDLE, LPWSTR, HANDLE * );
DWORD APIENTRY MprConfigInterfaceGetInfo( HANDLE, HANDLE, DWORD, LPBYTE *, LPDWORD );
DWORD APIENTRY MprConfigInterfaceSetInfo( HANDLE, HANDLE, DWORD, LPBYTE );
DWORD APIENTRY MprConfigInterfaceTransportAdd( HANDLE, HANDLE, DWORD, LPWSTR, LPBYTE, DWORD, HANDLE * );
DWORD APIENTRY MprConfigInterfaceTransportEnum( HANDLE, HANDLE, DWORD, LPBYTE *, DWORD, LPDWORD, LPDWORD, LPDWORD );
DWORD APIENTRY MprConfigInterfaceTransportGetHandle( HANDLE, HANDLE, DWORD, HANDLE * );
DWORD APIENTRY MprConfigInterfaceTransportGetInfo( HANDLE, HANDLE, HANDLE, LPBYTE *, LPDWORD );
DWORD APIENTRY MprConfigInterfaceTransportRemove( HANDLE, HANDLE, HANDLE );
DWORD APIENTRY MprConfigInterfaceTransportSetInfo( HANDLE, HANDLE, HANDLE, LPBYTE, DWORD );
DWORD APIENTRY MprConfigServerBackup( HANDLE, LPWSTR );
DWORD APIENTRY MprConfigServerConnect( LPWSTR, HANDLE * );
VOID APIENTRY MprConfigServerDisconnect( HANDLE );
DWORD APIENTRY MprConfigServerFree( LPVOID );
DWORD APIENTRY MprConfigServerGetInfo( HANDLE, DWORD, LPBYTE * );
DWORD APIENTRY MprConfigServerInstall( DWORD, PVOID );
DWORD APIENTRY MprConfigServerRefresh( HANDLE );
DWORD APIENTRY MprConfigServerRestore( HANDLE, LPWSTR );
DWORD APIENTRY MprConfigTransportCreate( HANDLE, DWORD, LPWSTR, LPBYTE, DWORD, LPBYTE, DWORD, LPWSTR, HANDLE * );
DWORD APIENTRY MprConfigTransportDelete( HANDLE, HANDLE );
DWORD APIENTRY MprConfigTransportEnum( HANDLE, DWORD, LPBYTE *, DWORD, LPDWORD, LPDWORD, LPDWORD );
DWORD APIENTRY MprConfigTransportGetHandle( HANDLE, DWORD, HANDLE * );
DWORD APIENTRY MprConfigTransportGetInfo( HANDLE, HANDLE, LPBYTE *, LPDWORD, LPBYTE *, LPDWORD, LPWSTR * );
DWORD APIENTRY MprConfigTransportSetInfo( HANDLE, HANDLE, LPBYTE, DWORD, LPBYTE, DWORD, LPWSTR );
DWORD APIENTRY MprInfoBlockAdd( LPVOID, DWORD, DWORD, DWORD, LPBYTE, LPVOID * );
DWORD APIENTRY MprInfoBlockFind( LPVOID, DWORD, LPDWORD, LPDWORD, LPBYTE * );
DWORD APIENTRY MprInfoBlockQuerySize( LPVOID );
DWORD APIENTRY MprInfoBlockRemove( LPVOID, DWORD, LPVOID * );
DWORD APIENTRY MprInfoBlockSet( LPVOID, DWORD, DWORD, DWORD, LPBYTE, LPVOID * );
DWORD APIENTRY MprInfoCreate( DWORD, LPVOID * );
DWORD APIENTRY MprInfoDelete( LPVOID );
DWORD APIENTRY MprInfoDuplicate( LPVOID, LPVOID * );
DWORD APIENTRY MprInfoRemoveAll( LPVOID, LPVOID * );
DWORD APIENTRY MprSetupIpInIpInterfaceFriendlyNameCreate( PWCHAR, PMPR_IPINIP_INTERFACE_0 );
DWORD APIENTRY MprSetupIpInIpInterfaceFriendlyNameDelete( PWCHAR, GUID * );
DWORD APIENTRY MprSetupIpInIpInterfaceFriendlyNameEnum( PWCHAR, LPBYTE *, LPDWORD );
DWORD APIENTRY MprSetupIpInIpInterfaceFriendlyNameFree( LPVOID );
#if (WINVER >= 0x0500)
DWORD APIENTRY MprAdminDeregisterConnectionNotification( MPR_SERVER_HANDLE, HANDLE );
DWORD APIENTRY MprAdminDeviceEnum( MPR_SERVER_HANDLE, DWORD, LPBYTE *, LPDWORD );
DWORD APIENTRY MprAdminInterfaceDeviceGetInfo( MPR_SERVER_HANDLE, HANDLE, DWORD, DWORD, LPBYTE * );
DWORD APIENTRY MprAdminInterfaceDeviceSetInfo( MPR_SERVER_HANDLE, HANDLE, DWORD, DWORD, LPBYTE );
DWORD APIENTRY MprAdminInterfaceGetCredentialsEx( MPR_SERVER_HANDLE, HANDLE, DWORD, LPBYTE * );
DWORD APIENTRY MprAdminInterfaceSetCredentialsEx( MPR_SERVER_HANDLE, HANDLE, DWORD, LPBYTE );
DWORD APIENTRY MprAdminRegisterConnectionNotification( MPR_SERVER_HANDLE, HANDLE );
DWORD APIENTRY MprAdminSendUserMessage( MPR_SERVER_HANDLE, HANDLE, LPWSTR );
DWORD APIENTRY MprAdminTransportCreate( MPR_SERVER_HANDLE, DWORD, LPWSTR, LPBYTE, DWORD, LPBYTE, DWORD, LPWSTR );
#endif
#if (WINVER >= 0x0501)
DWORD APIENTRY MprAdminConnectionRemoveQuarantine( HANDLE, HANDLE, BOOL );
DWORD APIENTRY MprAdminEstablishDomainRasServer( PWCHAR, PWCHAR, BOOL );
DWORD APIENTRY MprAdminIsDomainRasServer( PWCHAR, PWCHAR, PBOOL );
DWORD APIENTRY MprAdminServerGetCredentials( MPR_SERVER_HANDLE, DWORD, LPBYTE * );
DWORD APIENTRY MprAdminServerSetCredentials( MPR_SERVER_HANDLE, DWORD, LPBYTE );
DWORD APIENTRY MprAdminServerSetInfo( MPR_SERVER_HANDLE, DWORD, LPBYTE );
DWORD APIENTRY MprConfigServerSetInfo( MPR_SERVER_HANDLE, DWORD, LPBYTE );
#endif
#if (WINVER >= 0x0600)
DWORD APIENTRY MprConfigFilterGetInfo( HANDLE, DWORD, LPBYTE );
DWORD APIENTRY MprConfigFilterSetInfo( HANDLE, DWORD, LPBYTE );
#endif
#if (WINVER >= 0x0601)
DWORD APIENTRY MprAdminConnectionEnumEx( RAS_SERVER_HANDLE, PMPRAPI_OBJECT_HEADER, DWORD, LPDWORD, LPDWORD, PRAS_CONNECTION_EX *, LPDWORD );
DWORD APIENTRY MprAdminConnectionGetInfoEx( RAS_SERVER_HANDLE, HANDLE, PRAS_CONNECTION_EX );
DWORD APIENTRY MprAdminIsServiceInitialized( LPWSTR, BOOL * );
DWORD APIENTRY MprAdminServerGetInfoEx( MPR_SERVER_HANDLE, MPR_SERVER_EX * );
DWORD APIENTRY MprAdminServerSetInfoEx( MPR_SERVER_HANDLE, MPR_SERVER_SET_CONFIG_EX * );
DWORD APIENTRY MprAdminUpdateConnection( RAS_SERVER_HANDLE, HANDLE, PRAS_UPDATE_CONNECTION );
DWORD APIENTRY MprConfigServerGetInfoEx( HANDLE, MPR_SERVER_EX * );
DWORD APIENTRY MprConfigServerSetInfoEx( HANDLE, MPR_SERVER_SET_CONFIG_EX * );
#endif
/* Functions implemented by administration providers */
BOOL APIENTRY MprAdminAcceptNewConnection( RAS_CONNECTION_0 *, RAS_CONNECTION_1 * );
BOOL APIENTRY MprAdminAcceptNewLink( RAS_PORT_0 *, RAS_PORT_1 * );
VOID APIENTRY MprAdminConnectionHangupNotification( RAS_CONNECTION_0 *, RAS_CONNECTION_1 * );
DWORD APIENTRY MprAdminGetIpAddressForUser( WCHAR *, WCHAR *, DWORD *, BOOL * );
VOID APIENTRY MprAdminLinkHangupNotification( RAS_PORT_0 *, RAS_PORT_1 * );
VOID APIENTRY MprAdminReleaseIpAddress( WCHAR *, WCHAR *, DWORD * );
#if (WINVER >= 0x0500)
BOOL APIENTRY MprAdminAcceptNewConnection2( RAS_CONNECTION_0 *, RAS_CONNECTION_1 *, RAS_CONNECTION_2 * );
VOID APIENTRY MprAdminConnectionHangupNotification2( RAS_CONNECTION_0 *, RAS_CONNECTION_1 *, RAS_CONNECTION_2 * );
DWORD APIENTRY MprAdminInitializeDll( VOID );
DWORD APIENTRY MprAdminTerminateDll( VOID );
#endif
#if (WINVER >= 0x0600)
BOOL APIENTRY MprAdminAcceptNewConnection3( RAS_CONNECTION_0 *, RAS_CONNECTION_1 *, RAS_CONNECTION_2 *, RAS_CONNECTION_3 * );
BOOL APIENTRY MprAdminAcceptReauthentication( RAS_CONNECTION_0 *, RAS_CONNECTION_1 *, RAS_CONNECTION_2 *, RAS_CONNECTION_3 * );
VOID APIENTRY MprAdminConnectionHangupNotification3( RAS_CONNECTION_0 *, RAS_CONNECTION_1 *, RAS_CONNECTION_2 *, RAS_CONNECTION_3 * );
DWORD APIENTRY MprAdminGetIpv6AddressForUser( WCHAR *, WCHAR *, IN6_ADDR *, BOOL * );
VOID APIENTRY MprAdminReleaseIpv6AddressForUser( WCHAR *, WCHAR *, IN6_ADDR * );
#endif
#if (WINVER >= 0x0601)
BOOL APIENTRY MprAdminAcceptNewConnectionEx( RAS_CONNECTION_EX * );
BOOL APIENTRY MprAdminAcceptReauthenticationEx( RAS_CONNECTION_EX * );
void APIENTRY MprAdminConnectionHangupNotificationEx( RAS_CONNECTION_EX * );
DWORD APIENTRY MprAdminInitializeDllEx( PMPRAPI_ADMIN_DLL_CALLBACKS );
#endif
/* Functions implemented as macros */
#define MprInfoBlockExists( p1, p2 ) \
(MprInfoBlockFind( p1, p2, NULL, NULL, NULL ) == NO_ERROR)
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* __ROUTING_MPRADMIN_H__ */