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

1792 lines
48 KiB
C

/*++
Copyright (c) Microsoft Corporation. All rights reserved.
Module Name:
mpradmin.h
Abstract:
This file contains the structures, defines and function prototypes for the
following APIs:
MprAdminIsServiceRunning
MprAdminServerConnect
MprAdminServerDisconnect
MprAdminBufferFree
MprAdminPortEnum
MprAdminConnectionEnum
MprAdminPortGetInfo
MprAdminConnectionGetInfo
MprAdminPortClearStats
MprAdminPortReset
MprAdminConnectionClearStats
MprAdminPortDisconnect
MprAdminGetErrorString
MprAdminAcceptNewConnection
MprAdminAcceptNewLink
MprAdminConnectionHangupNotification
MprAdminLinkHangupNotification
MprAdminGetIpAddressForUser
MprAdminReleaseIpAddress
MprAdminInitializeDll
MprAdminTerminateDll
MprAdminAcceptNewConnection2
MprAdminConnectionHangupNotification2
MprAdminUserGetInfo
MprAdminUserSetInfo
MprAdminSendUserMessage
MprAdminGetPDCServer
MprAdminRegisterConnectionNotification
MprAdminDeregisterConnectionNotification
MprAdminIsServiceRunning
MprAdminServerConnect
MprAdminServerDisconnect
MprAdminBufferFree
MprAdminServerGetInfo
MprAdminGetErrorString
MprAdminTransportCreate
MprAdminTransportSetInfo
MprAdminTransportGetInfo
MprAdminInterfaceCreate
MprAdminInterfaceDelete
MprAdminInterfaceGetInfo
MprAdminInterfaceTransportAdd
MprAdminInterfaceTransportGetInfo
MprAdminInterfaceTransportSetInfo
MprAdminInterfaceTransportRemove
MprAdminInterfaceGetHandle
MprAdminInterfaceSetCredentials
MprAdminInterfaceGetCredentials
MprAdminInterfaceEnum
MprAdminInterfaceConnect
MprAdminInterfaceDisconnect
MprAdminInterfaceUpdateRoutes
MprAdminInterfaceQueryUpdateResult
MprAdminInterfaceUpdatePhonebookInfo
MprAdminMIBServerConnect
MprAdminMIBServerDisconnect
MprAdminMIBBufferFree
MprAdminMIBEntryCreate
MprAdminMIBEntryDelete
MprAdminMIBEntryGet
MprAdminMIBEntrySet
MprAdminMIBEntryGetFirst
MprAdminMIBEntryGetNext
MprAdminMIBSetTrapInfo
MprAdminMIBGetTrapInfo
All MIB APIs operate with the conceptual MIB row.
MprConfigServerConnect
MprConfigServerDisconnect
MprConfigBufferFree
MprConfigServerGetInfo
MprConfigServerBackup
MprConfigServerRestore
MprConfigTransportCreate
MprConfigTransportDelete
MprConfigTransportGetHandle
MprConfigTransportSetInfo
MprConfigTransportGetInfo
MprConfigTransportEnum
MprConfigInterfaceCreate
MprConfigInterfaceDelete
MprConfigInterfaceGetHandle
MprConfigInterfaceGetInfo
MprConfigInterfaceEnum
MprConfigInterfaceTransportAdd
MprConfigInterfaceTransportRemove
MprConfigInterfaceTransportGetHandle
MprConfigInterfaceTransportGetInfo
MprConfigInterfaceTransportSetInfo
MprConfigInterfaceTransportEnum
MprSetupIpInIpInterfaceFriendlyNameEnum
MprSetupIpInIpInterfaceFriendlyNameFree
MprSetupIpInIpInterfaceFriendlyNameCreate
MprSetupIpInIpInterfaceFriendlyNameDelete
--*/
#ifndef __ROUTING_MPRADMIN_H__
#define __ROUTING_MPRADMIN_H__
#if _MSC_VER > 1000
#pragma once
#endif
#include <lmcons.h>
#include <ras.h>
#ifdef __cplusplus
extern "C" {
#endif
//#if(WINVER >= 0x0403)
//
// Name of the Routing and RemoteAccess Service
//
#define RRAS_SERVICE_NAME TEXT("RemoteAccess")
//
// Protocol IDs
//
#define PID_IPX 0x0000002B
#define PID_IP 0x00000021
#define PID_NBF 0x0000003F
#define PID_ATALK 0x00000029
#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 structures and definitions.
//
//
// MPR Interface types
//
typedef enum _ROUTER_INTERFACE_TYPE
{
ROUTER_IF_TYPE_CLIENT,
ROUTER_IF_TYPE_HOME_ROUTER,
ROUTER_IF_TYPE_FULL_ROUTER,
ROUTER_IF_TYPE_DEDICATED,
ROUTER_IF_TYPE_INTERNAL,
ROUTER_IF_TYPE_LOOPBACK,
ROUTER_IF_TYPE_TUNNEL1,
ROUTER_IF_TYPE_DIALOUT
}
ROUTER_INTERFACE_TYPE;
typedef enum _ROUTER_CONNECTION_STATE
{
ROUTER_IF_STATE_UNREACHABLE,
ROUTER_IF_STATE_DISCONNECTED,
ROUTER_IF_STATE_CONNECTING,
ROUTER_IF_STATE_CONNECTED
}
ROUTER_CONNECTION_STATE;
#define MPR_INTERFACE_OUT_OF_RESOURCES 0x00000001
#define MPR_INTERFACE_ADMIN_DISABLED 0x00000002
#define MPR_INTERFACE_CONNECTION_FAILURE 0x00000004
#define MPR_INTERFACE_SERVICE_PAUSED 0x00000008
#define MPR_INTERFACE_DIALOUT_HOURS_RESTRICTION 0x00000010
#define MPR_INTERFACE_NO_MEDIA_SENSE 0x00000020
#define MPR_INTERFACE_NO_DEVICE 0x00000040
typedef struct _MPR_INTERFACE_0
{
IN OUT WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN+1];
OUT HANDLE hInterface;
IN OUT BOOL fEnabled;
IN OUT ROUTER_INTERFACE_TYPE dwIfType;
OUT ROUTER_CONNECTION_STATE dwConnectionState;
OUT DWORD fUnReachabilityReasons;
OUT DWORD dwLastError;
}
MPR_INTERFACE_0, *PMPR_INTERFACE_0;
typedef struct _MPR_IPINIP_INTERFACE_0
{
WCHAR wszFriendlyName[MAX_INTERFACE_NAME_LEN+1];
GUID Guid;
}MPR_IPINIP_INTERFACE_0, *PMPR_IPINIP_INTERFACE_0;
#if(WINVER >= 0x0500)
typedef struct _MPR_INTERFACE_1
{
IN OUT WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN+1];
OUT HANDLE hInterface;
IN OUT BOOL fEnabled;
IN OUT ROUTER_INTERFACE_TYPE dwIfType;
OUT ROUTER_CONNECTION_STATE dwConnectionState;
OUT DWORD fUnReachabilityReasons;
OUT DWORD dwLastError;
OUT LPWSTR lpwsDialoutHoursRestriction;
}
MPR_INTERFACE_1, *PMPR_INTERFACE_1;
//
// MPR_INTERFACE_2 definitions
//
#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
//
// MPR_INTERFACE_2 'dwfOptions' bit flags.
//
#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
#if (WINVER >= 0x501)
#define MPRIO_IpSecPreSharedKey 0x80000000
#endif
//
// MPR_INTERFACE_2 'dwProtocols' bit flags.
//
#define MPRNP_Ipx RASNP_Ipx
#define MPRNP_Ip RASNP_Ip
//
// MPR_INTERFACE_2 'szDeviceType' default strings.
//
#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 MPRDT_Irda RASDT_Irda
#define MPRDT_Parallel RASDT_Parallel
//
// MPR_INTERFACE_2 'dwType' settings
//
#define MPRET_Phone RASET_Phone
#define MPRET_Vpn RASET_Vpn
#define MPRET_Direct RASET_Direct
//
// MPR_INTERFACE_2 'dwDialMode' values.
//
#define MPRDM_DialFirst 0
#define MPRDM_DialAll RASEDM_DialAll
#define MPRDM_DialAsNeeded RASEDM_DialAsNeeded
//
// MPR_INTERFACE_2 'dwIdleDisconnectSeconds' constants.
//
#define MPRIDS_Disabled RASIDS_Disabled
#define MPRIDS_UseGlobalValue RASIDS_UseGlobalValue
//
// MPR_INTERFACE_2 encryption types.
//
#define MPR_ET_None ET_None
#define MPR_ET_Require ET_Require
#define MPR_ET_RequireMax ET_RequireMax
#define MPR_ET_Optional ET_Optional
//
// MPR_INTERFACE_2 Vpn strategies
//
#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
//
// Used to create/get/set a demand dial interface plus its
// ras configuration.
//
typedef struct _MPR_INTERFACE_2
{
IN OUT WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN+1];
OUT HANDLE hInterface;
IN OUT BOOL fEnabled;
IN OUT ROUTER_INTERFACE_TYPE dwIfType;
OUT ROUTER_CONNECTION_STATE dwConnectionState;
OUT DWORD fUnReachabilityReasons;
OUT DWORD dwLastError;
//
// Demand dial-specific properties
//
DWORD dwfOptions;
//
// Location/phone number
//
WCHAR szLocalPhoneNumber[ RAS_MaxPhoneNumber + 1 ];
PWCHAR szAlternates;
//
// PPP/Ip
//
DWORD ipaddr;
DWORD ipaddrDns;
DWORD ipaddrDnsAlt;
DWORD ipaddrWins;
DWORD ipaddrWinsAlt;
//
// NetProtocols
//
DWORD dwfNetProtocols;
//
// Device
//
WCHAR szDeviceType[ MPR_MaxDeviceType + 1 ];
WCHAR szDeviceName[ MPR_MaxDeviceName + 1 ];
//
// X.25
//
WCHAR szX25PadType[ MPR_MaxPadType + 1 ];
WCHAR szX25Address[ MPR_MaxX25Address + 1 ];
WCHAR szX25Facilities[ MPR_MaxFacilities + 1 ];
WCHAR szX25UserData[ MPR_MaxUserData + 1 ];
DWORD dwChannels;
//
// Multilink
//
DWORD dwSubEntries;
DWORD dwDialMode;
DWORD dwDialExtraPercent;
DWORD dwDialExtraSampleSeconds;
DWORD dwHangUpExtraPercent;
DWORD dwHangUpExtraSampleSeconds;
//
// Idle timeout
//
DWORD dwIdleDisconnectSeconds;
//
// Entry Type
//
DWORD dwType;
//
// EncryptionType
//
DWORD dwEncryptionType;
//
// EAP information
//
DWORD dwCustomAuthKey;
DWORD dwCustomAuthDataSize;
LPBYTE lpbCustomAuthData;
//
// Guid of the connection
//
GUID guidId;
//
// Vpn Strategy
//
DWORD dwVpnStrategy;
} MPR_INTERFACE_2, *PMPR_INTERFACE_2;
//
// Used to set/get per-link information for multilinked demand
// dial interfaces.
//
typedef struct _MPR_DEVICE_0
{
//
// Device
//
WCHAR szDeviceType[ MPR_MaxDeviceType + 1 ];
WCHAR szDeviceName[ MPR_MaxDeviceName + 1 ];
}
MPR_DEVICE_0, *PMPR_DEVICE_0;
typedef struct _MPR_DEVICE_1
{
//
// Device
//
WCHAR szDeviceType[ MPR_MaxDeviceType + 1 ];
WCHAR szDeviceName[ MPR_MaxDeviceName + 1 ];
//
// Phone numbers
//
WCHAR szLocalPhoneNumber[ MPR_MaxPhoneNumber + 1 ];
PWCHAR szAlternates;
}
MPR_DEVICE_1, *PMPR_DEVICE_1;
//
// Used to get/set extended credentials information such as
// eap credentials info.
//
typedef struct _MPR_CREDENTIALSEX_0
{
DWORD dwSize;
LPBYTE lpbCredentialsInfo;
}
MPR_CREDENTIALSEX_0, *PMPR_CREDENTIALSEX_0;
typedef struct _MPR_CREDENTIALSEX_1
{
DWORD dwSize;
LPBYTE lpbCredentialsInfo;
}
MPR_CREDENTIALSEX_1, *PMPR_CREDENTIALSEX_1;
#endif /* WINVER >= 0x0500 */
typedef struct _MPR_TRANSPORT_0
{
OUT DWORD dwTransportId;
OUT HANDLE hTransport;
OUT WCHAR wszTransportName[MAX_TRANSPORT_NAME_LEN+1];
}
MPR_TRANSPORT_0, *PMPR_TRANSPORT_0;
typedef struct _MPR_IFTRANSPORT_0
{
OUT DWORD dwTransportId;
OUT HANDLE hIfTransport;
OUT WCHAR wszIfTransportName[MAX_TRANSPORT_NAME_LEN+1];
}
MPR_IFTRANSPORT_0, *PMPR_IFTRANSPORT_0;
typedef struct _MPR_SERVER_0
{
OUT BOOL fLanOnlyMode;
OUT DWORD dwUpTime; // In seconds
OUT DWORD dwTotalPorts;
OUT DWORD dwPortsInUse;
}
MPR_SERVER_0, *PMPR_SERVER_0;
//
// Port condition codes
//
typedef enum _RAS_PORT_CONDITION
{
RAS_PORT_NON_OPERATIONAL,
RAS_PORT_DISCONNECTED,
RAS_PORT_CALLING_BACK,
RAS_PORT_LISTENING,
RAS_PORT_AUTHENTICATING,
RAS_PORT_AUTHENTICATED,
RAS_PORT_INITIALIZING
}
RAS_PORT_CONDITION;
//
// Hardware condition codes
//
typedef enum _RAS_HARDWARE_CONDITION
{
RAS_HARDWARE_OPERATIONAL,
RAS_HARDWARE_FAILURE
}
RAS_HARDWARE_CONDITION;
typedef struct _RAS_PORT_0
{
OUT HANDLE hPort;
OUT HANDLE hConnection;
OUT RAS_PORT_CONDITION dwPortCondition;
OUT DWORD dwTotalNumberOfCalls;
OUT DWORD dwConnectDuration; // In seconds
OUT WCHAR wszPortName[ MAX_PORT_NAME + 1 ];
OUT WCHAR wszMediaName[ MAX_MEDIA_NAME + 1 ];
OUT WCHAR wszDeviceName[ MAX_DEVICE_NAME + 1 ];
OUT WCHAR wszDeviceType[ MAX_DEVICETYPE_NAME + 1 ];
}
RAS_PORT_0, *PRAS_PORT_0;
typedef struct _RAS_PORT_1
{
OUT HANDLE hPort;
OUT HANDLE hConnection;
OUT RAS_HARDWARE_CONDITION dwHardwareCondition;
OUT DWORD dwLineSpeed; // in bits/second
OUT DWORD dwBytesXmited;
OUT DWORD dwBytesRcved;
OUT DWORD dwFramesXmited;
OUT DWORD dwFramesRcved;
OUT DWORD dwCrcErr;
OUT DWORD dwTimeoutErr;
OUT DWORD dwAlignmentErr;
OUT DWORD dwHardwareOverrunErr;
OUT DWORD dwFramingErr;
OUT DWORD dwBufferOverrunErr;
OUT DWORD dwCompressionRatioIn;
OUT DWORD dwCompressionRatioOut;
}
RAS_PORT_1, *PRAS_PORT_1;
//
// Maximum length of address string, e.g. "255.255.255.255" for IP.
//
#define IPADDRESSLEN 15
#define IPXADDRESSLEN 22
#define ATADDRESSLEN 32
typedef struct _PPP_NBFCP_INFO
{
OUT DWORD dwError;
OUT WCHAR wszWksta[ NETBIOS_NAME_LEN + 1 ];
}
PPP_NBFCP_INFO;
typedef struct _PPP_IPCP_INFO
{
OUT DWORD dwError;
OUT WCHAR wszAddress[ IPADDRESSLEN + 1 ];
OUT WCHAR wszRemoteAddress[ IPADDRESSLEN + 1 ];
}
PPP_IPCP_INFO;
//
// PPP_IPCP_INFO2 dwOptions values.
//
#define PPP_IPCP_VJ 0x00000001
typedef struct _PPP_IPCP_INFO2
{
OUT DWORD dwError;
OUT WCHAR wszAddress[ IPADDRESSLEN + 1 ];
OUT WCHAR wszRemoteAddress[ IPADDRESSLEN + 1 ];
OUT DWORD dwOptions;
OUT DWORD dwRemoteOptions;
}
PPP_IPCP_INFO2;
typedef struct _PPP_IPXCP_INFO
{
OUT DWORD dwError;
OUT WCHAR wszAddress[ IPXADDRESSLEN + 1 ];
}
PPP_IPXCP_INFO;
typedef struct _PPP_ATCP_INFO
{
OUT DWORD dwError;
OUT WCHAR wszAddress[ ATADDRESSLEN + 1 ];
}
PPP_ATCP_INFO;
typedef struct _PPP_INFO
{
OUT PPP_NBFCP_INFO nbf;
OUT PPP_IPCP_INFO ip;
OUT PPP_IPXCP_INFO ipx;
OUT PPP_ATCP_INFO at;
} PPP_INFO;
#if(WINVER >= 0x0500)
//
// PPP_CCP dwCompressionAlgorithm values.
//
#define RASCCPCA_MPPC 0x00000006
#define RASCCPCA_STAC 0x00000005
//
// PPP_CCP dwOptions values.
//
#define PPP_CCP_COMPRESSION 0x00000001
#define PPP_CCP_ENCRYPTION40BITOLD 0x00000010
#define PPP_CCP_ENCRYPTION40BIT 0x00000020
#define PPP_CCP_ENCRYPTION128BIT 0x00000040
#define PPP_CCP_ENCRYPTION56BIT 0x00000080
#define PPP_CCP_HISTORYLESS 0x01000000
typedef struct _PPP_CCP_INFO
{
OUT DWORD dwError;
OUT DWORD dwCompressionAlgorithm;
OUT DWORD dwOptions;
OUT DWORD dwRemoteCompressionAlgorithm;
OUT DWORD dwRemoteOptions;
}
PPP_CCP_INFO;
//
// PPP_LCP dwAuthenticatonProtocol values.
//
#define PPP_LCP_PAP 0xC023
#define PPP_LCP_SPAP 0xC123
#define PPP_LCP_CHAP 0xC223
#define PPP_LCP_EAP 0xC227
//
// PPP_LCP dwAuthenticatonData values.
//
#define PPP_LCP_CHAP_MD5 0x05
#define PPP_LCP_CHAP_MS 0x80
#define PPP_LCP_CHAP_MSV2 0x81
//
// PPP_LCP dwOption values
//
#define PPP_LCP_MULTILINK_FRAMING 0x00000001
#define PPP_LCP_PFC 0x00000002
#define PPP_LCP_ACFC 0x00000004
#define PPP_LCP_SSHF 0x00000008
#define PPP_LCP_DES_56 0x00000010
#define PPP_LCP_3_DES 0x00000020
typedef struct _PPP_LCP_INFO
{
OUT DWORD dwError;
OUT DWORD dwAuthenticationProtocol;
OUT DWORD dwAuthenticationData;
OUT DWORD dwRemoteAuthenticationProtocol;
OUT DWORD dwRemoteAuthenticationData;
OUT DWORD dwTerminateReason;
OUT DWORD dwRemoteTerminateReason;
OUT DWORD dwOptions;
OUT DWORD dwRemoteOptions;
OUT DWORD dwEapTypeId;
OUT DWORD dwRemoteEapTypeId;
}
PPP_LCP_INFO;
typedef struct _PPP_INFO_2
{
OUT PPP_NBFCP_INFO nbf;
OUT PPP_IPCP_INFO2 ip;
OUT PPP_IPXCP_INFO ipx;
OUT PPP_ATCP_INFO at;
OUT PPP_CCP_INFO ccp;
OUT PPP_LCP_INFO lcp;
}
PPP_INFO_2;
#endif /* WINVER >= 0x0500 */
//
// Possible bits set in Connection Flags field
//
#define RAS_FLAGS_PPP_CONNECTION 0x00000001
#define RAS_FLAGS_MESSENGER_PRESENT 0x00000002
#if(WINVER < 0x0501)
#define RAS_FLAGS_RAS_CONNECTION 0x00000004
#endif
typedef struct _RAS_CONNECTION_0
{
OUT HANDLE hConnection;
OUT HANDLE hInterface;
OUT DWORD dwConnectDuration; // In seconds
OUT ROUTER_INTERFACE_TYPE dwInterfaceType;
OUT DWORD dwConnectionFlags;
OUT WCHAR wszInterfaceName[ MAX_INTERFACE_NAME_LEN + 1 ];
OUT WCHAR wszUserName[ UNLEN + 1 ];
OUT WCHAR wszLogonDomain[ DNLEN + 1 ];
OUT WCHAR wszRemoteComputer[ NETBIOS_NAME_LEN + 1 ];
}
RAS_CONNECTION_0, *PRAS_CONNECTION_0;
typedef struct _RAS_CONNECTION_1
{
OUT HANDLE hConnection;
OUT HANDLE hInterface;
OUT PPP_INFO PppInfo;
OUT DWORD dwBytesXmited;
OUT DWORD dwBytesRcved;
OUT DWORD dwFramesXmited;
OUT DWORD dwFramesRcved;
OUT DWORD dwCrcErr;
OUT DWORD dwTimeoutErr;
OUT DWORD dwAlignmentErr;
OUT DWORD dwHardwareOverrunErr;
OUT DWORD dwFramingErr;
OUT DWORD dwBufferOverrunErr;
OUT DWORD dwCompressionRatioIn;
OUT DWORD dwCompressionRatioOut;
}
RAS_CONNECTION_1, *PRAS_CONNECTION_1;
#if(WINVER >= 0x0500)
typedef struct _RAS_CONNECTION_2
{
OUT HANDLE hConnection;
OUT WCHAR wszUserName[ UNLEN + 1 ];
OUT ROUTER_INTERFACE_TYPE dwInterfaceType;
OUT GUID guid;
OUT PPP_INFO_2 PppInfo2;
}
RAS_CONNECTION_2, *PRAS_CONNECTION_2;
#endif /* WINVER >= 0x0500 */
//
// Structures used by the MPRADMIN USER APIs. Use level 0 to get/set this
// structure.
//
//
// Bits indicating user's Remote Access privileges and mask to isolate
// call back privilege.
//
// Note: Bit 0 MUST represent NoCallback due to a quirk of the "userparms"
// storage method. When a new LAN Manager user is created, bit 0 of the
// userparms field is set to 1 and all other bits are 0. These bits are
// arranged so this "no Dial-In info" state maps to the "default Dial-In
// privilege" state.
#define RASPRIV_NoCallback 0x01
#define RASPRIV_AdminSetCallback 0x02
#define RASPRIV_CallerSetCallback 0x04
#define RASPRIV_DialinPrivilege 0x08
//
// The following are flags for the bfPrivilege2 member of RAS_USER_1
// structure
//
#define RASPRIV2_DialinPolicy 0x1
#define RASPRIV_CallbackType (RASPRIV_AdminSetCallback \
| RASPRIV_CallerSetCallback \
| RASPRIV_NoCallback)
typedef struct _RAS_USER_0
{
OUT BYTE bfPrivilege;
OUT WCHAR wszPhoneNumber[ MAX_PHONE_NUMBER_LEN + 1];
}
RAS_USER_0, *PRAS_USER_0;
typedef struct _RAS_USER_1
{
OUT BYTE bfPrivilege;
OUT WCHAR wszPhoneNumber[ MAX_PHONE_NUMBER_LEN + 1];
OUT BYTE bfPrivilege2;
}
RAS_USER_1, *PRAS_USER_1;
//
// Used as RPC binding handle to server
//
typedef HANDLE RAS_SERVER_HANDLE;
typedef HANDLE MPR_SERVER_HANDLE;
typedef HANDLE MIB_SERVER_HANDLE;
//
// RAS ADMIN APIs
//
DWORD APIENTRY
MprAdminConnectionEnum(
IN RAS_SERVER_HANDLE hRasServer,
IN DWORD dwLevel,
OUT LPBYTE * lplpbBuffer,
IN DWORD dwPrefMaxLen,
OUT LPDWORD lpdwEntriesRead,
OUT LPDWORD lpdwTotalEntries,
IN LPDWORD lpdwResumeHandle OPTIONAL
);
DWORD APIENTRY
MprAdminPortEnum(
IN RAS_SERVER_HANDLE hRasServer,
IN DWORD dwLevel,
IN HANDLE hConnection,
OUT LPBYTE * lplpbBuffer,
IN DWORD dwPrefMaxLen,
OUT LPDWORD lpdwEntriesRead,
OUT LPDWORD lpdwTotalEntries,
IN LPDWORD lpdwResumeHandle OPTIONAL
);
DWORD APIENTRY
MprAdminConnectionGetInfo(
IN RAS_SERVER_HANDLE hRasServer,
IN DWORD dwLevel,
IN HANDLE hConnection,
OUT LPBYTE * lplpbBuffer
);
DWORD APIENTRY
MprAdminPortGetInfo(
IN RAS_SERVER_HANDLE hRasServer,
IN DWORD dwLevel,
IN HANDLE hPort,
OUT LPBYTE * lplpbBuffer
);
DWORD APIENTRY
MprAdminConnectionClearStats(
IN RAS_SERVER_HANDLE hRasServer,
IN HANDLE hConnection
);
DWORD APIENTRY
MprAdminPortClearStats(
IN RAS_SERVER_HANDLE hRasServer,
IN HANDLE hPort
);
DWORD APIENTRY
MprAdminPortReset(
IN RAS_SERVER_HANDLE hRasServer,
IN HANDLE hPort
);
DWORD APIENTRY
MprAdminPortDisconnect(
IN RAS_SERVER_HANDLE hRasServer,
IN HANDLE hPort
);
BOOL APIENTRY
MprAdminAcceptNewConnection(
IN RAS_CONNECTION_0 * pRasConnection0,
IN RAS_CONNECTION_1 * pRasConnection1
);
#if(WINVER >= 0x0500)
BOOL APIENTRY
MprAdminAcceptNewConnection2(
IN RAS_CONNECTION_0 * pRasConnection0,
IN RAS_CONNECTION_1 * pRasConnection1,
IN RAS_CONNECTION_2 * pRasConnection2
);
#endif /* WINVER >= 0x0500 */
BOOL APIENTRY
MprAdminAcceptNewLink (
IN RAS_PORT_0 * pRasPort0,
IN RAS_PORT_1 * pRasPort1
);
VOID APIENTRY
MprAdminConnectionHangupNotification(
IN RAS_CONNECTION_0 * pRasConnection0,
IN RAS_CONNECTION_1 * pRasConnection1
);
#if(WINVER >= 0x0500)
VOID APIENTRY
MprAdminConnectionHangupNotification2(
IN RAS_CONNECTION_0 * pRasConnection0,
IN RAS_CONNECTION_1 * pRasConnection1,
IN RAS_CONNECTION_2 * pRasConnection2
);
#endif /* WINVER >= 0x0500 */
VOID APIENTRY
MprAdminLinkHangupNotification (
IN RAS_PORT_0 * pRasPort0,
IN RAS_PORT_1 * pRasPort1
);
DWORD APIENTRY
MprAdminGetIpAddressForUser (
IN WCHAR * lpwszUserName,
IN WCHAR * lpwszPortName,
IN OUT DWORD * lpdwIpAddress,
OUT BOOL * bNotifyRelease
);
VOID APIENTRY
MprAdminReleaseIpAddress (
IN WCHAR * lpszUserName,
IN WCHAR * lpszPortName,
IN DWORD * lpdwIpAddress
);
#if(WINVER >= 0x0500)
DWORD APIENTRY
MprAdminInitializeDll(
VOID
);
DWORD APIENTRY
MprAdminTerminateDll(
VOID
);
#endif
//
// MprAdminUser APIs
//
DWORD APIENTRY
MprAdminUserGetInfo(
IN const WCHAR * lpszServer,
IN const WCHAR * lpszUser,
IN DWORD dwLevel,
OUT LPBYTE lpbBuffer
);
DWORD APIENTRY
MprAdminUserSetInfo(
IN const WCHAR * lpszServer,
IN const WCHAR * lpszUser,
IN DWORD dwLevel,
IN const LPBYTE lpbBuffer
);
#if(WINVER >= 0x0500)
DWORD APIENTRY
MprAdminSendUserMessage(
IN MPR_SERVER_HANDLE hMprServer,
IN HANDLE hConnection,
IN LPWSTR lpwszMessage
);
#endif /* WINVER >= 0x0500 */
DWORD APIENTRY
MprAdminGetPDCServer(
IN const WCHAR * lpszDomain,
IN const WCHAR * lpszServer,
OUT LPWSTR lpszPDCServer
);
//
// Router APIs
//
BOOL APIENTRY
MprAdminIsServiceRunning(
IN LPWSTR lpwsServerName
);
DWORD APIENTRY
MprAdminServerConnect(
IN LPWSTR lpwsServerName OPTIONAL,
OUT MPR_SERVER_HANDLE * phMprServer
);
VOID APIENTRY
MprAdminServerDisconnect(
IN MPR_SERVER_HANDLE hMprServer
);
#if (WINVER >= 0x501)
DWORD APIENTRY
MprAdminServerGetCredentials(
IN MPR_SERVER_HANDLE hMprServer,
IN DWORD dwLevel,
IN LPBYTE * lplpbBuffer
);
DWORD APIENTRY
MprAdminServerSetCredentials(
IN MPR_SERVER_HANDLE hMprServer,
IN DWORD dwLevel,
IN LPBYTE lpbBuffer
);
#endif
DWORD APIENTRY
MprAdminBufferFree(
IN LPVOID pBuffer
);
DWORD APIENTRY
MprAdminGetErrorString(
IN DWORD dwError,
OUT LPWSTR * lpwsErrorString
);
DWORD APIENTRY
MprAdminServerGetInfo(
IN MPR_SERVER_HANDLE hMprServer,
IN DWORD dwLevel,
OUT LPBYTE * lplpbBuffer
);
#if(WINVER >= 0x0500)
DWORD APIENTRY
MprAdminTransportCreate(
IN MPR_SERVER_HANDLE hMprServer,
IN DWORD dwTransportId,
IN LPWSTR lpwsTransportName OPTIONAL,
IN LPBYTE pGlobalInfo,
IN DWORD dwGlobalInfoSize,
IN LPBYTE pClientInterfaceInfo OPTIONAL,
IN DWORD dwClientInterfaceInfoSize OPTIONAL,
IN LPWSTR lpwsDLLPath
);
#endif /* WINVER >= 0x0500 */
DWORD APIENTRY
MprAdminTransportSetInfo(
IN MPR_SERVER_HANDLE hMprServer,
IN DWORD dwTransportId,
IN LPBYTE pGlobalInfo OPTIONAL,
IN DWORD dwGlobalInfoSize,
IN LPBYTE pClientInterfaceInfo OPTIONAL,
IN DWORD dwClientInterfaceInfoSize
);
DWORD APIENTRY
MprAdminTransportGetInfo(
IN MPR_SERVER_HANDLE hMprServer,
IN DWORD dwTransportId,
OUT LPBYTE * ppGlobalInfo OPTIONAL,
OUT LPDWORD lpdwGlobalInfoSize OPTIONAL,
OUT LPBYTE * ppClientInterfaceInfo OPTIONAL,
OUT LPDWORD lpdwClientInterfaceInfoSize OPTIONAL
);
#if(WINVER >= 0x0500)
DWORD APIENTRY
MprAdminDeviceEnum(
IN MPR_SERVER_HANDLE hMprServer,
IN DWORD dwLevel,
OUT LPBYTE* lplpbBuffer,
OUT LPDWORD lpdwTotalEntries);
#endif /* WINVER >= 0x0500 */
DWORD APIENTRY
MprAdminInterfaceGetHandle(
IN MPR_SERVER_HANDLE hMprServer,
IN LPWSTR lpwsInterfaceName,
OUT HANDLE * phInterface,
IN BOOL fIncludeClientInterfaces
);
DWORD APIENTRY
MprAdminInterfaceCreate(
IN MPR_SERVER_HANDLE hMprServer,
IN DWORD dwLevel,
IN LPBYTE lpbBuffer,
OUT HANDLE * phInterface
);
DWORD APIENTRY
MprAdminInterfaceGetInfo(
IN MPR_SERVER_HANDLE hMprServer,
IN HANDLE hInterface,
IN DWORD dwLevel,
IN LPBYTE * lplpbBuffer
);
DWORD APIENTRY
MprAdminInterfaceSetInfo(
IN MPR_SERVER_HANDLE hMprServer,
IN HANDLE hInterface,
IN DWORD dwLevel,
IN LPBYTE lpbBuffer
);
DWORD APIENTRY
MprAdminInterfaceDelete(
IN MPR_SERVER_HANDLE hMprServer,
IN HANDLE hInterface
);
#if(WINVER >= 0x0500)
DWORD APIENTRY
MprAdminInterfaceDeviceGetInfo(
IN MPR_SERVER_HANDLE hMprServer,
IN HANDLE hInterface,
IN DWORD dwIndex,
IN DWORD dwLevel,
OUT LPBYTE* lplpBuffer
);
DWORD APIENTRY
MprAdminInterfaceDeviceSetInfo(
IN MPR_SERVER_HANDLE hMprServer,
IN HANDLE hInterface,
IN DWORD dwIndex,
IN DWORD dwLevel,
IN LPBYTE lplpBuffer
);
#endif /* WINVER >= 0x0500 */
DWORD APIENTRY
MprAdminInterfaceTransportRemove(
IN MPR_SERVER_HANDLE hMprServer,
IN HANDLE hInterface,
IN DWORD dwTransportId
);
DWORD APIENTRY
MprAdminInterfaceTransportAdd(
IN MPR_SERVER_HANDLE hMprServer,
IN HANDLE hInterface,
IN DWORD dwTransportId,
IN LPBYTE pInterfaceInfo,
IN DWORD dwInterfaceInfoSize
);
DWORD APIENTRY
MprAdminInterfaceTransportGetInfo(
IN MPR_SERVER_HANDLE hMprServer,
IN HANDLE hInterface,
IN DWORD dwTransportId,
OUT LPBYTE * ppInterfaceInfo,
OUT LPDWORD lpdwpInterfaceInfoSize OPTIONAL
);
DWORD APIENTRY
MprAdminInterfaceTransportSetInfo(
IN MPR_SERVER_HANDLE hMprServer,
IN HANDLE hInterface,
IN DWORD dwTransportId,
IN LPBYTE pInterfaceInfo,
IN DWORD dwInterfaceInfoSize
);
DWORD APIENTRY
MprAdminInterfaceEnum(
IN MPR_SERVER_HANDLE hMprServer,
IN DWORD dwLevel,
OUT LPBYTE * lplpbBuffer,
IN DWORD dwPrefMaxLen,
OUT LPDWORD lpdwEntriesRead,
OUT LPDWORD lpdwTotalEntries,
IN LPDWORD lpdwResumeHandle OPTIONAL
);
DWORD APIENTRY
MprSetupIpInIpInterfaceFriendlyNameEnum(
IN PWCHAR pwszMachineName,
OUT LPBYTE* lplpBuffer,
OUT LPDWORD lpdwEntriesRead
);
DWORD APIENTRY
MprSetupIpInIpInterfaceFriendlyNameFree(
IN LPVOID lpBuffer
);
DWORD APIENTRY
MprSetupIpInIpInterfaceFriendlyNameCreate(
PWCHAR pwszMachineName,
PMPR_IPINIP_INTERFACE_0 pNameInformation
);
DWORD APIENTRY
MprSetupIpInIpInterfaceFriendlyNameDelete(
IN PWCHAR pwszMachineName,
IN GUID *pGuid
);
DWORD APIENTRY
MprAdminInterfaceSetCredentials(
IN LPWSTR lpwsServer OPTIONAL,
IN LPWSTR lpwsInterfaceName,
IN LPWSTR lpwsUserName OPTIONAL,
IN LPWSTR lpwsDomainName OPTIONAL,
IN LPWSTR lpwsPassword OPTIONAL
);
DWORD APIENTRY
MprAdminInterfaceGetCredentials(
IN LPWSTR lpwsServer OPTIONAL,
IN LPWSTR lpwsInterfaceName,
OUT LPWSTR lpwsUserName OPTIONAL,
OUT LPWSTR lpwsPassword OPTIONAL,
OUT LPWSTR lpwsDomainName OPTIONAL
);
#if(WINVER >= 0x0500)
DWORD APIENTRY
MprAdminInterfaceSetCredentialsEx(
IN MPR_SERVER_HANDLE hMprServer,
IN HANDLE hInterface,
IN DWORD dwLevel,
IN LPBYTE lpbBuffer
);
DWORD APIENTRY
MprAdminInterfaceGetCredentialsEx(
IN MPR_SERVER_HANDLE hMprServer,
IN HANDLE hInterface,
IN DWORD dwLevel,
OUT LPBYTE * lplpbBuffer
);
#endif /* WINVER >= 0x0500 */
DWORD APIENTRY
MprAdminInterfaceConnect(
IN MPR_SERVER_HANDLE hMprServer,
IN HANDLE hInterface,
IN HANDLE hEvent,
IN BOOL fSynchronous
);
DWORD APIENTRY
MprAdminInterfaceDisconnect(
IN MPR_SERVER_HANDLE hMprServer,
IN HANDLE hInterface
);
DWORD APIENTRY
MprAdminInterfaceUpdateRoutes(
IN MPR_SERVER_HANDLE hMprServer,
IN HANDLE hInterface,
IN DWORD dwProtocolId,
IN HANDLE hEvent
);
DWORD APIENTRY
MprAdminInterfaceQueryUpdateResult(
IN MPR_SERVER_HANDLE hMprServer,
IN HANDLE hInterface,
IN DWORD dwProtocolId,
OUT LPDWORD lpdwUpdateResult
);
DWORD APIENTRY
MprAdminInterfaceUpdatePhonebookInfo(
IN MPR_SERVER_HANDLE hMprServer,
IN HANDLE hInterface
);
#if(WINVER >= 0x0500)
DWORD APIENTRY
MprAdminRegisterConnectionNotification(
IN MPR_SERVER_HANDLE hMprServer,
IN HANDLE hEventNotification
);
DWORD APIENTRY
MprAdminDeregisterConnectionNotification(
IN MPR_SERVER_HANDLE hMprServer,
IN HANDLE hEventNotification
);
#endif /* WINVER >= 0x0500 */
//
// MIB APIs
//
DWORD APIENTRY
MprAdminMIBServerConnect(
IN LPWSTR lpwsServerName OPTIONAL,
OUT MIB_SERVER_HANDLE * phMibServer
);
VOID APIENTRY
MprAdminMIBServerDisconnect(
IN MIB_SERVER_HANDLE hMibServer
);
DWORD APIENTRY
MprAdminMIBEntryCreate(
IN MIB_SERVER_HANDLE hMibServer,
IN DWORD dwPid,
IN DWORD dwRoutingPid,
IN LPVOID lpEntry,
IN DWORD dwEntrySize
);
DWORD APIENTRY
MprAdminMIBEntryDelete(
IN MIB_SERVER_HANDLE hMibServer,
IN DWORD dwProtocolId,
IN DWORD dwRoutingPid,
IN LPVOID lpEntry,
IN DWORD dwEntrySize
);
DWORD APIENTRY
MprAdminMIBEntrySet(
IN MIB_SERVER_HANDLE hMibServer,
IN DWORD dwProtocolId,
IN DWORD dwRoutingPid,
IN LPVOID lpEntry,
IN DWORD dwEntrySize
);
DWORD APIENTRY
MprAdminMIBEntryGet(
IN MIB_SERVER_HANDLE hMibServer,
IN DWORD dwProtocolId,
IN DWORD dwRoutingPid,
IN LPVOID lpInEntry,
IN DWORD dwInEntrySize,
OUT LPVOID* lplpOutEntry,
OUT LPDWORD lpOutEntrySize
);
DWORD APIENTRY
MprAdminMIBEntryGetFirst(
IN MIB_SERVER_HANDLE hMibServer,
IN DWORD dwProtocolId,
IN DWORD dwRoutingPid,
IN LPVOID lpInEntry,
IN DWORD dwInEntrySize,
OUT LPVOID* lplpOutEntry,
OUT LPDWORD lpOutEntrySize
);
DWORD APIENTRY
MprAdminMIBEntryGetNext(
IN MIB_SERVER_HANDLE hMibServer,
IN DWORD dwProtocolId,
IN DWORD dwRoutingPid,
IN LPVOID lpInEntry,
IN DWORD dwInEntrySize,
OUT LPVOID* lplpOutEntry,
OUT LPDWORD lpOutEntrySize
);
DWORD APIENTRY
MprAdminMIBGetTrapInfo(
IN MIB_SERVER_HANDLE hMibServer,
IN DWORD dwProtocolId,
IN DWORD dwRoutingPid,
IN LPVOID lpInData,
IN DWORD dwInDataSize,
OUT LPVOID* lplpOutData,
IN OUT LPDWORD lpOutDataSize
);
DWORD APIENTRY
MprAdminMIBSetTrapInfo(
IN DWORD dwProtocolId,
IN DWORD dwRoutingPid,
IN HANDLE hEvent,
IN LPVOID lpInData,
IN DWORD dwInDataSize,
OUT LPVOID* lplpOutData,
IN OUT LPDWORD lpOutDataSize
);
DWORD APIENTRY
MprAdminMIBBufferFree(
IN LPVOID pBuffer
);
//
// Configuration APIs
//
DWORD APIENTRY
MprConfigServerInstall(
IN DWORD dwLevel,
IN PVOID pBuffer
);
DWORD APIENTRY
MprConfigServerConnect(
IN LPWSTR lpwsServerName,
OUT HANDLE* phMprConfig
);
VOID APIENTRY
MprConfigServerDisconnect(
IN HANDLE hMprConfig
);
DWORD APIENTRY
MprConfigServerRefresh(
IN HANDLE hMprConfig
);
DWORD APIENTRY
MprConfigBufferFree(
IN LPVOID pBuffer
);
DWORD APIENTRY
MprConfigServerGetInfo(
IN HANDLE hMprConfig,
IN DWORD dwLevel,
OUT LPBYTE * lplpbBuffer
);
DWORD APIENTRY
MprConfigServerBackup(
IN HANDLE hMprConfig,
IN LPWSTR lpwsPath
);
DWORD APIENTRY
MprConfigServerRestore(
IN HANDLE hMprConfig,
IN LPWSTR lpwsPath
);
DWORD APIENTRY
MprConfigTransportCreate(
IN HANDLE hMprConfig,
IN DWORD dwTransportId,
IN LPWSTR lpwsTransportName OPTIONAL,
IN LPBYTE pGlobalInfo,
IN DWORD dwGlobalInfoSize,
IN LPBYTE pClientInterfaceInfo OPTIONAL,
IN DWORD dwClientInterfaceInfoSize OPTIONAL,
IN LPWSTR lpwsDLLPath,
OUT HANDLE* phRouterTransport
);
DWORD APIENTRY
MprConfigTransportDelete(
IN HANDLE hMprConfig,
IN HANDLE hRouterTransport
);
DWORD APIENTRY
MprConfigTransportGetHandle(
IN HANDLE hMprConfig,
IN DWORD dwTransportId,
OUT HANDLE* phRouterTransport
);
DWORD APIENTRY
MprConfigTransportSetInfo(
IN HANDLE hMprConfig,
IN HANDLE hRouterTransport,
IN LPBYTE pGlobalInfo OPTIONAL,
IN DWORD dwGlobalInfoSize OPTIONAL,
IN LPBYTE pClientInterfaceInfo OPTIONAL,
IN DWORD dwClientInterfaceInfoSize OPTIONAL,
IN LPWSTR lpwsDLLPath OPTIONAL
);
DWORD APIENTRY
MprConfigTransportGetInfo(
IN HANDLE hMprConfig,
IN HANDLE hRouterTransport,
IN OUT LPBYTE* ppGlobalInfo OPTIONAL,
OUT LPDWORD lpdwGlobalInfoSize OPTIONAL,
IN OUT LPBYTE* ppClientInterfaceInfo OPTIONAL,
OUT LPDWORD lpdwClientInterfaceInfoSize OPTIONAL,
IN OUT LPWSTR* lplpwsDLLPath OPTIONAL
);
DWORD APIENTRY
MprConfigTransportEnum(
IN HANDLE hMprConfig,
IN DWORD dwLevel,
IN OUT LPBYTE* lplpBuffer,
IN DWORD dwPrefMaxLen,
OUT LPDWORD lpdwEntriesRead,
OUT LPDWORD lpdwTotalEntries,
IN OUT LPDWORD lpdwResumeHandle OPTIONAL
);
DWORD APIENTRY
MprConfigInterfaceCreate(
IN HANDLE hMprConfig,
IN DWORD dwLevel,
IN LPBYTE lpbBuffer,
OUT HANDLE* phRouterInterface
);
DWORD APIENTRY
MprConfigInterfaceDelete(
IN HANDLE hMprConfig,
IN HANDLE hRouterInterface
);
DWORD APIENTRY
MprConfigInterfaceGetHandle(
IN HANDLE hMprConfig,
IN LPWSTR lpwsInterfaceName,
OUT HANDLE* phRouterInterface
);
DWORD APIENTRY
MprConfigInterfaceGetInfo(
IN HANDLE hMprConfig,
IN HANDLE hRouterInterface,
IN DWORD dwLevel,
IN OUT LPBYTE* lplpBuffer,
OUT LPDWORD lpdwBufferSize
);
DWORD APIENTRY
MprConfigInterfaceSetInfo(
IN HANDLE hMprConfig,
IN HANDLE hRouterInterface,
IN DWORD dwLevel,
IN LPBYTE lpbBuffer
);
DWORD APIENTRY
MprConfigInterfaceEnum(
IN HANDLE hMprConfig,
IN DWORD dwLevel,
IN OUT LPBYTE* lplpBuffer,
IN DWORD dwPrefMaxLen,
OUT LPDWORD lpdwEntriesRead,
OUT LPDWORD lpdwTotalEntries,
IN OUT LPDWORD lpdwResumeHandle OPTIONAL
);
DWORD APIENTRY
MprConfigInterfaceTransportAdd(
IN HANDLE hMprConfig,
IN HANDLE hRouterInterface,
IN DWORD dwTransportId,
IN LPWSTR lpwsTransportName OPTIONAL,
IN LPBYTE pInterfaceInfo,
IN DWORD dwInterfaceInfoSize,
OUT HANDLE* phRouterIfTransport
);
DWORD APIENTRY
MprConfigInterfaceTransportRemove(
IN HANDLE hMprConfig,
IN HANDLE hRouterInterface,
IN HANDLE hRouterIfTransport
);
DWORD APIENTRY
MprConfigInterfaceTransportGetHandle(
IN HANDLE hMprConfig,
IN HANDLE hRouterInterface,
IN DWORD dwTransportId,
OUT HANDLE* phRouterIfTransport
);
DWORD APIENTRY
MprConfigInterfaceTransportGetInfo(
IN HANDLE hMprConfig,
IN HANDLE hRouterInterface,
IN HANDLE hRouterIfTransport,
IN OUT LPBYTE* ppInterfaceInfo OPTIONAL,
OUT LPDWORD lpdwInterfaceInfoSize OPTIONAL
);
DWORD APIENTRY
MprConfigInterfaceTransportSetInfo(
IN HANDLE hMprConfig,
IN HANDLE hRouterInterface,
IN HANDLE hRouterIfTransport,
IN LPBYTE pInterfaceInfo OPTIONAL,
IN DWORD dwInterfaceInfoSize OPTIONAL
);
DWORD APIENTRY
MprConfigInterfaceTransportEnum(
IN HANDLE hMprConfig,
IN HANDLE hRouterInterface,
IN DWORD dwLevel,
IN OUT LPBYTE* lplpBuffer, // MPR_IFTRANSPORT_0
IN DWORD dwPrefMaxLen,
OUT LPDWORD lpdwEntriesRead,
OUT LPDWORD lpdwTotalEntries,
IN OUT LPDWORD lpdwResumeHandle OPTIONAL
);
DWORD APIENTRY
MprConfigGetFriendlyName(
IN HANDLE hMprConfig,
IN PWCHAR pszGuidName,
OUT PWCHAR pszBuffer,
IN DWORD dwBufferSize);
DWORD APIENTRY
MprConfigGetGuidName(
IN HANDLE hMprConfig,
IN PWCHAR pszFriendlyName,
OUT PWCHAR pszBuffer,
IN DWORD dwBufferSize);
//
// Information block APIs
//
DWORD APIENTRY
MprInfoCreate(
IN DWORD dwVersion,
OUT LPVOID* lplpNewHeader
);
DWORD APIENTRY
MprInfoDelete(
IN LPVOID lpHeader
);
DWORD APIENTRY
MprInfoRemoveAll(
IN LPVOID lpHeader,
OUT LPVOID* lplpNewHeader
);
DWORD APIENTRY
MprInfoDuplicate(
IN LPVOID lpHeader,
OUT LPVOID* lplpNewHeader
);
DWORD APIENTRY
MprInfoBlockAdd(
IN LPVOID lpHeader,
IN DWORD dwInfoType,
IN DWORD dwItemSize,
IN DWORD dwItemCount,
IN LPBYTE lpItemData,
OUT LPVOID* lplpNewHeader
);
DWORD APIENTRY
MprInfoBlockRemove(
IN LPVOID lpHeader,
IN DWORD dwInfoType,
OUT LPVOID* lplpNewHeader
);
DWORD APIENTRY
MprInfoBlockSet(
IN LPVOID lpHeader,
IN DWORD dwInfoType,
IN DWORD dwItemSize,
IN DWORD dwItemCount,
IN LPBYTE lpItemData,
OUT LPVOID* lplpNewHeader
);
DWORD APIENTRY
MprInfoBlockFind(
IN LPVOID lpHeader,
IN DWORD dwInfoType,
OUT LPDWORD lpdwItemSize, // OPTIONAL
OUT LPDWORD lpdwItemCount, // OPTIONAL
OUT LPBYTE* lplpItemData // OPTIONAL
);
DWORD APIENTRY
MprInfoBlockQuerySize(
IN LPVOID lpHeader
);
//
// BOOL APIENTRY
// MprInfoBlockExists(
// IN LPVOID lpHeader,
// IN DWORD dwInfoType
// );
//
#define MprInfoBlockExists(h,t) \
(MprInfoBlockFind((h),(t),NULL,NULL,NULL) == NO_ERROR)
#ifdef __cplusplus
}
#endif
//#endif /* WINVER >= 0x0403 */
#endif // __ROUTING_MPRADMIN_H__