home *** CD-ROM | disk | FTP | other *** search
/ PC Format (South-Africa) 2001 June / PCFJune.iso / Xenon / C++ / FreeCommandLineTools.exe / Include / mprapi.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-01-31  |  49.3 KB  |  1,749 lines

  1. /*++
  2.  
  3. Copyright (c) 1995 -1999  Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     mpradmin.h
  8.  
  9. Abstract:
  10.  
  11.     This file contains the structures, defines and function prototypes for the
  12.     following APIs:
  13.  
  14.         MprAdminIsServiceRunning
  15.         MprAdminServerConnect
  16.         MprAdminServerDisconnect
  17.         MprAdminBufferFree
  18.         MprAdminPortEnum
  19.         MprAdminConnectionEnum
  20.         MprAdminPortGetInfo
  21.         MprAdminConnectionGetInfo
  22.         MprAdminPortClearStats
  23.         MprAdminPortReset
  24.         MprAdminConnectionClearStats
  25.         MprAdminPortDisconnect
  26.         MprAdminGetErrorString
  27.  
  28.         MprAdminAcceptNewConnection
  29.         MprAdminAcceptNewLink
  30.         MprAdminConnectionHangupNotification
  31.         MprAdminLinkHangupNotification
  32.         MprAdminGetIpAddressForUser
  33.         MprAdminReleaseIpAddress
  34.         MprAdminInitializeDll
  35.         MprAdminTerminateDll
  36.         MprAdminAcceptNewConnection2
  37.         MprAdminConnectionHangupNotification2
  38.  
  39.         MprAdminUserGetInfo
  40.         MprAdminUserSetInfo
  41.         MprAdminSendUserMessage
  42.         MprAdminGetPDCServer
  43.  
  44.         MprAdminRegisterConnectionNotification
  45.         MprAdminDeregisterConnectionNotification
  46.  
  47.         MprAdminIsServiceRunning
  48.         MprAdminServerConnect
  49.         MprAdminServerDisconnect
  50.         MprAdminBufferFree
  51.         MprAdminServerGetInfo
  52.         MprAdminGetErrorString
  53.         MprAdminTransportCreate
  54.         MprAdminTransportSetInfo
  55.         MprAdminTransportGetInfo
  56.         MprAdminInterfaceCreate
  57.         MprAdminInterfaceDelete
  58.         MprAdminInterfaceGetInfo
  59.         MprAdminInterfaceTransportAdd
  60.         MprAdminInterfaceTransportGetInfo
  61.         MprAdminInterfaceTransportSetInfo
  62.         MprAdminInterfaceTransportRemove
  63.         MprAdminInterfaceGetHandle
  64.         MprAdminInterfaceSetCredentials
  65.         MprAdminInterfaceGetCredentials
  66.         MprAdminInterfaceEnum
  67.         MprAdminInterfaceConnect
  68.         MprAdminInterfaceDisconnect
  69.         MprAdminInterfaceUpdateRoutes
  70.         MprAdminInterfaceQueryUpdateResult
  71.         MprAdminInterfaceUpdatePhonebookInfo
  72.  
  73.         MprAdminMIBServerConnect
  74.         MprAdminMIBServerDisconnect
  75.         MprAdminMIBBufferFree
  76.         MprAdminMIBEntryCreate
  77.         MprAdminMIBEntryDelete
  78.         MprAdminMIBEntryGet
  79.         MprAdminMIBEntrySet
  80.         MprAdminMIBEntryGetFirst
  81.         MprAdminMIBEntryGetNext
  82.         MprAdminMIBSetTrapInfo
  83.         MprAdminMIBGetTrapInfo
  84.  
  85.     All MIB APIs operate with the conceptual MIB row.
  86.  
  87.         MprConfigServerConnect
  88.         MprConfigServerDisconnect
  89.         MprConfigBufferFree
  90.         MprConfigServerGetInfo
  91.         MprConfigServerBackup
  92.         MprConfigServerRestore
  93.         MprConfigTransportCreate
  94.         MprConfigTransportDelete
  95.         MprConfigTransportGetHandle
  96.         MprConfigTransportSetInfo
  97.         MprConfigTransportGetInfo
  98.         MprConfigTransportEnum
  99.         MprConfigInterfaceCreate
  100.         MprConfigInterfaceDelete
  101.         MprConfigInterfaceGetHandle
  102.         MprConfigInterfaceGetInfo
  103.         MprConfigInterfaceEnum
  104.         MprConfigInterfaceTransportAdd
  105.         MprConfigInterfaceTransportRemove
  106.         MprConfigInterfaceTransportGetHandle
  107.         MprConfigInterfaceTransportGetInfo
  108.         MprConfigInterfaceTransportSetInfo
  109.         MprConfigInterfaceTransportEnum
  110.  
  111.         MprSetupIpInIpInterfaceFriendlyNameEnum
  112.         MprSetupIpInIpInterfaceFriendlyNameFree
  113.         MprSetupIpInIpInterfaceFriendlyNameCreate
  114.         MprSetupIpInIpInterfaceFriendlyNameDelete
  115.  
  116. --*/
  117.  
  118.  
  119. #ifndef __ROUTING_MPRADMIN_H__
  120. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  121. #define __ROUTING_MPRADMIN_H__
  122.  
  123. #if _MSC_VER > 1000
  124. #pragma once
  125. #endif
  126.  
  127. #include <lmcons.h>
  128. #include <ras.h>
  129.  
  130. #ifdef __cplusplus
  131. extern "C" {
  132. #endif
  133.  
  134. //#if(WINVER >= 0x0403)
  135.  
  136. //
  137. // Name of the Routing and RemoteAccess Service
  138. //
  139.  
  140. #define RRAS_SERVICE_NAME       TEXT("RemoteAccess")
  141.  
  142. //
  143. // Protocol IDs
  144. //
  145.  
  146. #define PID_IPX                 0x0000002B
  147. #define PID_IP                  0x00000021
  148. #define PID_NBF                 0x0000003F
  149. #define PID_ATALK               0x00000029
  150.  
  151. #define MAX_INTERFACE_NAME_LEN  256
  152. #define MAX_TRANSPORT_NAME_LEN  40
  153. #define MAX_MEDIA_NAME          16
  154. #define MAX_PORT_NAME           16
  155. #define MAX_DEVICE_NAME         128
  156. #define MAX_PHONE_NUMBER_LEN    128
  157. #define MAX_DEVICETYPE_NAME     16
  158.  
  159. //
  160. // MPR Interface structures and definitions.
  161. //
  162.  
  163. //
  164. // MPR Interface types
  165. //
  166.  
  167. typedef enum _ROUTER_INTERFACE_TYPE
  168. {
  169.     ROUTER_IF_TYPE_CLIENT,
  170.     ROUTER_IF_TYPE_HOME_ROUTER,
  171.     ROUTER_IF_TYPE_FULL_ROUTER,
  172.     ROUTER_IF_TYPE_DEDICATED,
  173.     ROUTER_IF_TYPE_INTERNAL,
  174.     ROUTER_IF_TYPE_LOOPBACK,
  175.     ROUTER_IF_TYPE_TUNNEL1,
  176.     ROUTER_IF_TYPE_DIALOUT
  177.  
  178. }
  179. ROUTER_INTERFACE_TYPE;
  180.  
  181. typedef enum _ROUTER_CONNECTION_STATE
  182. {
  183.     ROUTER_IF_STATE_UNREACHABLE,
  184.     ROUTER_IF_STATE_DISCONNECTED,
  185.     ROUTER_IF_STATE_CONNECTING,
  186.     ROUTER_IF_STATE_CONNECTED
  187. }
  188. ROUTER_CONNECTION_STATE;
  189.  
  190. #define MPR_INTERFACE_OUT_OF_RESOURCES              0x00000001
  191. #define MPR_INTERFACE_ADMIN_DISABLED                0x00000002
  192. #define MPR_INTERFACE_CONNECTION_FAILURE            0x00000004
  193. #define MPR_INTERFACE_SERVICE_PAUSED                0x00000008
  194. #define MPR_INTERFACE_DIALOUT_HOURS_RESTRICTION     0x00000010
  195. #define MPR_INTERFACE_NO_MEDIA_SENSE                0x00000020
  196. #define MPR_INTERFACE_NO_DEVICE                     0x00000040
  197.  
  198. typedef struct _MPR_INTERFACE_0
  199. {
  200.     IN OUT  WCHAR                   wszInterfaceName[MAX_INTERFACE_NAME_LEN+1];
  201.     OUT     HANDLE                  hInterface;
  202.     IN OUT  BOOL                    fEnabled;
  203.     IN OUT  ROUTER_INTERFACE_TYPE   dwIfType;
  204.     OUT     ROUTER_CONNECTION_STATE dwConnectionState;
  205.     OUT     DWORD                   fUnReachabilityReasons;
  206.     OUT     DWORD                   dwLastError;
  207.  
  208. }
  209. MPR_INTERFACE_0, *PMPR_INTERFACE_0;
  210.  
  211. typedef struct _MPR_IPINIP_INTERFACE_0
  212. {
  213.     WCHAR   wszFriendlyName[MAX_INTERFACE_NAME_LEN+1];
  214.  
  215.     GUID    Guid;
  216.  
  217. }MPR_IPINIP_INTERFACE_0, *PMPR_IPINIP_INTERFACE_0;
  218.  
  219. #if(WINVER >= 0x0500)
  220.  
  221. typedef struct _MPR_INTERFACE_1
  222. {
  223.     IN OUT  WCHAR                   wszInterfaceName[MAX_INTERFACE_NAME_LEN+1];
  224.     OUT     HANDLE                  hInterface;
  225.     IN OUT  BOOL                    fEnabled;
  226.     IN OUT  ROUTER_INTERFACE_TYPE   dwIfType;
  227.     OUT     ROUTER_CONNECTION_STATE dwConnectionState;
  228.     OUT     DWORD                   fUnReachabilityReasons;
  229.     OUT     DWORD                   dwLastError;
  230.     OUT     LPWSTR                  lpwsDialoutHoursRestriction;
  231.  
  232. }
  233. MPR_INTERFACE_1, *PMPR_INTERFACE_1;
  234.  
  235. //
  236. // MPR_INTERFACE_2 definitions
  237. //
  238.  
  239. #define MPR_MaxDeviceType     RAS_MaxDeviceType
  240. #define MPR_MaxPhoneNumber    RAS_MaxPhoneNumber
  241. #define MPR_MaxIpAddress      RAS_MaxIpAddress
  242. #define MPR_MaxIpxAddress     RAS_MaxIpxAddress
  243.  
  244. #define MPR_MaxEntryName      RAS_MaxEntryName
  245. #define MPR_MaxDeviceName     RAS_MaxDeviceName
  246. #define MPR_MaxCallbackNumber RAS_MaxCallbackNumber
  247.  
  248. #define MPR_MaxAreaCode       RAS_MaxAreaCode
  249. #define MPR_MaxPadType        RAS_MaxPadType
  250. #define MPR_MaxX25Address     RAS_MaxX25Address
  251. #define MPR_MaxFacilities     RAS_MaxFacilities
  252. #define MPR_MaxUserData       RAS_MaxUserData
  253.  
  254. //
  255. // MPR_INTERFACE_2 'dwfOptions' bit flags.
  256. //
  257.  
  258. #define MPRIO_SpecificIpAddr            RASEO_SpecificIpAddr
  259. #define MPRIO_SpecificNameServers       RASEO_SpecificNameServers
  260. #define MPRIO_IpHeaderCompression       RASEO_IpHeaderCompression
  261. #define MPRIO_RemoteDefaultGateway      RASEO_RemoteDefaultGateway
  262. #define MPRIO_DisableLcpExtensions      RASEO_DisableLcpExtensions
  263. #define MPRIO_SwCompression             RASEO_SwCompression
  264. #define MPRIO_RequireEncryptedPw        RASEO_RequireEncryptedPw
  265. #define MPRIO_RequireMsEncryptedPw      RASEO_RequireMsEncryptedPw
  266. #define MPRIO_RequireDataEncryption     RASEO_RequireDataEncryption
  267. #define MPRIO_NetworkLogon              RASEO_NetworkLogon
  268. #define MPRIO_PromoteAlternates         RASEO_PromoteAlternates
  269. #define MPRIO_SecureLocalFiles          RASEO_SecureLocalFiles
  270. #define MPRIO_RequireEAP                RASEO_RequireEAP
  271. #define MPRIO_RequirePAP                RASEO_RequirePAP
  272. #define MPRIO_RequireSPAP               RASEO_RequireSPAP
  273. #define MPRIO_SharedPhoneNumbers        RASEO_SharedPhoneNumbers
  274. #define MPRIO_RequireCHAP               RASEO_RequireCHAP
  275. #define MPRIO_RequireMsCHAP             RASEO_RequireMsCHAP
  276.  
  277. //
  278. // MPR_INTERFACE_2 'dwProtocols' bit flags.
  279. //
  280.  
  281. #define MPRNP_Ipx                       RASNP_Ipx
  282. #define MPRNP_Ip                        RASNP_Ip
  283.  
  284. //
  285. // MPR_INTERFACE_2 'szDeviceType' default strings.
  286. //
  287.  
  288. #define MPRDT_Modem                     RASDT_Modem
  289. #define MPRDT_Isdn                      RASDT_Isdn
  290. #define MPRDT_X25                       RASDT_X25
  291. #define MPRDT_Vpn                       RASDT_Vpn
  292. #define MPRDT_Pad                       RASDT_Pad
  293. #define MPRDT_Generic                   RASDT_Generic
  294. #define MPRDT_Serial                    RASDT_Serial                    
  295. #define MPRDT_FrameRelay                RASDT_FrameRelay
  296. #define MPRDT_Atm                       RASDT_Atm
  297. #define MPRDT_Sonet                     RASDT_Sonet
  298. #define MPRDT_SW56                      RASDT_SW56
  299. #define MPRDT_Irda                      RASDT_Irda
  300. #define MPRDT_Parallel                  RASDT_Parallel
  301.  
  302. //
  303. // MPR_INTERFACE_2 'dwType' settings
  304. //
  305.  
  306. #define MPRET_Phone    RASET_Phone
  307. #define MPRET_Vpn      RASET_Vpn
  308. #define MPRET_Direct   RASET_Direct
  309.  
  310. //
  311. // MPR_INTERFACE_2 'dwDialMode' values.
  312. //
  313.  
  314. #define MPRDM_DialAll                  RASEDM_DialAll
  315. #define MPRDM_DialAsNeeded             RASEDM_DialAsNeeded
  316.  
  317. //
  318. // MPR_INTERFACE_2 'dwIdleDisconnectSeconds' constants.
  319. //
  320.  
  321. #define MPRIDS_Disabled                 RASIDS_Disabled
  322. #define MPRIDS_UseGlobalValue           RASIDS_UseGlobalValue
  323.  
  324. //
  325. // MPR_INTERFACE_2 encryption types.
  326. //
  327.  
  328. #define MPR_ET_None         ET_None         
  329. #define MPR_ET_Require      ET_Require      
  330. #define MPR_ET_RequireMax   ET_RequireMax   
  331. #define MPR_ET_Optional     ET_Optional     
  332.  
  333. //
  334. // MPR_INTERFACE_2 Vpn strategies
  335. //
  336.  
  337. #define MPR_VS_Default        VS_Default        
  338. #define MPR_VS_PptpOnly        VS_PptpOnly    
  339. #define MPR_VS_PptpFirst    VS_PptpFirst    
  340. #define MPR_VS_L2tpOnly     VS_L2tpOnly     
  341. #define MPR_VS_L2tpFirst    VS_L2tpFirst    
  342.  
  343. //
  344. // Used to create/get/set a demand dial interface plus its
  345. // ras configuration.
  346. //
  347.  
  348. typedef struct _MPR_INTERFACE_2
  349. {
  350.     IN OUT  WCHAR                   wszInterfaceName[MAX_INTERFACE_NAME_LEN+1];
  351.     OUT     HANDLE                  hInterface;
  352.     IN OUT  BOOL                    fEnabled;
  353.     IN OUT  ROUTER_INTERFACE_TYPE   dwIfType;
  354.     OUT     ROUTER_CONNECTION_STATE dwConnectionState;
  355.     OUT     DWORD                   fUnReachabilityReasons;
  356.     OUT     DWORD                   dwLastError;
  357.  
  358.     //
  359.     // Demand dial-specific properties
  360.     //
  361.  
  362.     DWORD       dwfOptions;
  363.  
  364.     //
  365.     // Location/phone number
  366.     //
  367.  
  368.     WCHAR       szLocalPhoneNumber[ RAS_MaxPhoneNumber + 1 ];
  369.     PWCHAR      szAlternates;
  370.  
  371.     //
  372.     // PPP/Ip
  373.     //
  374.  
  375.     DWORD       ipaddr;
  376.     DWORD       ipaddrDns;
  377.     DWORD       ipaddrDnsAlt;
  378.     DWORD       ipaddrWins;
  379.     DWORD       ipaddrWinsAlt;
  380.  
  381.     //
  382.     // NetProtocols
  383.     //
  384.  
  385.     DWORD       dwfNetProtocols;
  386.  
  387.     //
  388.     // Device
  389.     //
  390.  
  391.     WCHAR       szDeviceType[ MPR_MaxDeviceType + 1 ];
  392.     WCHAR       szDeviceName[ MPR_MaxDeviceName + 1 ];
  393.  
  394.     //
  395.     // X.25
  396.     //
  397.  
  398.     WCHAR       szX25PadType[ MPR_MaxPadType + 1 ];
  399.     WCHAR       szX25Address[ MPR_MaxX25Address + 1 ];
  400.     WCHAR       szX25Facilities[ MPR_MaxFacilities + 1 ];
  401.     WCHAR       szX25UserData[ MPR_MaxUserData + 1 ];
  402.     DWORD       dwChannels;
  403.  
  404.     //
  405.     // Multilink
  406.     //
  407.  
  408.     DWORD       dwSubEntries;
  409.     DWORD       dwDialMode;
  410.     DWORD       dwDialExtraPercent;
  411.     DWORD       dwDialExtraSampleSeconds;
  412.     DWORD       dwHangUpExtraPercent;
  413.     DWORD       dwHangUpExtraSampleSeconds;
  414.  
  415.     //
  416.     // Idle timeout
  417.     //
  418.  
  419.     DWORD       dwIdleDisconnectSeconds;
  420.  
  421.     //
  422.     // Entry Type
  423.     //
  424.  
  425.     DWORD       dwType;
  426.  
  427.     //
  428.     // EncryptionType
  429.     //
  430.  
  431.     DWORD       dwEncryptionType;
  432.  
  433.     //
  434.     // EAP information
  435.     //
  436.  
  437.     DWORD       dwCustomAuthKey;
  438.     DWORD       dwCustomAuthDataSize;
  439.     LPBYTE      lpbCustomAuthData;
  440.  
  441.     //
  442.     // Guid of the connection
  443.     //
  444.  
  445.     GUID        guidId;
  446.  
  447.     //
  448.     // Vpn Strategy
  449.     //
  450.  
  451.     DWORD       dwVpnStrategy;
  452.  
  453. } MPR_INTERFACE_2, *PMPR_INTERFACE_2;
  454.  
  455. //
  456. // Used to set/get per-link information for multilinked demand
  457. // dial interfaces.
  458. //
  459.  
  460. typedef struct _MPR_DEVICE_0
  461. {
  462.     //
  463.     // Device
  464.     //
  465.  
  466.     WCHAR       szDeviceType[ MPR_MaxDeviceType + 1 ];
  467.     WCHAR       szDeviceName[ MPR_MaxDeviceName + 1 ];
  468.  
  469. }
  470. MPR_DEVICE_0, *PMPR_DEVICE_0;
  471.  
  472. typedef struct _MPR_DEVICE_1
  473. {
  474.     //
  475.     // Device
  476.     //
  477.  
  478.     WCHAR       szDeviceType[ MPR_MaxDeviceType + 1 ];
  479.     WCHAR       szDeviceName[ MPR_MaxDeviceName + 1 ];
  480.  
  481.     //
  482.     // Phone numbers
  483.     //
  484.  
  485.     WCHAR       szLocalPhoneNumber[ MPR_MaxPhoneNumber + 1 ];
  486.     PWCHAR      szAlternates;
  487.  
  488. }
  489. MPR_DEVICE_1, *PMPR_DEVICE_1;
  490.  
  491. //
  492. // Used to get/set extended credentials information such as
  493. // eap credentials info.
  494. //
  495.  
  496. typedef struct _MPR_CREDENTIALSEX_0
  497. {
  498.     DWORD  dwSize;
  499.     LPBYTE lpbCredentialsInfo;
  500. }
  501. MPR_CREDENTIALSEX_0, *PMPR_CREDENTIALSEX_0;
  502.  
  503. #endif /* WINVER >= 0x0500 */
  504.  
  505. typedef struct _MPR_TRANSPORT_0
  506. {
  507.     OUT     DWORD                   dwTransportId;
  508.     OUT     HANDLE                  hTransport;
  509.     OUT     WCHAR                   wszTransportName[MAX_TRANSPORT_NAME_LEN+1];
  510.  
  511. }
  512. MPR_TRANSPORT_0, *PMPR_TRANSPORT_0;
  513.  
  514. typedef struct _MPR_IFTRANSPORT_0
  515. {
  516.     OUT     DWORD                  dwTransportId;
  517.     OUT     HANDLE                 hIfTransport;
  518.     OUT     WCHAR                  wszIfTransportName[MAX_TRANSPORT_NAME_LEN+1];
  519.  
  520. }
  521. MPR_IFTRANSPORT_0, *PMPR_IFTRANSPORT_0;
  522.  
  523. typedef struct _MPR_SERVER_0
  524. {
  525.     OUT BOOL                    fLanOnlyMode;
  526.     OUT DWORD                   dwUpTime;           // In seconds
  527.     OUT DWORD                   dwTotalPorts;
  528.     OUT DWORD                   dwPortsInUse;
  529.  
  530. }
  531. MPR_SERVER_0, *PMPR_SERVER_0;
  532.  
  533. //
  534. // Port condition codes
  535. //
  536.  
  537. typedef enum _RAS_PORT_CONDITION
  538. {
  539.     RAS_PORT_NON_OPERATIONAL,
  540.     RAS_PORT_DISCONNECTED,    
  541.     RAS_PORT_CALLING_BACK,
  542.     RAS_PORT_LISTENING,
  543.     RAS_PORT_AUTHENTICATING,
  544.     RAS_PORT_AUTHENTICATED,    
  545.     RAS_PORT_INITIALIZING
  546.  
  547. }
  548. RAS_PORT_CONDITION;
  549.  
  550. //
  551. // Hardware condition codes
  552. //
  553.  
  554. typedef enum _RAS_HARDWARE_CONDITION
  555. {
  556.     RAS_HARDWARE_OPERATIONAL,
  557.     RAS_HARDWARE_FAILURE
  558.  
  559. }
  560. RAS_HARDWARE_CONDITION;
  561.  
  562. typedef struct _RAS_PORT_0
  563. {
  564.     OUT HANDLE                  hPort;
  565.     OUT HANDLE                  hConnection;
  566.     OUT RAS_PORT_CONDITION      dwPortCondition;
  567.     OUT DWORD                   dwTotalNumberOfCalls;
  568.     OUT DWORD                   dwConnectDuration;      // In seconds
  569.     OUT WCHAR                   wszPortName[ MAX_PORT_NAME + 1 ];
  570.     OUT WCHAR                   wszMediaName[ MAX_MEDIA_NAME + 1 ];
  571.     OUT WCHAR                   wszDeviceName[ MAX_DEVICE_NAME + 1 ];
  572.     OUT WCHAR                   wszDeviceType[ MAX_DEVICETYPE_NAME + 1 ];
  573.  
  574. }
  575. RAS_PORT_0, *PRAS_PORT_0;
  576.  
  577. typedef struct _RAS_PORT_1
  578. {
  579.     OUT HANDLE                  hPort;
  580.     OUT HANDLE                  hConnection;
  581.     OUT RAS_HARDWARE_CONDITION  dwHardwareCondition;
  582.     OUT DWORD                   dwLineSpeed;            // in bits/second
  583.     OUT DWORD                   dwBytesXmited;
  584.     OUT DWORD                   dwBytesRcved;
  585.     OUT DWORD                   dwFramesXmited;
  586.     OUT DWORD                   dwFramesRcved;
  587.     OUT DWORD                   dwCrcErr;
  588.     OUT DWORD                   dwTimeoutErr;
  589.     OUT DWORD                   dwAlignmentErr;
  590.     OUT DWORD                   dwHardwareOverrunErr;
  591.     OUT DWORD                   dwFramingErr;
  592.     OUT DWORD                   dwBufferOverrunErr;
  593.     OUT DWORD                   dwCompressionRatioIn;
  594.     OUT DWORD                   dwCompressionRatioOut;
  595. }
  596. RAS_PORT_1, *PRAS_PORT_1;
  597.  
  598. //
  599. // Maximum length of address string, e.g. "255.255.255.255" for IP.
  600. //
  601.  
  602. #define IPADDRESSLEN  15
  603. #define IPXADDRESSLEN 22
  604. #define ATADDRESSLEN  32
  605.  
  606. typedef struct _PPP_NBFCP_INFO
  607. {
  608.     OUT DWORD           dwError;
  609.     OUT WCHAR           wszWksta[ NETBIOS_NAME_LEN + 1 ];
  610. }
  611. PPP_NBFCP_INFO;
  612.  
  613. typedef struct _PPP_IPCP_INFO
  614. {
  615.     OUT DWORD           dwError;
  616.     OUT WCHAR           wszAddress[ IPADDRESSLEN + 1 ];
  617.     OUT WCHAR           wszRemoteAddress[ IPADDRESSLEN + 1 ];
  618. }
  619. PPP_IPCP_INFO;
  620.  
  621. //
  622. // PPP_IPCP_INFO2 dwOptions values.
  623. //
  624.  
  625. #define PPP_IPCP_VJ             0x00000001
  626.  
  627. typedef struct _PPP_IPCP_INFO2
  628. {
  629.     OUT DWORD           dwError;
  630.     OUT WCHAR           wszAddress[ IPADDRESSLEN + 1 ];
  631.     OUT WCHAR           wszRemoteAddress[ IPADDRESSLEN + 1 ];
  632.     OUT DWORD           dwOptions;
  633.     OUT DWORD           dwRemoteOptions;
  634. }
  635. PPP_IPCP_INFO2;
  636.  
  637. typedef struct _PPP_IPXCP_INFO
  638. {
  639.     OUT DWORD           dwError;
  640.     OUT WCHAR           wszAddress[ IPXADDRESSLEN + 1 ];
  641. }
  642. PPP_IPXCP_INFO;
  643.  
  644. typedef struct _PPP_ATCP_INFO
  645. {
  646.     OUT DWORD           dwError;
  647.     OUT WCHAR           wszAddress[ ATADDRESSLEN + 1 ];
  648. }
  649. PPP_ATCP_INFO;
  650.  
  651. typedef struct _PPP_INFO
  652. {
  653.     OUT PPP_NBFCP_INFO  nbf;
  654.     OUT PPP_IPCP_INFO   ip;
  655.     OUT PPP_IPXCP_INFO  ipx;
  656.     OUT PPP_ATCP_INFO   at;
  657.  
  658. } PPP_INFO;
  659.  
  660. #if(WINVER >= 0x0500)
  661.  
  662. //
  663. // PPP_CCP dwCompressionAlgorithm values.
  664. //
  665.  
  666. #define RASCCPCA_MPPC         0x00000006
  667. #define RASCCPCA_STAC         0x00000005
  668.  
  669. //
  670. // PPP_CCP dwOptions values.
  671. //
  672.  
  673. #define PPP_CCP_COMPRESSION         0x00000001
  674. #define PPP_CCP_ENCRYPTION40BITOLD  0x00000010
  675. #define PPP_CCP_ENCRYPTION40BIT     0x00000020
  676. #define PPP_CCP_ENCRYPTION128BIT    0x00000040
  677. #define PPP_CCP_ENCRYPTION56BIT     0x00000080
  678. #define PPP_CCP_HISTORYLESS         0x01000000
  679.  
  680. typedef struct _PPP_CCP_INFO
  681. {
  682.     OUT DWORD           dwError;
  683.     OUT DWORD           dwCompressionAlgorithm;
  684.     OUT DWORD           dwOptions;
  685.     OUT DWORD           dwRemoteCompressionAlgorithm;
  686.     OUT DWORD           dwRemoteOptions;
  687. }
  688. PPP_CCP_INFO;
  689.  
  690. //
  691. // PPP_LCP dwAuthenticatonProtocol values.
  692. //
  693.  
  694. #define PPP_LCP_PAP          0xC023
  695. #define PPP_LCP_SPAP         0xC123
  696. #define PPP_LCP_CHAP         0xC223
  697. #define PPP_LCP_EAP          0xC227
  698.  
  699. //
  700. // PPP_LCP dwAuthenticatonData values.
  701. //
  702.  
  703. #define PPP_LCP_CHAP_MD5     0x05
  704. #define PPP_LCP_CHAP_MS      0x80
  705. #define PPP_LCP_CHAP_MSV2    0x81
  706.  
  707. //
  708. // PPP_LCP dwOption values
  709. //
  710.  
  711. #define PPP_LCP_MULTILINK_FRAMING   0x00000001
  712. #define PPP_LCP_PFC                 0x00000002
  713. #define PPP_LCP_ACFC                0x00000004
  714. #define PPP_LCP_SSHF                0x00000008
  715. #define PPP_LCP_DES_56              0x00000010
  716. #define PPP_LCP_3_DES               0x00000020
  717.  
  718. typedef struct _PPP_LCP_INFO
  719. {
  720.     OUT DWORD dwError;
  721.     OUT DWORD dwAuthenticationProtocol;
  722.     OUT DWORD dwAuthenticationData;
  723.     OUT DWORD dwRemoteAuthenticationProtocol;
  724.     OUT DWORD dwRemoteAuthenticationData;
  725.     OUT DWORD dwTerminateReason;
  726.     OUT DWORD dwRemoteTerminateReason;
  727.     OUT DWORD dwOptions;
  728.     OUT DWORD dwRemoteOptions;
  729.     OUT DWORD dwEapTypeId;
  730.     OUT DWORD dwRemoteEapTypeId;
  731. }
  732. PPP_LCP_INFO;
  733.  
  734. typedef struct _PPP_INFO_2
  735. {
  736.     OUT PPP_NBFCP_INFO  nbf;
  737.     OUT PPP_IPCP_INFO2  ip;
  738.     OUT PPP_IPXCP_INFO  ipx;
  739.     OUT PPP_ATCP_INFO   at;
  740.     OUT PPP_CCP_INFO    ccp;
  741.     OUT PPP_LCP_INFO    lcp;
  742. }
  743. PPP_INFO_2;
  744.  
  745. #endif /* WINVER >= 0x0500 */
  746.  
  747. //
  748. // Possible bits set in Connection Flags field
  749. //
  750.  
  751. #define RAS_FLAGS_PPP_CONNECTION        0x00000001
  752. #define RAS_FLAGS_MESSENGER_PRESENT     0x00000002
  753. #define RAS_FLAGS_RAS_CONNECTION        0x00000004
  754.  
  755. typedef struct _RAS_CONNECTION_0
  756. {
  757.     OUT HANDLE                  hConnection;
  758.     OUT HANDLE                  hInterface;
  759.     OUT DWORD                   dwConnectDuration;      // In seconds
  760.     OUT ROUTER_INTERFACE_TYPE   dwInterfaceType;
  761.     OUT DWORD                   dwConnectionFlags;
  762.     OUT WCHAR                   wszInterfaceName[ MAX_INTERFACE_NAME_LEN + 1 ];
  763.     OUT WCHAR                   wszUserName[ UNLEN + 1 ];
  764.     OUT WCHAR                   wszLogonDomain[ DNLEN + 1 ];
  765.     OUT WCHAR                   wszRemoteComputer[ NETBIOS_NAME_LEN + 1 ];
  766.  
  767. }
  768. RAS_CONNECTION_0, *PRAS_CONNECTION_0;
  769.  
  770. typedef struct _RAS_CONNECTION_1
  771. {
  772.     OUT HANDLE                  hConnection;
  773.     OUT HANDLE                  hInterface;
  774.     OUT PPP_INFO                PppInfo;
  775.     OUT DWORD                   dwBytesXmited;
  776.     OUT DWORD                   dwBytesRcved;
  777.     OUT DWORD                   dwFramesXmited;
  778.     OUT DWORD                   dwFramesRcved;
  779.     OUT DWORD                   dwCrcErr;
  780.     OUT DWORD                   dwTimeoutErr;
  781.     OUT DWORD                   dwAlignmentErr;
  782.     OUT DWORD                   dwHardwareOverrunErr;
  783.     OUT DWORD                   dwFramingErr;
  784.     OUT DWORD                   dwBufferOverrunErr;
  785.     OUT DWORD                   dwCompressionRatioIn;
  786.     OUT DWORD                   dwCompressionRatioOut;
  787. }
  788. RAS_CONNECTION_1, *PRAS_CONNECTION_1;
  789.  
  790. #if(WINVER >= 0x0500)
  791.  
  792. typedef struct _RAS_CONNECTION_2
  793. {
  794.     OUT HANDLE                  hConnection;
  795.     OUT WCHAR                   wszUserName[ UNLEN + 1 ];
  796.     OUT ROUTER_INTERFACE_TYPE   dwInterfaceType;
  797.     OUT GUID                    guid;
  798.     OUT PPP_INFO_2              PppInfo2;
  799. }
  800. RAS_CONNECTION_2, *PRAS_CONNECTION_2;
  801.  
  802. #endif /* WINVER >= 0x0500 */
  803.  
  804. //
  805. // Structures used by the MPRADMIN USER APIs. Use level 0 to get/set this
  806. // structure.
  807. //
  808. //
  809. // Bits indicating user's Remote Access privileges and mask to isolate
  810. // call back privilege.
  811. //
  812. // Note: Bit 0 MUST represent NoCallback due to a quirk of the "userparms"
  813. //       storage method.  When a new LAN Manager user is created, bit 0 of the
  814. //       userparms field is set to 1 and all other bits are 0.  These bits are
  815. //       arranged so this "no Dial-In info" state maps to the "default Dial-In
  816. //       privilege" state.
  817.  
  818. #define RASPRIV_NoCallback        0x01
  819. #define RASPRIV_AdminSetCallback  0x02
  820. #define RASPRIV_CallerSetCallback 0x04
  821. #define RASPRIV_DialinPrivilege   0x08
  822.  
  823. // 
  824. // The following are flags for the bfPrivilege2 member of RAS_USER_1
  825. // structure
  826. //
  827. #define RASPRIV2_DialinPolicy      0x1  
  828.  
  829. #define RASPRIV_CallbackType (RASPRIV_AdminSetCallback \
  830.                               | RASPRIV_CallerSetCallback \
  831.                               | RASPRIV_NoCallback)
  832.  
  833. typedef struct _RAS_USER_0
  834. {
  835.     OUT BYTE                    bfPrivilege;
  836.     OUT WCHAR                   wszPhoneNumber[ MAX_PHONE_NUMBER_LEN + 1];
  837. }
  838. RAS_USER_0, *PRAS_USER_0;
  839.  
  840. typedef struct _RAS_USER_1
  841. {
  842.     OUT BYTE                    bfPrivilege;
  843.     OUT WCHAR                   wszPhoneNumber[ MAX_PHONE_NUMBER_LEN + 1];
  844.     OUT BYTE                    bfPrivilege2;
  845. RAS_USER_1, *PRAS_USER_1;
  846.  
  847. //
  848. // Used as RPC binding handle to server
  849. //
  850.  
  851. typedef HANDLE RAS_SERVER_HANDLE;
  852. typedef HANDLE MPR_SERVER_HANDLE;
  853. typedef HANDLE MIB_SERVER_HANDLE;
  854.  
  855. //
  856. //  RAS ADMIN APIs
  857. //
  858.  
  859. DWORD APIENTRY
  860. MprAdminConnectionEnum(
  861.     IN      RAS_SERVER_HANDLE       hRasServer,
  862.     IN      DWORD                   dwLevel,
  863.     OUT     LPBYTE *                lplpbBuffer,
  864.     IN      DWORD                   dwPrefMaxLen,
  865.     OUT     LPDWORD                 lpdwEntriesRead,
  866.     OUT     LPDWORD                 lpdwTotalEntries,
  867.     IN      LPDWORD                 lpdwResumeHandle    OPTIONAL
  868. );
  869.  
  870. DWORD APIENTRY
  871. MprAdminPortEnum(
  872.     IN      RAS_SERVER_HANDLE       hRasServer,
  873.     IN      DWORD                   dwLevel,
  874.     IN      HANDLE                  hConnection,
  875.     OUT     LPBYTE *                lplpbBuffer,
  876.     IN      DWORD                   dwPrefMaxLen,
  877.     OUT     LPDWORD                 lpdwEntriesRead,
  878.     OUT     LPDWORD                 lpdwTotalEntries,
  879.     IN      LPDWORD                 lpdwResumeHandle    OPTIONAL
  880. );
  881.  
  882. DWORD APIENTRY
  883. MprAdminConnectionGetInfo(
  884.     IN      RAS_SERVER_HANDLE       hRasServer,
  885.     IN      DWORD                   dwLevel,
  886.     IN      HANDLE                  hConnection,
  887.     OUT     LPBYTE *                lplpbBuffer
  888. );
  889.  
  890. DWORD APIENTRY
  891. MprAdminPortGetInfo(
  892.     IN      RAS_SERVER_HANDLE       hRasServer,
  893.     IN      DWORD                   dwLevel,
  894.     IN      HANDLE                  hPort,
  895.     OUT     LPBYTE *                lplpbBuffer
  896. );
  897.  
  898. DWORD APIENTRY
  899. MprAdminConnectionClearStats(
  900.     IN      RAS_SERVER_HANDLE       hRasServer,
  901.     IN      HANDLE                  hConnection
  902. );
  903.  
  904. DWORD APIENTRY
  905. MprAdminPortClearStats(
  906.     IN      RAS_SERVER_HANDLE       hRasServer,
  907.     IN      HANDLE                  hPort
  908. );
  909.  
  910. DWORD APIENTRY
  911. MprAdminPortReset(
  912.     IN      RAS_SERVER_HANDLE       hRasServer,
  913.     IN      HANDLE                  hPort
  914. );
  915.  
  916. DWORD APIENTRY
  917. MprAdminPortDisconnect(
  918.     IN      RAS_SERVER_HANDLE       hRasServer,
  919.     IN      HANDLE                  hPort
  920. );
  921.  
  922. BOOL APIENTRY
  923. MprAdminAcceptNewConnection(
  924.     IN      RAS_CONNECTION_0 *      pRasConnection0,
  925.     IN      RAS_CONNECTION_1 *      pRasConnection1
  926.     );
  927.  
  928. #if(WINVER >= 0x0500)
  929.  
  930. BOOL APIENTRY
  931. MprAdminAcceptNewConnection2(
  932.     IN      RAS_CONNECTION_0 *      pRasConnection0,
  933.     IN      RAS_CONNECTION_1 *      pRasConnection1,
  934.     IN      RAS_CONNECTION_2 *      pRasConnection2
  935.     );
  936.  
  937. #endif /* WINVER >= 0x0500 */
  938.  
  939. BOOL APIENTRY
  940. MprAdminAcceptNewLink (
  941.     IN      RAS_PORT_0 *            pRasPort0,
  942.     IN      RAS_PORT_1 *            pRasPort1
  943.     );
  944.  
  945. VOID APIENTRY
  946. MprAdminConnectionHangupNotification(
  947.     IN      RAS_CONNECTION_0 *      pRasConnection0,
  948.     IN      RAS_CONNECTION_1 *      pRasConnection1
  949.     );
  950.  
  951. #if(WINVER >= 0x0500)
  952.  
  953. VOID APIENTRY
  954. MprAdminConnectionHangupNotification2(
  955.     IN      RAS_CONNECTION_0 *      pRasConnection0,
  956.     IN      RAS_CONNECTION_1 *      pRasConnection1,
  957.     IN      RAS_CONNECTION_2 *      pRasConnection2
  958.     );
  959.  
  960. #endif /* WINVER >= 0x0500 */
  961.  
  962. VOID APIENTRY
  963. MprAdminLinkHangupNotification (
  964.     IN      RAS_PORT_0 *            pRasPort0,
  965.     IN      RAS_PORT_1 *            pRasPort1
  966.     );
  967.  
  968. DWORD APIENTRY
  969. MprAdminGetIpAddressForUser (
  970.     IN      WCHAR *                 lpwszUserName,
  971.     IN      WCHAR *                 lpwszPortName,
  972.     IN OUT  DWORD *                 lpdwIpAddress,
  973.     OUT     BOOL *                  bNotifyRelease
  974.     );
  975.  
  976. VOID APIENTRY
  977. MprAdminReleaseIpAddress (
  978.     IN      WCHAR *                 lpszUserName,
  979.     IN      WCHAR *                 lpszPortName,
  980.     IN      DWORD *                 lpdwIpAddress
  981.     );
  982.  
  983. #if(WINVER >= 0x0500)
  984.  
  985. DWORD APIENTRY
  986. MprAdminInitializeDll(
  987.     VOID
  988. );
  989.  
  990. DWORD APIENTRY
  991. MprAdminTerminateDll(
  992.     VOID
  993. );
  994.  
  995. #endif
  996.  
  997. //
  998. // MprAdminUser APIs
  999. //
  1000.  
  1001. DWORD APIENTRY
  1002. MprAdminUserGetInfo(
  1003.     IN      const WCHAR *           lpszServer,
  1004.     IN      const WCHAR *           lpszUser,
  1005.     IN      DWORD                   dwLevel,
  1006.     OUT     LPBYTE                  lpbBuffer
  1007. );
  1008.  
  1009.  
  1010. DWORD APIENTRY
  1011. MprAdminUserSetInfo(
  1012.     IN      const WCHAR *           lpszServer,
  1013.     IN      const WCHAR *           lpszUser,
  1014.     IN      DWORD                   dwLevel,
  1015.     IN      const LPBYTE            lpbBuffer
  1016. );
  1017.  
  1018.  
  1019. #if(WINVER >= 0x0500)
  1020.  
  1021. DWORD APIENTRY
  1022. MprAdminSendUserMessage(
  1023.     IN      MPR_SERVER_HANDLE       hMprServer,
  1024.     IN      HANDLE                  hConnection,
  1025.     IN      LPWSTR                  lpwszMessage
  1026. );
  1027.  
  1028. #endif /* WINVER >= 0x0500 */
  1029.  
  1030. DWORD APIENTRY
  1031. MprAdminGetPDCServer(
  1032.     IN      const WCHAR *           lpszDomain,
  1033.     IN      const WCHAR *           lpszServer,
  1034.     OUT     LPWSTR                  lpszPDCServer
  1035. );
  1036.  
  1037. //
  1038. // Router APIs
  1039. //
  1040.  
  1041. BOOL APIENTRY
  1042. MprAdminIsServiceRunning(
  1043.     IN  LPWSTR  lpwsServerName
  1044. );
  1045.  
  1046. DWORD APIENTRY
  1047. MprAdminServerConnect(
  1048.     IN      LPWSTR                  lpwsServerName      OPTIONAL,
  1049.     OUT     MPR_SERVER_HANDLE *     phMprServer
  1050. );
  1051.  
  1052. VOID APIENTRY
  1053. MprAdminServerDisconnect(
  1054.     IN      MPR_SERVER_HANDLE       hMprServer
  1055. );
  1056.  
  1057. DWORD APIENTRY
  1058. MprAdminBufferFree(
  1059.     IN      LPVOID                  pBuffer
  1060. );
  1061.  
  1062. DWORD APIENTRY
  1063. MprAdminGetErrorString(
  1064.     IN      DWORD                   dwError,
  1065.     OUT     LPWSTR *                lpwsErrorString
  1066. );
  1067.  
  1068. DWORD APIENTRY
  1069. MprAdminServerGetInfo(
  1070.     IN      MPR_SERVER_HANDLE       hMprServer,
  1071.     IN      DWORD                   dwLevel,
  1072.     OUT     LPBYTE *                lplpbBuffer
  1073. );
  1074.  
  1075. #if(WINVER >= 0x0500)
  1076.  
  1077. DWORD APIENTRY
  1078. MprAdminTransportCreate(
  1079.     IN      MPR_SERVER_HANDLE       hMprServer,
  1080.     IN      DWORD                   dwTransportId,
  1081.     IN      LPWSTR                  lpwsTransportName           OPTIONAL,
  1082.     IN      LPBYTE                  pGlobalInfo,
  1083.     IN      DWORD                   dwGlobalInfoSize,
  1084.     IN      LPBYTE                  pClientInterfaceInfo        OPTIONAL,
  1085.     IN      DWORD                   dwClientInterfaceInfoSize   OPTIONAL,
  1086.     IN      LPWSTR                  lpwsDLLPath
  1087. );
  1088.  
  1089. #endif /* WINVER >= 0x0500 */
  1090.  
  1091. DWORD APIENTRY
  1092. MprAdminTransportSetInfo(
  1093.     IN      MPR_SERVER_HANDLE       hMprServer,
  1094.     IN      DWORD                   dwTransportId,
  1095.     IN      LPBYTE                  pGlobalInfo                 OPTIONAL,
  1096.     IN      DWORD                   dwGlobalInfoSize,
  1097.     IN      LPBYTE                  pClientInterfaceInfo        OPTIONAL,
  1098.     IN      DWORD                   dwClientInterfaceInfoSize
  1099. );
  1100.  
  1101. DWORD APIENTRY
  1102. MprAdminTransportGetInfo(
  1103.     IN      MPR_SERVER_HANDLE       hMprServer,
  1104.     IN      DWORD                   dwTransportId,
  1105.     OUT     LPBYTE *                ppGlobalInfo                OPTIONAL,
  1106.     OUT     LPDWORD                 lpdwGlobalInfoSize          OPTIONAL,
  1107.     OUT     LPBYTE *                ppClientInterfaceInfo       OPTIONAL,
  1108.     OUT     LPDWORD                 lpdwClientInterfaceInfoSize OPTIONAL
  1109. );
  1110.  
  1111. #if(WINVER >= 0x0500)
  1112.  
  1113. DWORD APIENTRY
  1114. MprAdminDeviceEnum(
  1115.     IN      MPR_SERVER_HANDLE       hMprServer,
  1116.     IN      DWORD                   dwLevel,
  1117.     OUT     LPBYTE*                 lplpbBuffer,
  1118.     OUT     LPDWORD                 lpdwTotalEntries);
  1119.  
  1120. #endif /* WINVER >= 0x0500 */
  1121.  
  1122. DWORD APIENTRY
  1123. MprAdminInterfaceGetHandle(
  1124.     IN      MPR_SERVER_HANDLE       hMprServer,
  1125.     IN      LPWSTR                  lpwsInterfaceName,
  1126.     OUT     HANDLE *                phInterface,
  1127.     IN      BOOL                    fIncludeClientInterfaces
  1128. );
  1129.  
  1130. DWORD APIENTRY
  1131. MprAdminInterfaceCreate(
  1132.     IN      MPR_SERVER_HANDLE       hMprServer,
  1133.     IN      DWORD                   dwLevel,
  1134.     IN      LPBYTE                  lpbBuffer,
  1135.     OUT     HANDLE *                phInterface
  1136. );
  1137.  
  1138. DWORD APIENTRY
  1139. MprAdminInterfaceGetInfo(
  1140.     IN      MPR_SERVER_HANDLE       hMprServer,
  1141.     IN      HANDLE                  hInterface,
  1142.     IN      DWORD                   dwLevel,
  1143.     IN      LPBYTE *                lplpbBuffer
  1144. );
  1145.  
  1146. DWORD APIENTRY
  1147. MprAdminInterfaceSetInfo(
  1148.     IN      MPR_SERVER_HANDLE       hMprServer,
  1149.     IN      HANDLE                  hInterface,
  1150.     IN      DWORD                   dwLevel,
  1151.     IN      LPBYTE                  lpbBuffer
  1152. );
  1153.  
  1154. DWORD APIENTRY
  1155. MprAdminInterfaceDelete(
  1156.     IN      MPR_SERVER_HANDLE       hMprServer,
  1157.     IN      HANDLE                  hInterface
  1158. );
  1159.  
  1160. #if(WINVER >= 0x0500)
  1161.  
  1162. DWORD APIENTRY
  1163. MprAdminInterfaceDeviceGetInfo(
  1164.     IN      MPR_SERVER_HANDLE       hMprServer,
  1165.     IN      HANDLE                  hInterface,
  1166.     IN      DWORD                   dwIndex,
  1167.     IN      DWORD                   dwLevel,
  1168.     OUT     LPBYTE*                 lplpBuffer
  1169. );
  1170.  
  1171. DWORD APIENTRY
  1172. MprAdminInterfaceDeviceSetInfo(
  1173.     IN      MPR_SERVER_HANDLE       hMprServer,
  1174.     IN      HANDLE                  hInterface,
  1175.     IN      DWORD                   dwIndex,
  1176.     IN      DWORD                   dwLevel,
  1177.     IN      LPBYTE                  lplpBuffer
  1178. );
  1179.  
  1180. #endif /* WINVER >= 0x0500 */
  1181.  
  1182. DWORD APIENTRY
  1183. MprAdminInterfaceTransportRemove(
  1184.     IN      MPR_SERVER_HANDLE       hMprServer,
  1185.     IN      HANDLE                  hInterface,
  1186.     IN      DWORD                   dwTransportId
  1187. );
  1188.  
  1189. DWORD APIENTRY
  1190. MprAdminInterfaceTransportAdd(
  1191.     IN      MPR_SERVER_HANDLE       hMprServer,
  1192.     IN      HANDLE                  hInterface,
  1193.     IN      DWORD                   dwTransportId,
  1194.     IN      LPBYTE                  pInterfaceInfo,
  1195.     IN      DWORD                   dwInterfaceInfoSize
  1196. );
  1197.  
  1198. DWORD APIENTRY
  1199. MprAdminInterfaceTransportGetInfo(
  1200.     IN      MPR_SERVER_HANDLE       hMprServer,
  1201.     IN      HANDLE                  hInterface,
  1202.     IN      DWORD                   dwTransportId,
  1203.     OUT     LPBYTE *                ppInterfaceInfo,
  1204.     OUT     LPDWORD                 lpdwpInterfaceInfoSize  OPTIONAL
  1205. );
  1206.  
  1207. DWORD APIENTRY
  1208. MprAdminInterfaceTransportSetInfo(
  1209.     IN      MPR_SERVER_HANDLE       hMprServer,
  1210.     IN      HANDLE                  hInterface,
  1211.     IN      DWORD                   dwTransportId,
  1212.     IN      LPBYTE                  pInterfaceInfo,
  1213.     IN      DWORD                   dwInterfaceInfoSize
  1214. );
  1215.  
  1216. DWORD APIENTRY
  1217. MprAdminInterfaceEnum(
  1218.     IN      MPR_SERVER_HANDLE       hMprServer,
  1219.     IN      DWORD                   dwLevel,
  1220.     OUT     LPBYTE *                lplpbBuffer,
  1221.     IN      DWORD                   dwPrefMaxLen,
  1222.     OUT     LPDWORD                 lpdwEntriesRead,
  1223.     OUT     LPDWORD                 lpdwTotalEntries,
  1224.     IN      LPDWORD                 lpdwResumeHandle        OPTIONAL
  1225. );
  1226.  
  1227. DWORD APIENTRY
  1228. MprSetupIpInIpInterfaceFriendlyNameEnum(
  1229.     IN  PWCHAR  pwszMachineName,
  1230.     OUT LPBYTE* lplpBuffer,
  1231.     OUT LPDWORD lpdwEntriesRead
  1232.     );
  1233.  
  1234. DWORD APIENTRY
  1235. MprSetupIpInIpInterfaceFriendlyNameFree(
  1236.     IN  LPVOID  lpBuffer
  1237.     );
  1238.  
  1239. DWORD APIENTRY
  1240. MprSetupIpInIpInterfaceFriendlyNameCreate(
  1241.     PWCHAR                  pwszMachineName,
  1242.     PMPR_IPINIP_INTERFACE_0 pNameInformation
  1243.     );
  1244.  
  1245. DWORD APIENTRY
  1246. MprSetupIpInIpInterfaceFriendlyNameDelete(
  1247.     IN  PWCHAR  pwszMachineName,
  1248.     IN  GUID    *pGuid
  1249.     );
  1250.  
  1251. DWORD APIENTRY
  1252. MprAdminInterfaceSetCredentials(
  1253.     IN      LPWSTR                  lpwsServer              OPTIONAL,
  1254.     IN      LPWSTR                  lpwsInterfaceName,
  1255.     IN      LPWSTR                  lpwsUserName            OPTIONAL,
  1256.     IN      LPWSTR                  lpwsDomainName          OPTIONAL,
  1257.     IN      LPWSTR                  lpwsPassword            OPTIONAL
  1258. );
  1259.  
  1260. DWORD APIENTRY
  1261. MprAdminInterfaceGetCredentials(
  1262.     IN      LPWSTR                  lpwsServer              OPTIONAL,
  1263.     IN      LPWSTR                  lpwsInterfaceName,
  1264.     IN      LPWSTR                  lpwsUserName            OPTIONAL,
  1265.     IN      LPWSTR                  lpwsPassword            OPTIONAL,
  1266.     IN      LPWSTR                  lpwsDomainName          OPTIONAL
  1267. );
  1268.  
  1269. #if(WINVER >= 0x0500)
  1270.  
  1271. DWORD APIENTRY
  1272. MprAdminInterfaceSetCredentialsEx(
  1273.     IN      MPR_SERVER_HANDLE       hMprServer,
  1274.     IN      HANDLE                  hInterface,
  1275.     IN      DWORD                   dwLevel,
  1276.     IN      LPBYTE                  lpbBuffer
  1277. );
  1278.  
  1279. DWORD APIENTRY
  1280. MprAdminInterfaceGetCredentialsEx(
  1281.     IN      MPR_SERVER_HANDLE       hMprServer,
  1282.     IN      HANDLE                  hInterface,
  1283.     IN      DWORD                   dwLevel,
  1284.     IN      LPBYTE *                lplpbBuffer
  1285. );
  1286.  
  1287. #endif /* WINVER >= 0x0500 */
  1288.  
  1289. DWORD APIENTRY
  1290. MprAdminInterfaceConnect(
  1291.     IN      MPR_SERVER_HANDLE       hMprServer,
  1292.     IN      HANDLE                  hInterface,
  1293.     IN      HANDLE                  hEvent,
  1294.     IN      BOOL                    fSynchronous
  1295. );
  1296.  
  1297. DWORD APIENTRY
  1298. MprAdminInterfaceDisconnect(
  1299.     IN      MPR_SERVER_HANDLE       hMprServer,
  1300.     IN      HANDLE                  hInterface
  1301. );
  1302.  
  1303. DWORD APIENTRY
  1304. MprAdminInterfaceUpdateRoutes(
  1305.     IN      MPR_SERVER_HANDLE       hMprServer,
  1306.     IN      HANDLE                  hInterface,
  1307.     IN      DWORD                   dwProtocolId,
  1308.     IN      HANDLE                  hEvent
  1309. );
  1310.  
  1311. DWORD APIENTRY
  1312. MprAdminInterfaceQueryUpdateResult(
  1313.     IN      MPR_SERVER_HANDLE       hMprServer,
  1314.     IN      HANDLE                  hInterface,
  1315.     IN      DWORD                   dwProtocolId,
  1316.     OUT     LPDWORD                 lpdwUpdateResult
  1317. );
  1318.  
  1319. DWORD APIENTRY
  1320. MprAdminInterfaceUpdatePhonebookInfo(
  1321.     IN      MPR_SERVER_HANDLE       hMprServer,
  1322.     IN      HANDLE                  hInterface
  1323. );
  1324.  
  1325. #if(WINVER >= 0x0500)
  1326.  
  1327. DWORD APIENTRY
  1328. MprAdminRegisterConnectionNotification(
  1329.     IN      MPR_SERVER_HANDLE       hMprServer,
  1330.     IN      HANDLE                  hEventNotification
  1331. );
  1332.  
  1333. DWORD APIENTRY
  1334. MprAdminDeregisterConnectionNotification(
  1335.     IN      MPR_SERVER_HANDLE       hMprServer,
  1336.     IN      HANDLE                  hEventNotification
  1337. );
  1338.  
  1339. #endif /* WINVER >= 0x0500 */
  1340.  
  1341. //
  1342. // MIB APIs
  1343. //
  1344.  
  1345. DWORD APIENTRY
  1346. MprAdminMIBServerConnect(
  1347.     IN      LPWSTR                  lpwsServerName      OPTIONAL,
  1348.     OUT     MIB_SERVER_HANDLE *     phMibServer
  1349. );
  1350.  
  1351. VOID APIENTRY
  1352. MprAdminMIBServerDisconnect(
  1353.     IN      MIB_SERVER_HANDLE       hMibServer
  1354. );
  1355.  
  1356. DWORD APIENTRY
  1357. MprAdminMIBEntryCreate(
  1358.     IN      MIB_SERVER_HANDLE       hMibServer,
  1359.     IN      DWORD                   dwPid,
  1360.     IN      DWORD                   dwRoutingPid,
  1361.     IN      LPVOID                  lpEntry,
  1362.     IN      DWORD                   dwEntrySize
  1363. );
  1364.  
  1365. DWORD APIENTRY
  1366. MprAdminMIBEntryDelete(
  1367.     IN      MIB_SERVER_HANDLE       hMibServer,
  1368.     IN      DWORD                   dwProtocolId,
  1369.     IN      DWORD                   dwRoutingPid,
  1370.     IN      LPVOID                  lpEntry,
  1371.     IN      DWORD                   dwEntrySize
  1372. );
  1373.  
  1374. DWORD APIENTRY
  1375. MprAdminMIBEntrySet(
  1376.     IN      MIB_SERVER_HANDLE       hMibServer,
  1377.     IN      DWORD                   dwProtocolId,
  1378.     IN      DWORD                   dwRoutingPid,
  1379.     IN      LPVOID                  lpEntry,
  1380.     IN      DWORD                   dwEntrySize
  1381. );
  1382.  
  1383. DWORD APIENTRY
  1384. MprAdminMIBEntryGet(
  1385.     IN      MIB_SERVER_HANDLE       hMibServer,
  1386.     IN      DWORD                   dwProtocolId,
  1387.     IN      DWORD                   dwRoutingPid,
  1388.     IN      LPVOID                  lpInEntry,
  1389.     IN      DWORD                   dwInEntrySize,
  1390.     OUT     LPVOID*                 lplpOutEntry,
  1391.     OUT     LPDWORD                 lpOutEntrySize
  1392. );
  1393.  
  1394. DWORD APIENTRY
  1395. MprAdminMIBEntryGetFirst(
  1396.     IN      MIB_SERVER_HANDLE       hMibServer,
  1397.     IN      DWORD                   dwProtocolId,
  1398.     IN      DWORD                   dwRoutingPid,
  1399.     IN      LPVOID                  lpInEntry,
  1400.     IN      DWORD                   dwInEntrySize,
  1401.     OUT     LPVOID*                 lplpOutEntry,
  1402.     OUT     LPDWORD                 lpOutEntrySize
  1403. );
  1404.  
  1405. DWORD APIENTRY
  1406. MprAdminMIBEntryGetNext(
  1407.     IN      MIB_SERVER_HANDLE       hMibServer,
  1408.     IN      DWORD                   dwProtocolId,
  1409.     IN      DWORD                   dwRoutingPid,
  1410.     IN      LPVOID                  lpInEntry,
  1411.     IN      DWORD                   dwInEntrySize,
  1412.     OUT     LPVOID*                 lplpOutEntry,
  1413.     OUT     LPDWORD                 lpOutEntrySize
  1414. );
  1415.  
  1416. DWORD APIENTRY
  1417. MprAdminMIBGetTrapInfo(
  1418.     IN      MIB_SERVER_HANDLE       hMibServer,
  1419.     IN      DWORD                   dwProtocolId,
  1420.     IN      DWORD                   dwRoutingPid,
  1421.     IN      LPVOID                  lpInData,
  1422.     IN      DWORD                   dwInDataSize,
  1423.     OUT     LPVOID*                 lplpOutData,
  1424.     IN OUT  LPDWORD                 lpOutDataSize
  1425. );
  1426.  
  1427. DWORD APIENTRY
  1428. MprAdminMIBSetTrapInfo(
  1429.     IN      DWORD                   dwProtocolId,
  1430.     IN      DWORD                   dwRoutingPid,
  1431.     IN      HANDLE                  hEvent,
  1432.     IN      LPVOID                  lpInData,
  1433.     IN      DWORD                   dwInDataSize,
  1434.     OUT     LPVOID*                 lplpOutData,
  1435.     IN OUT  LPDWORD                 lpOutDataSize
  1436. );
  1437.  
  1438. DWORD APIENTRY
  1439. MprAdminMIBBufferFree(
  1440.     IN      LPVOID                  pBuffer
  1441. );
  1442.  
  1443. //
  1444. // Configuration APIs
  1445. //
  1446.  
  1447. DWORD APIENTRY
  1448. MprConfigServerConnect(
  1449.     IN      LPWSTR                  lpwsServerName,
  1450.     OUT     HANDLE*                 phMprConfig
  1451. );
  1452.  
  1453. VOID APIENTRY
  1454. MprConfigServerDisconnect(
  1455.     IN      HANDLE                  hMprConfig
  1456. );
  1457.  
  1458. DWORD APIENTRY
  1459. MprConfigServerRefresh(
  1460.     IN      HANDLE                  hMprConfig
  1461.     );
  1462.  
  1463. DWORD APIENTRY
  1464. MprConfigBufferFree(
  1465.     IN      LPVOID                  pBuffer
  1466. );
  1467.  
  1468. DWORD APIENTRY
  1469. MprConfigServerGetInfo(
  1470.     IN      HANDLE                  hMprConfig,
  1471.     IN      DWORD                   dwLevel,
  1472.     OUT     LPBYTE *                lplpbBuffer
  1473. );
  1474.  
  1475. DWORD APIENTRY
  1476. MprConfigServerBackup(
  1477.     IN      HANDLE                  hMprConfig,
  1478.     IN      LPWSTR                  lpwsPath
  1479. );
  1480.  
  1481. DWORD APIENTRY
  1482. MprConfigServerRestore(
  1483.     IN      HANDLE                  hMprConfig,
  1484.     IN      LPWSTR                  lpwsPath
  1485. );
  1486.  
  1487. DWORD APIENTRY
  1488. MprConfigTransportCreate(
  1489.     IN      HANDLE                  hMprConfig,
  1490.     IN      DWORD                   dwTransportId,
  1491.     IN      LPWSTR                  lpwsTransportName           OPTIONAL,
  1492.     IN      LPBYTE                  pGlobalInfo,
  1493.     IN      DWORD                   dwGlobalInfoSize,
  1494.     IN      LPBYTE                  pClientInterfaceInfo        OPTIONAL,
  1495.     IN      DWORD                   dwClientInterfaceInfoSize   OPTIONAL,
  1496.     IN      LPWSTR                  lpwsDLLPath,
  1497.     OUT     HANDLE*                 phRouterTransport
  1498. );
  1499.  
  1500. DWORD APIENTRY
  1501. MprConfigTransportDelete(
  1502.     IN      HANDLE                  hMprConfig,
  1503.     IN      HANDLE                  hRouterTransport
  1504. );
  1505.  
  1506. DWORD APIENTRY
  1507. MprConfigTransportGetHandle(
  1508.     IN      HANDLE                  hMprConfig,
  1509.     IN      DWORD                   dwTransportId,
  1510.     OUT     HANDLE*                 phRouterTransport
  1511. );
  1512.  
  1513. DWORD APIENTRY
  1514. MprConfigTransportSetInfo(
  1515.     IN      HANDLE                  hMprConfig,
  1516.     IN      HANDLE                  hRouterTransport,
  1517.     IN      LPBYTE                  pGlobalInfo                 OPTIONAL,
  1518.     IN      DWORD                   dwGlobalInfoSize            OPTIONAL,
  1519.     IN      LPBYTE                  pClientInterfaceInfo        OPTIONAL,
  1520.     IN      DWORD                   dwClientInterfaceInfoSize   OPTIONAL,
  1521.     IN      LPWSTR                  lpwsDLLPath                 OPTIONAL
  1522. );
  1523.  
  1524. DWORD APIENTRY
  1525. MprConfigTransportGetInfo(
  1526.     IN      HANDLE                  hMprConfig,
  1527.     IN      HANDLE                  hRouterTransport,
  1528.     IN  OUT LPBYTE*                 ppGlobalInfo                OPTIONAL,
  1529.     OUT     LPDWORD                 lpdwGlobalInfoSize          OPTIONAL,
  1530.     IN  OUT LPBYTE*                 ppClientInterfaceInfo       OPTIONAL,
  1531.     OUT     LPDWORD                 lpdwClientInterfaceInfoSize OPTIONAL,
  1532.     IN  OUT LPWSTR*                 lplpwsDLLPath               OPTIONAL
  1533. );
  1534.  
  1535. DWORD APIENTRY
  1536. MprConfigTransportEnum(
  1537.     IN      HANDLE                  hMprConfig,
  1538.     IN      DWORD                   dwLevel,
  1539.     IN  OUT LPBYTE*                 lplpBuffer,
  1540.     IN      DWORD                   dwPrefMaxLen,
  1541.     OUT     LPDWORD                 lpdwEntriesRead,
  1542.     OUT     LPDWORD                 lpdwTotalEntries,
  1543.     IN  OUT LPDWORD                 lpdwResumeHandle            OPTIONAL
  1544. );
  1545.  
  1546. DWORD APIENTRY
  1547. MprConfigInterfaceCreate(
  1548.     IN      HANDLE                  hMprConfig,
  1549.     IN      DWORD                   dwLevel,
  1550.     IN      LPBYTE                  lpbBuffer,
  1551.     OUT     HANDLE*                 phRouterInterface
  1552. );
  1553.  
  1554. DWORD APIENTRY
  1555. MprConfigInterfaceDelete(
  1556.     IN      HANDLE                  hMprConfig,
  1557.     IN      HANDLE                  hRouterInterface
  1558. );
  1559.  
  1560. DWORD APIENTRY
  1561. MprConfigInterfaceGetHandle(
  1562.     IN      HANDLE                  hMprConfig,
  1563.     IN      LPWSTR                  lpwsInterfaceName,
  1564.     OUT     HANDLE*                 phRouterInterface
  1565. );
  1566.  
  1567. DWORD APIENTRY
  1568. MprConfigInterfaceGetInfo(
  1569.     IN      HANDLE                  hMprConfig,
  1570.     IN      HANDLE                  hRouterInterface,
  1571.     IN      DWORD                   dwLevel,
  1572.     IN  OUT LPBYTE*                 lplpBuffer,
  1573.     OUT     LPDWORD                 lpdwBufferSize
  1574. );
  1575.  
  1576. DWORD APIENTRY
  1577. MprConfigInterfaceSetInfo(
  1578.     IN      HANDLE                  hMprConfig,
  1579.     IN      HANDLE                  hRouterInterface,
  1580.     IN      DWORD                   dwLevel,
  1581.     IN      LPBYTE                  lpbBuffer
  1582. );
  1583.  
  1584. DWORD APIENTRY
  1585. MprConfigInterfaceEnum(
  1586.     IN      HANDLE                  hMprConfig,
  1587.     IN      DWORD                   dwLevel,
  1588.     IN  OUT LPBYTE*                 lplpBuffer,
  1589.     IN      DWORD                   dwPrefMaxLen,
  1590.     OUT     LPDWORD                 lpdwEntriesRead,
  1591.     OUT     LPDWORD                 lpdwTotalEntries,
  1592.     IN  OUT LPDWORD                 lpdwResumeHandle            OPTIONAL
  1593. );
  1594.  
  1595. DWORD APIENTRY
  1596. MprConfigInterfaceTransportAdd(
  1597.     IN      HANDLE                  hMprConfig,
  1598.     IN      HANDLE                  hRouterInterface,
  1599.     IN      DWORD                   dwTransportId,
  1600.     IN      LPWSTR                  lpwsTransportName           OPTIONAL,
  1601.     IN      LPBYTE                  pInterfaceInfo,
  1602.     IN      DWORD                   dwInterfaceInfoSize,
  1603.     OUT     HANDLE*                 phRouterIfTransport
  1604. );
  1605.  
  1606. DWORD APIENTRY
  1607. MprConfigInterfaceTransportRemove(
  1608.     IN      HANDLE                  hMprConfig,
  1609.     IN      HANDLE                  hRouterInterface,
  1610.     IN      HANDLE                  hRouterIfTransport
  1611. );
  1612.  
  1613. DWORD APIENTRY
  1614. MprConfigInterfaceTransportGetHandle(
  1615.     IN      HANDLE                  hMprConfig,
  1616.     IN      HANDLE                  hRouterInterface,
  1617.     IN      DWORD                   dwTransportId,
  1618.     OUT     HANDLE*                 phRouterIfTransport
  1619. );
  1620.  
  1621. DWORD APIENTRY
  1622. MprConfigInterfaceTransportGetInfo(
  1623.     IN      HANDLE                  hMprConfig,
  1624.     IN      HANDLE                  hRouterInterface,
  1625.     IN      HANDLE                  hRouterIfTransport,
  1626.     IN  OUT LPBYTE*                 ppInterfaceInfo             OPTIONAL,
  1627.     OUT     LPDWORD                 lpdwInterfaceInfoSize       OPTIONAL
  1628. );
  1629.  
  1630. DWORD APIENTRY
  1631. MprConfigInterfaceTransportSetInfo(
  1632.     IN      HANDLE                  hMprConfig,
  1633.     IN      HANDLE                  hRouterInterface,
  1634.     IN      HANDLE                  hRouterIfTransport,
  1635.     IN      LPBYTE                  pInterfaceInfo              OPTIONAL,
  1636.     IN      DWORD                   dwInterfaceInfoSize         OPTIONAL
  1637. );
  1638.  
  1639. DWORD APIENTRY
  1640. MprConfigInterfaceTransportEnum(
  1641.     IN      HANDLE                  hMprConfig,
  1642.     IN      HANDLE                  hRouterInterface,
  1643.     IN      DWORD                   dwLevel,
  1644.     IN  OUT LPBYTE*                 lplpBuffer,     // MPR_IFTRANSPORT_0
  1645.     IN      DWORD                   dwPrefMaxLen,
  1646.     OUT     LPDWORD                 lpdwEntriesRead,
  1647.     OUT     LPDWORD                 lpdwTotalEntries,
  1648.     IN  OUT LPDWORD                 lpdwResumeHandle            OPTIONAL
  1649. );
  1650.  
  1651. DWORD APIENTRY
  1652. MprConfigGetFriendlyName(
  1653.     IN      HANDLE                  hMprConfig,
  1654.     IN      PWCHAR                  pszGuidName,
  1655.     OUT     PWCHAR                  pszBuffer,
  1656.     IN      DWORD                   dwBufferSize);
  1657.  
  1658. DWORD APIENTRY
  1659. MprConfigGetGuidName(
  1660.     IN      HANDLE                  hMprConfig,
  1661.     IN      PWCHAR                  pszFriendlyName,
  1662.     OUT     PWCHAR                  pszBuffer,
  1663.     IN      DWORD                   dwBufferSize);
  1664.  
  1665. //
  1666. // Information block APIs
  1667. //
  1668.  
  1669. DWORD APIENTRY
  1670. MprInfoCreate(
  1671.     IN      DWORD                   dwVersion,
  1672.     OUT     LPVOID*                 lplpNewHeader
  1673. );
  1674.  
  1675. DWORD APIENTRY
  1676. MprInfoDelete(
  1677.     IN      LPVOID                  lpHeader
  1678. );
  1679.  
  1680. DWORD APIENTRY
  1681. MprInfoRemoveAll(
  1682.     IN      LPVOID                  lpHeader,
  1683.     OUT     LPVOID*                 lplpNewHeader
  1684. );
  1685.  
  1686. DWORD APIENTRY
  1687. MprInfoDuplicate(
  1688.     IN      LPVOID                  lpHeader,
  1689.     OUT     LPVOID*                 lplpNewHeader
  1690. );
  1691.  
  1692. DWORD APIENTRY
  1693. MprInfoBlockAdd(
  1694.     IN      LPVOID                  lpHeader,
  1695.     IN      DWORD                   dwInfoType,
  1696.     IN      DWORD                   dwItemSize,
  1697.     IN      DWORD                   dwItemCount,
  1698.     IN      LPBYTE                  lpItemData,
  1699.     OUT     LPVOID*                 lplpNewHeader
  1700. );
  1701.  
  1702. DWORD APIENTRY
  1703. MprInfoBlockRemove(
  1704.     IN      LPVOID                  lpHeader,
  1705.     IN      DWORD                   dwInfoType,
  1706.     OUT     LPVOID*                 lplpNewHeader
  1707. );
  1708.  
  1709. DWORD APIENTRY
  1710. MprInfoBlockSet(
  1711.     IN      LPVOID                  lpHeader,
  1712.     IN      DWORD                   dwInfoType,
  1713.     IN      DWORD                   dwItemSize,
  1714.     IN      DWORD                   dwItemCount,
  1715.     IN      LPBYTE                  lpItemData,
  1716.     OUT     LPVOID*                 lplpNewHeader
  1717. );
  1718.  
  1719. DWORD APIENTRY
  1720. MprInfoBlockFind(
  1721.     IN      LPVOID                  lpHeader,
  1722.     IN      DWORD                   dwInfoType,
  1723.     OUT     LPDWORD                 lpdwItemSize,       // OPTIONAL
  1724.     OUT     LPDWORD                 lpdwItemCount,      // OPTIONAL
  1725.     OUT     LPBYTE*                 lplpItemData        // OPTIONAL
  1726. );
  1727.  
  1728. //
  1729. // BOOL APIENTRY
  1730. // MprInfoBlockExists(
  1731. //     IN      LPVOID                  lpHeader,
  1732. //     IN      DWORD                   dwInfoType
  1733. // );
  1734. //
  1735.  
  1736. #define MprInfoBlockExists(h,t) \
  1737.     (MprInfoBlockFind((h),(t),NULL,NULL,NULL) == NO_ERROR)
  1738.  
  1739. #ifdef __cplusplus
  1740. }
  1741. #endif
  1742.  
  1743. //#endif /* WINVER >= 0x0403 */
  1744.  
  1745. #pragma option pop /*P_O_Pop*/
  1746. #endif // __ROUTING_MPRADMIN_H__
  1747.  
  1748.