home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / mprapi.h < prev    next >
C/C++ Source or Header  |  1998-04-25  |  35KB  |  1,134 lines

  1. /*++
  2.  
  3. Copyright (c) 1995 -1997  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.  
  35.         MprAdminUserGetInfo
  36.         MprAdminUserSetInfo
  37.         MprAdminGetPDCServer
  38.  
  39.         MprAdminIsServiceRunning
  40.         MprAdminServerConnect    
  41.         MprAdminServerDisconnect    
  42.         MprAdminBufferFree    
  43.         MprAdminServerGetInfo
  44.         MprAdminGetErrorString
  45.         MprAdminTransportSetInfo    
  46.         MprAdminTransportGetInfo    
  47.         MprAdminInterfaceCreate    
  48.         MprAdminInterfaceDelete    
  49.         MprAdminInterfaceGetInfo    
  50.         MprAdminInterfaceTransportAdd    
  51.         MprAdminInterfaceTransportGetInfo    
  52.         MprAdminInterfaceTransportSetInfo
  53.         MprAdminInterfaceTransportProtoDisable
  54.         MprAdminInterfaceTransportProtoEnable
  55.         MprAdminInterfaceTransportRemove    
  56.         MprAdminInterfaceGetHandle    
  57.         MprAdminInterfaceSetCredentials    
  58.         MprAdminInterfaceGetCredentials    
  59.         MprAdminInterfaceEnum
  60.         MprAdminInterfaceConnect
  61.         MprAdminInterfaceDisconnect
  62.         MprAdminInterfaceUpdateRoutes    
  63.         MprAdminInterfaceQueryUpdateResult    
  64.         MprAdminInterfaceUpdatePhonebookInfo    
  65.  
  66.         MprAdminMIBServerConnect
  67.         MprAdminMIBServerDisconnect
  68.         MprAdminMIBBufferFree
  69.         MprAdminMIBEntryCreate
  70.         MprAdminMIBEntryDelete
  71.         MprAdminMIBEntryGet
  72.         MprAdminMIBEntrySet
  73.         MprAdminMIBEntryGetFirst
  74.         MprAdminMIBEntryGetNext
  75.         MprAdminMIBSetTrapInfo
  76.         MprAdminMIBGetTrapInfo
  77.  
  78.     All MIB APIs operate with the conceptual MIB row.
  79.  
  80.         MprConfigServerConnect
  81.         MprConfigServerDisconnect
  82.         MprConfigBufferFree
  83.         MprConfigServerGetInfo
  84.         MprConfigServerBackup
  85.         MprConfigServerRestore
  86.         MprConfigTransportCreate
  87.         MprConfigTransportDelete
  88.         MprConfigTransportGetHandle
  89.         MprConfigTransportSetInfo
  90.         MprConfigTransportGetInfo
  91.         MprConfigTransportEnum
  92.         MprConfigInterfaceCreate
  93.         MprConfigInterfaceDelete
  94.         MprConfigInterfaceGetHandle
  95.         MprConfigInterfaceGetInfo
  96.         MprConfigInterfaceEnum
  97.         MprConfigInterfaceTransportAdd
  98.         MprConfigInterfaceTransportRemove
  99.         MprConfigInterfaceTransportGetHandle
  100.         MprConfigInterfaceTransportGetInfo
  101.         MprConfigInterfaceTransportSetInfo
  102.         MprConfigInterfaceTransportEnum
  103.     
  104. --*/
  105.  
  106.  
  107. #ifndef __ROUTING_MPRADMIN_H__
  108. #define __ROUTING_MPRADMIN_H__
  109.  
  110. #include <lmcons.h>
  111.  
  112. #ifdef __cplusplus
  113. extern "C" {
  114. #endif
  115.  
  116. //
  117. // Name of the Routing and RemoteAccess Service
  118. //
  119.  
  120. #define RRAS_SERVICE_NAME       TEXT("RemoteAccess")
  121.  
  122. //
  123. // Protocol IDs
  124. //
  125.  
  126. #define PID_IPX                 0x0000002B
  127. #define PID_IP                  0x00000021
  128. #define PID_NBF                 0x0000003F
  129.  
  130. #define MAX_INTERFACE_NAME_LEN  256
  131. #define MAX_TRANSPORT_NAME_LEN  40
  132. #define MAX_MEDIA_NAME          16
  133. #define MAX_PORT_NAME           16
  134. #define MAX_DEVICE_NAME         128
  135. #define MAX_PHONE_NUMBER_LEN    128
  136. #define MAX_DEVICETYPE_NAME     16
  137.  
  138. //
  139. // MPR Interface structures and definitions.
  140. //
  141.  
  142. //
  143. // MPR Interface types
  144. //
  145.  
  146. typedef enum _ROUTER_INTERFACE_TYPE
  147. {
  148.     ROUTER_IF_TYPE_CLIENT,
  149.     ROUTER_IF_TYPE_HOME_ROUTER,
  150.     ROUTER_IF_TYPE_FULL_ROUTER,
  151.     ROUTER_IF_TYPE_DEDICATED,
  152.     ROUTER_IF_TYPE_INTERNAL,
  153.     ROUTER_IF_TYPE_LOOPBACK
  154.  
  155. } ROUTER_INTERFACE_TYPE;
  156.  
  157. typedef enum _ROUTER_CONNECTION_STATE
  158. {
  159.     ROUTER_IF_STATE_UNREACHABLE,
  160.     ROUTER_IF_STATE_DISCONNECTED,
  161.     ROUTER_IF_STATE_CONNECTING,
  162.     ROUTER_IF_STATE_CONNECTED
  163.  
  164. } ROUTER_CONNECTION_STATE;
  165.  
  166. #define MPR_INTERFACE_OUT_OF_RESOURCES      0x00000001
  167. #define MPR_INTERFACE_ADMIN_DISABLED        0x00000002
  168. #define MPR_INTERFACE_CONNECTION_FAILURE    0x00000004
  169. #define MPR_INTERFACE_SERVICE_PAUSED        0x00000008
  170.  
  171. typedef struct _MPR_INTERFACE_0
  172. {
  173.     IN OUT  WCHAR                   wszInterfaceName[MAX_INTERFACE_NAME_LEN+1];
  174.     OUT     HANDLE                  hInterface;
  175.     IN OUT  BOOL                    fEnabled;
  176.     IN OUT  ROUTER_INTERFACE_TYPE   dwIfType;
  177.     OUT     ROUTER_CONNECTION_STATE dwConnectionState;
  178.     OUT     DWORD                   fUnReachabilityReasons;
  179.     OUT     DWORD                   dwLastError;
  180.  
  181. } MPR_INTERFACE_0, *PMPR_INTERFACE_0;
  182.  
  183.  
  184. typedef struct _MPR_TRANSPORT_0
  185. {
  186.     OUT     DWORD                   dwTransportId;
  187.     OUT     HANDLE                  hTransport;
  188.     OUT     WCHAR                   wszTransportName[MAX_TRANSPORT_NAME_LEN+1];
  189.  
  190. } MPR_TRANSPORT_0, *PMPR_TRANSPORT_0;
  191.  
  192.  
  193. typedef struct _MPR_IFTRANSPORT_0
  194. {
  195.     OUT     DWORD                  dwTransportId;
  196.     OUT     HANDLE                 hIfTransport;
  197.     OUT     WCHAR                  wszIfTransportName[MAX_TRANSPORT_NAME_LEN+1];
  198.  
  199. } MPR_IFTRANSPORT_0, *PMPR_IFTRANSPORT_0;
  200.  
  201. typedef struct _MPR_SERVER_0
  202. {
  203.     OUT BOOL                    fLanOnlyMode;
  204.     OUT DWORD                   dwUpTime;           // In seconds
  205.     OUT DWORD                   dwTotalPorts;   
  206.     OUT DWORD                   dwPortsInUse;   
  207.  
  208. } MPR_SERVER_0, *PMPR_SERVER_0;
  209.  
  210. //
  211. // Port condition codes
  212. //
  213.  
  214. typedef enum _RAS_PORT_CONDITION
  215. {
  216.     RAS_PORT_NON_OPERATIONAL,
  217.     RAS_PORT_DISCONNECTED,     
  218.     RAS_PORT_CALLING_BACK,    
  219.     RAS_PORT_LISTENING,   
  220.     RAS_PORT_AUTHENTICATING,
  221.     RAS_PORT_AUTHENTICATED,     
  222.     RAS_PORT_INITIALIZING
  223.  
  224. } RAS_PORT_CONDITION;
  225.  
  226. //
  227. // Hardware condition codes
  228. //
  229.  
  230. typedef enum _RAS_HARDWARE_CONDITION
  231. {
  232.     RAS_HARDWARE_OPERATIONAL,
  233.     RAS_HARDWARE_FAILURE
  234.  
  235. } RAS_HARDWARE_CONDITION;
  236.  
  237. typedef struct _RAS_PORT_0
  238. {
  239.     OUT HANDLE                  hPort;
  240.     OUT HANDLE                  hConnection;
  241.     OUT RAS_PORT_CONDITION      dwPortCondition;
  242.     OUT DWORD                   dwTotalNumberOfCalls;
  243.     OUT DWORD                   dwConnectDuration;      // In seconds
  244.     OUT WCHAR                   wszPortName[ MAX_PORT_NAME + 1 ];
  245.     OUT WCHAR                   wszMediaName[ MAX_MEDIA_NAME + 1 ];
  246.     OUT WCHAR                   wszDeviceName[ MAX_DEVICE_NAME + 1 ];
  247.     OUT WCHAR                   wszDeviceType[ MAX_DEVICETYPE_NAME + 1 ];
  248.  
  249. } RAS_PORT_0, *PRAS_PORT_0;
  250.  
  251. typedef struct _RAS_PORT_1
  252. {
  253.     OUT HANDLE                  hPort;
  254.     OUT HANDLE                  hConnection;
  255.     OUT RAS_HARDWARE_CONDITION  dwHardwareCondition;
  256.     OUT DWORD                   dwLineSpeed;            // in bits/second
  257.     OUT DWORD                   dwBytesXmited; 
  258.     OUT DWORD                   dwBytesRcved;  
  259.     OUT DWORD                   dwFramesXmited;
  260.     OUT DWORD                   dwFramesRcved; 
  261.     OUT DWORD                   dwCrcErr;     
  262.     OUT DWORD                   dwTimeoutErr;  
  263.     OUT DWORD                   dwAlignmentErr;
  264.     OUT DWORD                   dwHardwareOverrunErr;
  265.     OUT DWORD                   dwFramingErr;       
  266.     OUT DWORD                   dwBufferOverrunErr;
  267.     OUT DWORD                   dwCompressionRatioIn;
  268.     OUT DWORD                   dwCompressionRatioOut;
  269. } RAS_PORT_1, *PRAS_PORT_1;
  270.  
  271. //
  272. // Maximum length of address string, e.g. "255.255.255.255" for IP.
  273. //
  274.  
  275. #define IPADDRESSLEN  15
  276. #define IPXADDRESSLEN 22
  277. #define ATADDRESSLEN  32
  278.  
  279. typedef struct _PPP_NBFCP_INFO
  280. {
  281.     OUT DWORD           dwError;
  282.     OUT WCHAR           wszWksta[ NETBIOS_NAME_LEN + 1 ];
  283. }
  284. PPP_NBFCP_INFO;
  285.  
  286. typedef struct _PPP_IPCP_INFO
  287. {
  288.     OUT DWORD           dwError;
  289.     OUT WCHAR           wszAddress[ IPADDRESSLEN + 1 ];
  290.     OUT WCHAR           wszRemoteAddress[ IPADDRESSLEN + 1 ];
  291. }
  292. PPP_IPCP_INFO;
  293.  
  294. typedef struct _PPP_IPXCP_INFO
  295. {
  296.     OUT DWORD           dwError;
  297.     OUT WCHAR           wszAddress[ IPXADDRESSLEN + 1 ];
  298. }
  299. PPP_IPXCP_INFO;
  300.  
  301. typedef struct _PPP_ATCP_INFO
  302. {
  303.     OUT DWORD           dwError;
  304.     OUT WCHAR           wszAddress[ ATADDRESSLEN + 1 ];
  305. }
  306. PPP_ATCP_INFO;
  307.  
  308. typedef struct _PPP_INFO
  309. {
  310.     OUT PPP_NBFCP_INFO  nbf;
  311.     OUT PPP_IPCP_INFO   ip;
  312.     OUT PPP_IPXCP_INFO  ipx;
  313.     OUT PPP_ATCP_INFO   at;
  314.  
  315. } PPP_INFO;
  316.  
  317. //
  318. // Possible bits set in Connection Flags field
  319. //
  320.  
  321. #define RAS_FLAGS_PPP_CONNECTION        0x00000001
  322. #define RAS_FLAGS_MESSENGER_PRESENT     0x00000002
  323. #define RAS_FLAGS_RAS_CONNECTION        0x00000004
  324. #define RAS_FLAGS_ARAP_CONNECTION       0x00000008
  325.  
  326. typedef struct _RAS_CONNECTION_0
  327. {
  328.     OUT HANDLE                  hConnection;
  329.     OUT HANDLE                  hInterface;
  330.     OUT DWORD                   dwConnectDuration;      // In seconds
  331.     OUT ROUTER_INTERFACE_TYPE   dwInterfaceType;
  332.     OUT DWORD                   dwConnectionFlags;               
  333.     OUT WCHAR                   wszInterfaceName[ MAX_INTERFACE_NAME_LEN + 1 ];
  334.     OUT WCHAR                   wszUserName[ UNLEN + 1 ];
  335.     OUT WCHAR                   wszLogonDomain[ DNLEN + 1 ];
  336.     OUT WCHAR                   wszRemoteComputer[ NETBIOS_NAME_LEN + 1 ];
  337.  
  338. } RAS_CONNECTION_0, *PRAS_CONNECTION_0;
  339.  
  340. typedef struct _RAS_CONNECTION_1
  341. {
  342.     OUT HANDLE                  hConnection;
  343.     OUT HANDLE                  hInterface;
  344.     OUT PPP_INFO                PppInfo;
  345.     OUT DWORD                   dwBytesXmited; 
  346.     OUT DWORD                   dwBytesRcved;  
  347.     OUT DWORD                   dwFramesXmited;
  348.     OUT DWORD                   dwFramesRcved; 
  349.     OUT DWORD                   dwCrcErr;     
  350.     OUT DWORD                   dwTimeoutErr;  
  351.     OUT DWORD                   dwAlignmentErr;
  352.     OUT DWORD                   dwHardwareOverrunErr;
  353.     OUT DWORD                   dwFramingErr;       
  354.     OUT DWORD                   dwBufferOverrunErr;
  355.     OUT DWORD                   dwCompressionRatioIn;
  356.     OUT DWORD                   dwCompressionRatioOut;
  357.  
  358. } RAS_CONNECTION_1, *PRAS_CONNECTION_1;
  359.  
  360. //
  361. // Structures used by the MPRADMIN USER APIs. Use level 0 to get/set this
  362. // structure.
  363. //
  364. //
  365. // Bits indicating user's Remote Access privileges and mask to isolate
  366. // call back privilege.
  367. //
  368. // Note: Bit 0 MUST represent NoCallback due to a quirk of the "userparms"
  369. //       storage method.  When a new LAN Manager user is created, bit 0 of the
  370. //       userparms field is set to 1 and all other bits are 0.  These bits are
  371. //       arranged so this "no Dial-In info" state maps to the "default Dial-In
  372. //       privilege" state.
  373.  
  374. #define RASPRIV_NoCallback        0x01
  375. #define RASPRIV_AdminSetCallback  0x02
  376. #define RASPRIV_CallerSetCallback 0x04
  377. #define RASPRIV_DialinPrivilege   0x08
  378.  
  379. #define RASPRIV_CallbackType (RASPRIV_AdminSetCallback \
  380.                               | RASPRIV_CallerSetCallback \
  381.                               | RASPRIV_NoCallback)
  382.  
  383. typedef struct _RAS_USER_0
  384. {
  385.     OUT BYTE                    bfPrivilege;
  386.     OUT WCHAR                   wszPhoneNumber[ MAX_PHONE_NUMBER_LEN + 1];
  387.  
  388. } RAS_USER_0, *PRAS_USER_0;
  389.  
  390.  
  391. //
  392. // Used as RPC binding handle to server
  393. //
  394.  
  395. typedef HANDLE RAS_SERVER_HANDLE;
  396. typedef HANDLE MPR_SERVER_HANDLE;
  397. typedef HANDLE MIB_SERVER_HANDLE;
  398.  
  399. //
  400. //  RAS ADMIN APIs
  401. //
  402.  
  403. DWORD APIENTRY 
  404. MprAdminConnectionEnum(
  405.     IN      RAS_SERVER_HANDLE       hRasServer,
  406.     IN      DWORD                   dwLevel,
  407.     OUT     LPBYTE *                lplpbBuffer,       
  408.     IN      DWORD                   dwPrefMaxLen,
  409.     OUT     LPDWORD                 lpdwEntriesRead,
  410.     OUT     LPDWORD                 lpdwTotalEntries,
  411.     IN      LPDWORD                 lpdwResumeHandle    OPTIONAL
  412. );
  413.  
  414. DWORD APIENTRY 
  415. MprAdminPortEnum(
  416.     IN      RAS_SERVER_HANDLE       hRasServer,
  417.     IN      DWORD                   dwLevel,
  418.     IN      HANDLE                  hConnection,
  419.     OUT     LPBYTE *                lplpbBuffer,         
  420.     IN      DWORD                   dwPrefMaxLen,
  421.     OUT     LPDWORD                 lpdwEntriesRead,
  422.     OUT     LPDWORD                 lpdwTotalEntries,
  423.     IN      LPDWORD                 lpdwResumeHandle    OPTIONAL
  424. );
  425.  
  426. DWORD APIENTRY 
  427. MprAdminConnectionGetInfo(
  428.     IN      RAS_SERVER_HANDLE       hRasServer,
  429.     IN      DWORD                   dwLevel,
  430.     IN      HANDLE                  hConnection,
  431.     OUT     LPBYTE *                lplpbBuffer
  432. );
  433.  
  434. DWORD APIENTRY 
  435. MprAdminPortGetInfo(
  436.     IN      RAS_SERVER_HANDLE       hRasServer,
  437.     IN      DWORD                   dwLevel,
  438.     IN      HANDLE                  hPort,
  439.     OUT     LPBYTE *                lplpbBuffer
  440. );
  441.  
  442. DWORD APIENTRY 
  443. MprAdminConnectionClearStats(
  444.     IN      RAS_SERVER_HANDLE       hRasServer,
  445.     IN      HANDLE                  hConnection
  446. );
  447.  
  448. DWORD APIENTRY 
  449. MprAdminPortClearStats(
  450.     IN      RAS_SERVER_HANDLE       hRasServer,
  451.     IN      HANDLE                  hPort
  452. );
  453.  
  454. DWORD APIENTRY 
  455. MprAdminPortReset(
  456.     IN      RAS_SERVER_HANDLE       hRasServer,
  457.     IN      HANDLE                  hPort
  458. );
  459.  
  460. DWORD APIENTRY 
  461. MprAdminPortDisconnect(
  462.     IN      RAS_SERVER_HANDLE       hRasServer,
  463.     IN      HANDLE                  hPort
  464. );
  465.  
  466. BOOL APIENTRY 
  467. MprAdminAcceptNewConnection (
  468.     IN      RAS_CONNECTION_0 *      pRasConnection0,
  469.     IN      RAS_CONNECTION_1 *      pRasConnection1
  470.     );
  471.  
  472. BOOL APIENTRY 
  473. MprAdminAcceptNewLink (
  474.     IN      RAS_PORT_0 *            pRasPort0,
  475.     IN      RAS_PORT_1 *            pRasPort1
  476.     );
  477.  
  478. VOID APIENTRY 
  479. MprAdminConnectionHangupNotification (
  480.     IN      RAS_CONNECTION_0 *      pRasConnection0,
  481.     IN      RAS_CONNECTION_1 *      pRasConnection1
  482.     );
  483.  
  484. VOID APIENTRY 
  485. MprAdminLinkHangupNotification (
  486.     IN      RAS_PORT_0 *            pRasPort0,
  487.     IN      RAS_PORT_1 *            pRasPort1
  488.     );
  489.  
  490. DWORD APIENTRY 
  491. MprAdminGetIpAddressForUser (
  492.     IN      WCHAR *                 lpwszUserName,
  493.     IN      WCHAR *                 lpwszPortName,
  494.     IN OUT  DWORD *                 lpdwIpAddress,
  495.     OUT     BOOL *                  bNotifyRelease
  496.     );
  497.  
  498. VOID APIENTRY 
  499. MprAdminReleaseIpAddress (
  500.     IN      WCHAR *                 lpszUserName,
  501.     IN      WCHAR *                 lpszPortName,
  502.     IN      DWORD *                 lpdwIpAddress
  503.     );
  504.  
  505. //
  506. // MprAdminUser APIs
  507. //
  508.  
  509. DWORD APIENTRY 
  510. MprAdminUserGetInfo(
  511.     IN      const WCHAR *           lpszServer,
  512.     IN      const WCHAR *           lpszUser,
  513.     IN      DWORD                   dwLevel,
  514.     OUT     LPBYTE                  lpbBuffer
  515. );
  516.  
  517.  
  518. DWORD APIENTRY 
  519. MprAdminUserSetInfo(
  520.     IN      const WCHAR *           lpszServer,
  521.     IN      const WCHAR *           lpszUser,
  522.     IN      DWORD                   dwLevel,
  523.     IN      const LPBYTE            lpbBuffer
  524. );
  525.  
  526.  
  527. DWORD APIENTRY 
  528. MprAdminGetPDCServer(
  529.     IN      const WCHAR *           lpszDomain,
  530.     IN      const WCHAR *           lpszServer,
  531.     OUT     LPWSTR                  lpszPDCServer
  532. );
  533.  
  534. //
  535. // Router APIs
  536. //
  537.  
  538. BOOL APIENTRY
  539. MprAdminIsServiceRunning(
  540.     IN  LPWSTR  lpwsServerName
  541. );
  542.  
  543. DWORD APIENTRY
  544. MprAdminServerConnect(
  545.     IN      LPWSTR                  lpwsServerName      OPTIONAL,
  546.     OUT     MPR_SERVER_HANDLE *     phMprServer
  547. );
  548.  
  549. VOID APIENTRY
  550. MprAdminServerDisconnect(
  551.     IN      MPR_SERVER_HANDLE       hMprServer
  552. );
  553.  
  554. DWORD APIENTRY
  555. MprAdminBufferFree(
  556.     IN      LPVOID                  pBuffer 
  557. );
  558.  
  559. DWORD APIENTRY
  560. MprAdminGetErrorString(
  561.     IN      DWORD                   dwError,
  562.     OUT     LPWSTR *                lpwsErrorString
  563. );
  564.  
  565. DWORD APIENTRY 
  566. MprAdminServerGetInfo(
  567.     IN      MPR_SERVER_HANDLE       hMprServer,
  568.     IN      DWORD                   dwLevel,
  569.     OUT     LPBYTE *                lplpbBuffer
  570. );
  571.  
  572. DWORD APIENTRY 
  573. MprAdminTransportSetInfo(    
  574.     IN      MPR_SERVER_HANDLE       hMprServer,
  575.     IN      DWORD                   dwTransportId,
  576.     IN      LPBYTE                  pGlobalInfo                 OPTIONAL,
  577.     IN      DWORD                   dwGlobalInfoSize,
  578.     IN      LPBYTE                  pClientInterfaceInfo        OPTIONAL,
  579.     IN      DWORD                   dwClientInterfaceInfoSize
  580. );
  581.  
  582. DWORD APIENTRY 
  583. MprAdminTransportGetInfo(    
  584.     IN      MPR_SERVER_HANDLE       hMprServer,
  585.     IN      DWORD                   dwTransportId,
  586.     OUT     LPBYTE *                ppGlobalInfo                OPTIONAL,
  587.     OUT     LPDWORD                 lpdwGlobalInfoSize          OPTIONAL,
  588.     OUT     LPBYTE *                ppClientInterfaceInfo       OPTIONAL,
  589.     OUT     LPDWORD                 lpdwClientInterfaceInfoSize OPTIONAL
  590. );
  591.  
  592. DWORD APIENTRY
  593. MprAdminInterfaceTransportProtoDisable(
  594.     IN      MPR_SERVER_HANDLE       hMprServer,
  595.     IN      HANDLE                  hInterface,
  596.     IN      DWORD                   dwTransportId,
  597.     IN      DWORD                   dwProtocolId
  598.     );
  599.  
  600. DWORD APIENTRY
  601. MprAdminInterfaceTransportProtoEnable(
  602.     IN      MPR_SERVER_HANDLE       hMprServer,
  603.     IN      HANDLE                  hInterface,
  604.     IN      DWORD                   dwTransportId,
  605.     IN      DWORD                   dwProtocolId
  606.     );
  607.  
  608. DWORD APIENTRY 
  609. MprAdminInterfaceGetHandle(    
  610.     IN      MPR_SERVER_HANDLE       hMprServer,
  611.     IN      LPWSTR                  lpwsInterfaceName, 
  612.     OUT     HANDLE *                phInterface,
  613.     IN      BOOL                    fIncludeClientInterfaces
  614. );
  615.  
  616. DWORD APIENTRY 
  617. MprAdminInterfaceCreate(    
  618.     IN      MPR_SERVER_HANDLE       hMprServer,
  619.     IN      DWORD                   dwLevel,
  620.     IN      LPBYTE                  lpbBuffer,
  621.     OUT     HANDLE *                phInterface
  622. );
  623.  
  624. DWORD APIENTRY 
  625. MprAdminInterfaceGetInfo(    
  626.     IN      MPR_SERVER_HANDLE       hMprServer,
  627.     IN      HANDLE                  hInterface,
  628.     IN      DWORD                   dwLevel,
  629.     IN      LPBYTE *                lplpbBuffer
  630. );
  631.  
  632. DWORD APIENTRY 
  633. MprAdminInterfaceSetInfo(    
  634.     IN      MPR_SERVER_HANDLE       hMprServer,
  635.     IN      HANDLE                  hInterface,
  636.     IN      DWORD                   dwLevel,
  637.     IN      LPBYTE                  lpbBuffer
  638. );
  639.  
  640. DWORD APIENTRY
  641. MprAdminInterfaceDelete( 
  642.     IN      MPR_SERVER_HANDLE       hMprServer,
  643.     IN      HANDLE                  hInterface
  644. );   
  645.  
  646. DWORD APIENTRY
  647. MprAdminInterfaceTransportRemove( 
  648.     IN      MPR_SERVER_HANDLE       hMprServer,
  649.     IN      HANDLE                  hInterface,
  650.     IN      DWORD                   dwTransportId
  651. );   
  652.  
  653. DWORD APIENTRY 
  654. MprAdminInterfaceTransportAdd(    
  655.     IN      MPR_SERVER_HANDLE       hMprServer,
  656.     IN      HANDLE                  hInterface,
  657.     IN      DWORD                   dwTransportId,
  658.     IN      LPBYTE                  pInterfaceInfo,
  659.     IN      DWORD                   dwInterfaceInfoSize
  660. );
  661.  
  662. DWORD APIENTRY 
  663. MprAdminInterfaceTransportGetInfo(    
  664.     IN      MPR_SERVER_HANDLE       hMprServer,
  665.     IN      HANDLE                  hInterface,
  666.     IN      DWORD                   dwTransportId,
  667.     OUT     LPBYTE *                ppInterfaceInfo,
  668.     OUT     LPDWORD                 lpdwpInterfaceInfoSize  OPTIONAL
  669. );
  670.  
  671. DWORD APIENTRY 
  672. MprAdminInterfaceTransportSetInfo(    
  673.     IN      MPR_SERVER_HANDLE       hMprServer,
  674.     IN      HANDLE                  hInterface,
  675.     IN      DWORD                   dwTransportId,
  676.     IN      LPBYTE                  pInterfaceInfo,
  677.     IN      DWORD                   dwInterfaceInfoSize
  678. );
  679.  
  680. DWORD APIENTRY 
  681. MprAdminInterfaceEnum(
  682.     IN      MPR_SERVER_HANDLE       hMprServer,
  683.     IN      DWORD                   dwLevel,
  684.     OUT     LPBYTE *                lplpbBuffer,          
  685.     IN      DWORD                   dwPrefMaxLen,
  686.     OUT     LPDWORD                 lpdwEntriesRead,
  687.     OUT     LPDWORD                 lpdwTotalEntries,
  688.     IN      LPDWORD                 lpdwResumeHandle        OPTIONAL
  689. );
  690.  
  691. DWORD APIENTRY
  692. MprAdminInterfaceSetCredentials(    
  693.     IN      LPWSTR                  lpwsServer              OPTIONAL,
  694.     IN      LPWSTR                  lpwsInterfaceName,
  695.     IN      LPWSTR                  lpwsUserName            OPTIONAL,
  696.     IN      LPWSTR                  lpwsDomainName          OPTIONAL,
  697.     IN      LPWSTR                  lpwsPassword            OPTIONAL
  698. );
  699.  
  700. DWORD APIENTRY
  701. MprAdminInterfaceGetCredentials(    
  702.     IN      LPWSTR                  lpwsServer              OPTIONAL,
  703.     IN      LPWSTR                  lpwsInterfaceName,
  704.     IN      LPWSTR                  lpwsUserName            OPTIONAL,
  705.     IN      LPWSTR                  lpwsPassword            OPTIONAL,
  706.     IN      LPWSTR                  lpwsDomainName          OPTIONAL
  707. );
  708.  
  709. DWORD APIENTRY 
  710. MprAdminInterfaceConnect(
  711.     IN      MPR_SERVER_HANDLE       hMprServer,
  712.     IN      HANDLE                  hInterface,
  713.     IN      HANDLE                  hEvent,
  714.     IN      BOOL                    fSynchronous
  715. );
  716.  
  717. DWORD APIENTRY 
  718. MprAdminInterfaceDisconnect(
  719.     IN      MPR_SERVER_HANDLE       hMprServer,
  720.     IN      HANDLE                  hInterface
  721. );
  722.  
  723. DWORD APIENTRY
  724. MprAdminInterfaceUpdateRoutes(
  725.     IN      MPR_SERVER_HANDLE       hMprServer,
  726.     IN      HANDLE                  hInterface,
  727.     IN      DWORD                   dwProtocolId,
  728.     IN      HANDLE                  hEvent
  729. );
  730.  
  731. DWORD APIENTRY
  732. MprAdminInterfaceQueryUpdateResult(
  733.     IN      MPR_SERVER_HANDLE       hMprServer,
  734.     IN      HANDLE                  hInterface,
  735.     IN      DWORD                   dwProtocolId,
  736.     OUT     LPDWORD                 lpdwUpdateResult
  737. );
  738.  
  739. DWORD APIENTRY
  740. MprAdminInterfaceUpdatePhonebookInfo(
  741.     IN      MPR_SERVER_HANDLE       hMprServer,
  742.     IN      HANDLE                  hInterface
  743. );
  744.  
  745. //
  746. // MIB APIs
  747. //
  748.  
  749. DWORD APIENTRY
  750. MprAdminMIBServerConnect(
  751.     IN      LPWSTR                  lpwsServerName      OPTIONAL,
  752.     OUT     MIB_SERVER_HANDLE *     phMibServer
  753. );
  754.  
  755. VOID APIENTRY
  756. MprAdminMIBServerDisconnect(
  757.     IN      MIB_SERVER_HANDLE       hMibServer
  758. );
  759.  
  760. DWORD APIENTRY 
  761. MprAdminMIBEntryCreate(
  762.     IN      MIB_SERVER_HANDLE       hMibServer,
  763.     IN      DWORD                   dwPid,
  764.     IN      DWORD                   dwRoutingPid,
  765.     IN      LPVOID                  lpEntry,
  766.     IN      DWORD                   dwEntrySize
  767. );
  768.  
  769. DWORD APIENTRY 
  770. MprAdminMIBEntryDelete(
  771.     IN      MIB_SERVER_HANDLE       hMibServer,
  772.     IN      DWORD                   dwProtocolId,
  773.     IN      DWORD                   dwRoutingPid,
  774.     IN      LPVOID                  lpEntry,
  775.     IN      DWORD                   dwEntrySize
  776. );
  777.  
  778. DWORD APIENTRY 
  779. MprAdminMIBEntrySet(
  780.     IN      MIB_SERVER_HANDLE       hMibServer,
  781.     IN      DWORD                   dwProtocolId,
  782.     IN      DWORD                   dwRoutingPid,
  783.     IN      LPVOID                  lpEntry,
  784.     IN      DWORD                   dwEntrySize
  785. );
  786.  
  787. DWORD APIENTRY 
  788. MprAdminMIBEntryGet(
  789.     IN      MIB_SERVER_HANDLE       hMibServer,
  790.     IN      DWORD                   dwProtocolId,
  791.     IN      DWORD                   dwRoutingPid,
  792.     IN      LPVOID                  lpInEntry,
  793.     IN      DWORD                   dwInEntrySize,
  794.     OUT     LPVOID*                 lplpOutEntry,
  795.     OUT     LPDWORD                 lpOutEntrySize
  796. );
  797.  
  798. DWORD APIENTRY 
  799. MprAdminMIBEntryGetFirst(
  800.     IN      MIB_SERVER_HANDLE       hMibServer,
  801.     IN      DWORD                   dwProtocolId,
  802.     IN      DWORD                   dwRoutingPid,
  803.     IN      LPVOID                  lpInEntry,
  804.     IN      DWORD                   dwInEntrySize,
  805.     OUT     LPVOID*                 lplpOutEntry,
  806.     OUT     LPDWORD                 lpOutEntrySize
  807. );
  808.  
  809. DWORD APIENTRY 
  810. MprAdminMIBEntryGetNext(
  811.     IN      MIB_SERVER_HANDLE       hMibServer,
  812.     IN      DWORD                   dwProtocolId,
  813.     IN      DWORD                   dwRoutingPid,
  814.     IN      LPVOID                  lpInEntry,
  815.     IN      DWORD                   dwInEntrySize,
  816.     OUT     LPVOID*                 lplpOutEntry,
  817.     OUT     LPDWORD                 lpOutEntrySize
  818. );
  819.  
  820. DWORD APIENTRY
  821. MprAdminMIBGetTrapInfo(
  822.     IN      MIB_SERVER_HANDLE       hMibServer,
  823.     IN      DWORD                   dwProtocolId,
  824.     IN      DWORD                   dwRoutingPid,
  825.     IN      LPVOID                  lpInData,
  826.     IN      DWORD                   dwInDataSize,
  827.     OUT     LPVOID*                 lplpOutData,
  828.     IN OUT  LPDWORD                 lpOutDataSize   
  829. );
  830.  
  831. DWORD APIENTRY
  832. MprAdminMIBSetTrapInfo(
  833.     IN      DWORD                   dwProtocolId,
  834.     IN      DWORD                   dwRoutingPid,
  835.     IN      HANDLE                  hEvent,
  836.     IN      LPVOID                  lpInData,
  837.     IN      DWORD                   dwInDataSize,
  838.     OUT     LPVOID*                 lplpOutData,
  839.     IN OUT  LPDWORD                 lpOutDataSize   
  840. );
  841.  
  842. DWORD APIENTRY
  843. MprAdminMIBBufferFree(
  844.     IN      LPVOID                  pBuffer 
  845. );
  846.  
  847.  
  848.  
  849. //
  850. // Configuration APIs
  851. //
  852.  
  853. DWORD APIENTRY
  854. MprConfigServerConnect(
  855.     IN      LPWSTR                  lpwsServerName,
  856.     OUT     HANDLE*                 phMprConfig
  857. );
  858.  
  859. VOID APIENTRY
  860. MprConfigServerDisconnect(
  861.     IN      HANDLE                  hMprConfig
  862. );
  863.  
  864. DWORD APIENTRY
  865. MprConfigBufferFree(
  866.     IN      LPVOID                  pBuffer
  867. );
  868.  
  869. DWORD APIENTRY
  870. MprConfigServerGetInfo(
  871.     IN      HANDLE                  hMprConfig,
  872.     IN      DWORD                   dwLevel,
  873.     OUT     LPBYTE *                lplpbBuffer
  874. );
  875.  
  876. DWORD APIENTRY
  877. MprConfigServerBackup(
  878.     IN      HANDLE                  hMprConfig,
  879.     IN      LPWSTR                  lpwsPath
  880. );
  881.  
  882. DWORD APIENTRY
  883. MprConfigServerRestore(
  884.     IN      HANDLE                  hMprConfig,
  885.     IN      LPWSTR                  lpwsPath
  886. );
  887.  
  888. DWORD APIENTRY
  889. MprConfigTransportCreate(
  890.     IN      HANDLE                  hMprConfig,
  891.     IN      DWORD                   dwTransportId,
  892.     IN      LPWSTR                  lpwsTransportName           OPTIONAL,
  893.     IN      LPBYTE                  pGlobalInfo,
  894.     IN      DWORD                   dwGlobalInfoSize,
  895.     IN      LPBYTE                  pClientInterfaceInfo        OPTIONAL,
  896.     IN      DWORD                   dwClientInterfaceInfoSize   OPTIONAL,
  897.     IN      LPWSTR                  lpwsDLLPath,
  898.     OUT     HANDLE*                 phRouterTransport
  899. );
  900.  
  901. DWORD APIENTRY
  902. MprConfigTransportDelete(
  903.     IN      HANDLE                  hMprConfig,
  904.     IN      HANDLE                  hRouterTransport
  905. );
  906.  
  907. DWORD APIENTRY
  908. MprConfigTransportGetHandle(
  909.     IN      HANDLE                  hMprConfig,
  910.     IN      DWORD                   dwTransportId,
  911.     OUT     HANDLE*                 phRouterTransport
  912. );
  913.  
  914. DWORD APIENTRY
  915. MprConfigTransportSetInfo(
  916.     IN      HANDLE                  hMprConfig,
  917.     IN      HANDLE                  hRouterTransport,
  918.     IN      LPBYTE                  pGlobalInfo                 OPTIONAL,
  919.     IN      DWORD                   dwGlobalInfoSize            OPTIONAL,
  920.     IN      LPBYTE                  pClientInterfaceInfo        OPTIONAL,
  921.     IN      DWORD                   dwClientInterfaceInfoSize   OPTIONAL,
  922.     IN      LPWSTR                  lpwsDLLPath                 OPTIONAL
  923. );
  924.  
  925. DWORD APIENTRY
  926. MprConfigTransportGetInfo(
  927.     IN      HANDLE                  hMprConfig,
  928.     IN      HANDLE                  hRouterTransport,
  929.     IN  OUT LPBYTE*                 ppGlobalInfo                OPTIONAL,
  930.     OUT     LPDWORD                 lpdwGlobalInfoSize          OPTIONAL,
  931.     IN  OUT LPBYTE*                 ppClientInterfaceInfo       OPTIONAL,
  932.     OUT     LPDWORD                 lpdwClientInterfaceInfoSize OPTIONAL,
  933.     IN  OUT LPWSTR*                 lplpwsDLLPath               OPTIONAL
  934. );
  935.  
  936. DWORD APIENTRY
  937. MprConfigTransportEnum(
  938.     IN      HANDLE                  hMprConfig,
  939.     IN      DWORD                   dwLevel,
  940.     IN  OUT LPBYTE*                 lplpBuffer,     
  941.     IN      DWORD                   dwPrefMaxLen,
  942.     OUT     LPDWORD                 lpdwEntriesRead,
  943.     OUT     LPDWORD                 lpdwTotalEntries,
  944.     IN  OUT LPDWORD                 lpdwResumeHandle            OPTIONAL
  945. );
  946.  
  947. DWORD APIENTRY
  948. MprConfigInterfaceCreate(
  949.     IN      HANDLE                  hMprConfig,
  950.     IN      DWORD                   dwLevel,
  951.     IN      LPBYTE                  lpbBuffer,
  952.     OUT     HANDLE*                 phRouterInterface
  953. );
  954.  
  955. DWORD APIENTRY
  956. MprConfigInterfaceDelete(
  957.     IN      HANDLE                  hMprConfig,
  958.     IN      HANDLE                  hRouterInterface 
  959. );
  960.  
  961. DWORD APIENTRY
  962. MprConfigInterfaceGetHandle(
  963.     IN      HANDLE                  hMprConfig,
  964.     IN      LPWSTR                  lpwsInterfaceName,
  965.     OUT     HANDLE*                 phRouterInterface
  966. );
  967.  
  968. DWORD APIENTRY
  969. MprConfigInterfaceGetInfo(
  970.     IN      HANDLE                  hMprConfig,
  971.     IN      HANDLE                  hRouterInterface,
  972.     IN      DWORD                   dwLevel,
  973.     IN  OUT LPBYTE*                 lplpBuffer,     
  974.     OUT     LPDWORD                 lpdwBufferSize
  975. );
  976.  
  977. DWORD APIENTRY
  978. MprConfigInterfaceSetInfo(
  979.     IN      HANDLE                  hMprConfig,
  980.     IN      HANDLE                  hRouterInterface,
  981.     IN      DWORD                   dwLevel,
  982.     IN      LPBYTE                  lpbBuffer
  983. );
  984.  
  985. DWORD APIENTRY
  986. MprConfigInterfaceEnum(
  987.     IN      HANDLE                  hMprConfig,
  988.     IN      DWORD                   dwLevel,
  989.     IN  OUT LPBYTE*                 lplpBuffer,     
  990.     IN      DWORD                   dwPrefMaxLen,
  991.     OUT     LPDWORD                 lpdwEntriesRead,
  992.     OUT     LPDWORD                 lpdwTotalEntries,
  993.     IN  OUT LPDWORD                 lpdwResumeHandle            OPTIONAL
  994. );
  995.  
  996. DWORD APIENTRY
  997. MprConfigInterfaceTransportAdd(
  998.     IN      HANDLE                  hMprConfig,
  999.     IN      HANDLE                  hRouterInterface, 
  1000.     IN      DWORD                   dwTransportId,
  1001.     IN      LPWSTR                  lpwsTransportName           OPTIONAL,
  1002.     IN      LPBYTE                  pInterfaceInfo,
  1003.     IN      DWORD                   dwInterfaceInfoSize,
  1004.     OUT     HANDLE*                 phRouterIfTransport
  1005. );
  1006.  
  1007. DWORD APIENTRY
  1008. MprConfigInterfaceTransportRemove(
  1009.     IN      HANDLE                  hMprConfig,
  1010.     IN      HANDLE                  hRouterInterface,
  1011.     IN      HANDLE                  hRouterIfTransport
  1012. );
  1013.  
  1014. DWORD APIENTRY
  1015. MprConfigInterfaceTransportGetHandle(
  1016.     IN      HANDLE                  hMprConfig,
  1017.     IN      HANDLE                  hRouterInterface,
  1018.     IN      DWORD                   dwTransportId,
  1019.     OUT     HANDLE*                 phRouterIfTransport
  1020. );
  1021.  
  1022. DWORD APIENTRY
  1023. MprConfigInterfaceTransportGetInfo(
  1024.     IN      HANDLE                  hMprConfig,
  1025.     IN      HANDLE                  hRouterInterface,
  1026.     IN      HANDLE                  hRouterIfTransport,
  1027.     IN  OUT LPBYTE*                 ppInterfaceInfo             OPTIONAL,
  1028.     OUT     LPDWORD                 lpdwInterfaceInfoSize       OPTIONAL
  1029. );
  1030.  
  1031. DWORD APIENTRY
  1032. MprConfigInterfaceTransportSetInfo(
  1033.     IN      HANDLE                  hMprConfig,
  1034.     IN      HANDLE                  hRouterInterface,
  1035.     IN      HANDLE                  hRouterIfTransport,
  1036.     IN      LPBYTE                  pInterfaceInfo              OPTIONAL,
  1037.     IN      DWORD                   dwInterfaceInfoSize         OPTIONAL
  1038. );
  1039.  
  1040. DWORD APIENTRY
  1041. MprConfigInterfaceTransportEnum(
  1042.     IN      HANDLE                  hMprConfig,
  1043.     IN      HANDLE                  hRouterInterface,
  1044.     IN      DWORD                   dwLevel,
  1045.     IN  OUT LPBYTE*                 lplpBuffer,     // MPR_IFTRANSPORT_0
  1046.     IN      DWORD                   dwPrefMaxLen,
  1047.     OUT     LPDWORD                 lpdwEntriesRead,
  1048.     OUT     LPDWORD                 lpdwTotalEntries,
  1049.     IN  OUT LPDWORD                 lpdwResumeHandle            OPTIONAL
  1050. );
  1051.  
  1052.  
  1053. //
  1054. // Information block APIs
  1055. //
  1056.  
  1057. DWORD APIENTRY
  1058. MprInfoCreate(
  1059.     IN      DWORD                   dwVersion,
  1060.     OUT     LPVOID*                 lplpNewHeader
  1061. );
  1062.  
  1063. DWORD APIENTRY
  1064. MprInfoDelete(
  1065.     IN      LPVOID                  lpHeader
  1066. );
  1067.  
  1068. DWORD APIENTRY
  1069. MprInfoRemoveAll(
  1070.     IN      LPVOID                  lpHeader,
  1071.     OUT     LPVOID*                 lplpNewHeader
  1072. );
  1073.  
  1074. DWORD APIENTRY
  1075. MprInfoDuplicate(
  1076.     IN      LPVOID                  lpHeader,
  1077.     OUT     LPVOID*                 lplpNewHeader
  1078. );
  1079.  
  1080. DWORD APIENTRY
  1081. MprInfoBlockAdd(
  1082.     IN      LPVOID                  lpHeader,
  1083.     IN      DWORD                   dwInfoType,
  1084.     IN      DWORD                   dwItemSize,
  1085.     IN      DWORD                   dwItemCount,
  1086.     IN      LPBYTE                  lpItemData,
  1087.     OUT     LPVOID*                 lplpNewHeader
  1088. );
  1089.  
  1090. DWORD APIENTRY
  1091. MprInfoBlockRemove(
  1092.     IN      LPVOID                  lpHeader,
  1093.     IN      DWORD                   dwInfoType,
  1094.     OUT     LPVOID*                 lplpNewHeader
  1095. );
  1096.  
  1097. DWORD APIENTRY
  1098. MprInfoBlockSet(
  1099.     IN      LPVOID                  lpHeader,
  1100.     IN      DWORD                   dwInfoType,
  1101.     IN      DWORD                   dwItemSize,
  1102.     IN      DWORD                   dwItemCount,
  1103.     IN      LPBYTE                  lpItemData,
  1104.     OUT     LPVOID*                 lplpNewHeader
  1105. );
  1106.  
  1107. DWORD APIENTRY
  1108. MprInfoBlockFind(
  1109.     IN      LPVOID                  lpHeader,
  1110.     IN      DWORD                   dwInfoType,
  1111.     OUT     LPDWORD                 lpdwItemSize,       // OPTIONAL
  1112.     OUT     LPDWORD                 lpdwItemCount,      // OPTIONAL
  1113.     OUT     LPBYTE*                 lplpItemData        // OPTIONAL
  1114. );
  1115.  
  1116. //
  1117. // BOOL APIENTRY
  1118. // MprInfoBlockExists(
  1119. //     IN      LPVOID                  lpHeader,
  1120. //     IN      DWORD                   dwInfoType
  1121. // );
  1122. //
  1123.  
  1124. #define MprInfoBlockExists(h,t) \
  1125.     (MprInfoBlockFind((h),(t),NULL,NULL,NULL) == NO_ERROR)
  1126.  
  1127.  
  1128.  
  1129. #ifdef __cplusplus
  1130. }
  1131. #endif
  1132.  
  1133. #endif // __ROUTING_MPRADMIN_H__
  1134.