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