home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2000 May / MICD_2000_05.iso / CBuilder5 / INSTALL / DATA1.CAB / Program_Built_Files / Include / iphlpapi.h < prev    next >
C/C++ Source or Header  |  2000-02-01  |  15KB  |  495 lines

  1. /*++
  2.  
  3. Copyright (c) 1997-1999  Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     public\sdk\inc\iphlpapi.h
  8.  
  9. Abstract:
  10.     Header file for functions to interact with the IP Stack for MIB-II and
  11.     related functionality
  12.  
  13. Revision History:
  14.     Amritansh Raghav    Created
  15.     NK Srinivas         Added
  16.  
  17. --*/
  18.  
  19. #ifndef __IPHLPAPI_H__
  20. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  21. #define __IPHLPAPI_H__
  22.  
  23. #if _MSC_VER > 1000
  24. #pragma once
  25. #endif
  26.  
  27. #ifdef __cplusplus
  28. extern "C" {
  29. #endif
  30.  
  31. //////////////////////////////////////////////////////////////////////////////
  32. //                                                                          //
  33. // IPRTRMIB.H has the definitions of the strcutures used to set and get     //
  34. // information                                                              //
  35. //                                                                          //
  36. //////////////////////////////////////////////////////////////////////////////
  37.  
  38. #include <iprtrmib.h>
  39. #include <ipexport.h>
  40. #include <iptypes.h>
  41.  
  42. //////////////////////////////////////////////////////////////////////////////
  43. //                                                                          //
  44. // The GetXXXTable APIs take a buffer and a size of buffer.  If the buffer  //
  45. // is not large enough, they APIs return ERROR_INSUFFICIENT_BUFFER  and     //
  46. // *pdwSize is the required buffer size                                     //
  47. // The bOrder is a BOOLEAN, which if TRUE sorts the table according to      //
  48. // MIB-II (RFC XXXX)                                                        //
  49. //                                                                          //
  50. //////////////////////////////////////////////////////////////////////////////
  51.  
  52.  
  53. //////////////////////////////////////////////////////////////////////////////
  54. //                                                                          //
  55. // Retrieves the number of interfaces in the system. These include LAN and  //
  56. // WAN interfaces                                                           //
  57. //                                                                          //
  58. //////////////////////////////////////////////////////////////////////////////
  59.  
  60.  
  61. DWORD
  62. WINAPI
  63. GetNumberOfInterfaces(
  64.     OUT PDWORD  pdwNumIf
  65.     );
  66.  
  67. //////////////////////////////////////////////////////////////////////////////
  68. //                                                                          //
  69. // Gets the MIB-II ifEntry                                                  //
  70. // The dwIndex field of the MIB_IFROW should be set to the index of the     //
  71. // interface being queried                                                  //
  72. //                                                                          //
  73. //////////////////////////////////////////////////////////////////////////////
  74.  
  75. DWORD
  76. WINAPI
  77. GetIfEntry(
  78.     IN OUT PMIB_IFROW   pIfRow
  79.     );
  80.  
  81. //////////////////////////////////////////////////////////////////////////////
  82. //                                                                          //
  83. // Gets the MIB-II IfTable                                                  //
  84. //                                                                          //
  85. //////////////////////////////////////////////////////////////////////////////
  86.  
  87. DWORD
  88. WINAPI
  89. GetIfTable(
  90.     OUT    PMIB_IFTABLE pIfTable,
  91.     IN OUT PULONG       pdwSize,
  92.     IN     BOOL         bOrder
  93.     );
  94.  
  95. //////////////////////////////////////////////////////////////////////////////
  96. //                                                                          //
  97. // Gets the Interface to IP Address mapping                                 //
  98. //                                                                          //
  99. //////////////////////////////////////////////////////////////////////////////
  100.  
  101. DWORD
  102. WINAPI
  103. GetIpAddrTable(
  104.     OUT    PMIB_IPADDRTABLE pIpAddrTable,
  105.     IN OUT PULONG           pdwSize,
  106.     IN     BOOL             bOrder
  107.     );
  108.  
  109. //////////////////////////////////////////////////////////////////////////////
  110. //                                                                          //
  111. // Gets the current IP Address to Physical Address (ARP) mapping            //
  112. //                                                                          //
  113. //////////////////////////////////////////////////////////////////////////////
  114.  
  115. DWORD
  116. WINAPI
  117. GetIpNetTable(
  118.     OUT    PMIB_IPNETTABLE pIpNetTable,
  119.     IN OUT PULONG          pdwSize,
  120.     IN     BOOL            bOrder
  121.     );
  122.  
  123. //////////////////////////////////////////////////////////////////////////////
  124. //                                                                          //
  125. // Gets the IP Routing Table  (RFX XXXX)                                    //
  126. //                                                                          //
  127. //////////////////////////////////////////////////////////////////////////////
  128.  
  129. DWORD
  130. WINAPI
  131. GetIpForwardTable(
  132.     OUT    PMIB_IPFORWARDTABLE pIpForwardTable,
  133.     IN OUT PULONG              pdwSize,
  134.     IN     BOOL                bOrder
  135.     );
  136.  
  137. //////////////////////////////////////////////////////////////////////////////
  138. //                                                                          //
  139. // Gets TCP Connection/UDP Listener Table                                   //
  140. //                                                                          //
  141. //////////////////////////////////////////////////////////////////////////////
  142.  
  143. DWORD
  144. WINAPI
  145. GetTcpTable(
  146.     OUT    PMIB_TCPTABLE pTcpTable,
  147.     IN OUT PDWORD        pdwSize,
  148.     IN     BOOL          bOrder
  149.     );
  150.  
  151. DWORD
  152. WINAPI
  153. GetUdpTable(
  154.     OUT    PMIB_UDPTABLE pUdpTable,
  155.     IN OUT PDWORD        pdwSize,
  156.     IN     BOOL          bOrder
  157.     );
  158.  
  159.  
  160. //////////////////////////////////////////////////////////////////////////////
  161. //                                                                          //
  162. // Gets IP/ICMP/TCP/UDP Statistics                                          //
  163. //                                                                          //
  164. //////////////////////////////////////////////////////////////////////////////
  165.  
  166. DWORD
  167. WINAPI
  168. GetIpStatistics(
  169.     OUT  PMIB_IPSTATS   pStats
  170.     );
  171.  
  172. DWORD
  173. WINAPI
  174. GetIcmpStatistics(
  175.     OUT PMIB_ICMP   pStats
  176.     );
  177.  
  178.  
  179. DWORD
  180. WINAPI
  181. GetTcpStatistics(
  182.     OUT PMIB_TCPSTATS   pStats
  183.     );
  184.  
  185. DWORD
  186. WINAPI
  187. GetUdpStatistics(
  188.     OUT PMIB_UDPSTATS   pStats
  189.     );
  190.  
  191. //////////////////////////////////////////////////////////////////////////////
  192. //                                                                          //
  193. // Used to set the ifAdminStatus on an interface.  The only fields of the   //
  194. // MIB_IFROW that are relevant are the dwIndex (index of the interface      //
  195. // whose status needs to be set) and the dwAdminStatus which can be either  //
  196. // MIB_IF_ADMIN_STATUS_UP or MIB_IF_ADMIN_STATUS_DOWN                       //
  197. //                                                                          //
  198. //////////////////////////////////////////////////////////////////////////////
  199.  
  200. DWORD
  201. WINAPI
  202. SetIfEntry(
  203.     IN PMIB_IFROW pIfRow
  204.     );
  205.  
  206. //////////////////////////////////////////////////////////////////////////////
  207. //                                                                          //
  208. // Used to create, modify or delete a route.  In all cases the              //
  209. // dwForwardIfIndex, dwForwardDest, dwForwardMask, dwForwardNextHop and     //
  210. // dwForwardPolicy MUST BE SPECIFIED. Currently dwForwardPolicy is unused   //
  211. // and MUST BE 0.                                                           //
  212. // For a set, the complete MIB_IPFORWARDROW structure must be specified     //
  213. //                                                                          //
  214. //////////////////////////////////////////////////////////////////////////////
  215.  
  216. DWORD
  217. WINAPI
  218. CreateIpForwardEntry(
  219.     IN PMIB_IPFORWARDROW pRoute
  220.     );
  221.  
  222. DWORD
  223. WINAPI
  224. SetIpForwardEntry(
  225.     IN PMIB_IPFORWARDROW pRoute
  226.     );
  227.  
  228. DWORD
  229. WINAPI
  230. DeleteIpForwardEntry(
  231.     IN PMIB_IPFORWARDROW pRoute
  232.     );
  233.  
  234. //////////////////////////////////////////////////////////////////////////////
  235. //                                                                          //
  236. // Used to set the ipForwarding to ON or OFF (currently only ON->OFF is     //
  237. // allowed) and to set the defaultTTL.  If only one of the fields needs to  //
  238. // be modified and the other needs to be the same as before the other field //
  239. // needs to be set to MIB_USE_CURRENT_TTL or MIB_USE_CURRENT_FORWARDING as  //
  240. // the case may be                                                          //
  241. //                                                                          //
  242. //////////////////////////////////////////////////////////////////////////////
  243.  
  244.  
  245. DWORD
  246. WINAPI
  247. SetIpStatistics(
  248.     IN PMIB_IPSTATS pIpStats
  249.     );
  250.  
  251. //////////////////////////////////////////////////////////////////////////////
  252. //                                                                          //
  253. // Used to set the defaultTTL.                                              //
  254. //                                                                          //
  255. //////////////////////////////////////////////////////////////////////////////
  256.  
  257. DWORD
  258. WINAPI
  259. SetIpTTL(
  260.     UINT nTTL
  261.     );
  262.  
  263. //////////////////////////////////////////////////////////////////////////////
  264. //                                                                          //
  265. // Used to create, modify or delete an ARP entry.  In all cases the dwIndex //
  266. // dwAddr field MUST BE SPECIFIED.                                          //
  267. // For a set, the complete MIB_IPNETROW structure must be specified         //
  268. //                                                                          //
  269. //////////////////////////////////////////////////////////////////////////////
  270.  
  271. DWORD
  272. WINAPI
  273. CreateIpNetEntry(
  274.     IN PMIB_IPNETROW    pArpEntry
  275.     );
  276.  
  277. DWORD
  278. WINAPI
  279. SetIpNetEntry(
  280.     IN PMIB_IPNETROW    pArpEntry
  281.     );
  282.  
  283. DWORD
  284. WINAPI
  285. DeleteIpNetEntry(
  286.     IN PMIB_IPNETROW    pArpEntry
  287.     );
  288.  
  289. DWORD
  290. WINAPI
  291. FlushIpNetTable(
  292.     IN DWORD   dwIfIndex
  293.     );
  294.  
  295.  
  296. //////////////////////////////////////////////////////////////////////////////
  297. //                                                                          //
  298. // Used to create or delete a Proxy ARP entry. The dwIndex is the index of  //
  299. // the interface on which to PARP for the dwAddress.  If the interface is   //
  300. // of a type that doesnt support ARP, e.g. PPP, then the call will fail     //
  301. //                                                                          //
  302. //////////////////////////////////////////////////////////////////////////////
  303.  
  304. DWORD
  305. WINAPI
  306. CreateProxyArpEntry(
  307.     IN  DWORD   dwAddress,
  308.     IN  DWORD   dwMask,
  309.     IN  DWORD   dwIfIndex
  310.     );
  311.  
  312. DWORD
  313. WINAPI
  314. DeleteProxyArpEntry(
  315.     IN  DWORD   dwAddress,
  316.     IN  DWORD   dwMask,
  317.     IN  DWORD   dwIfIndex
  318.     );
  319.  
  320. //////////////////////////////////////////////////////////////////////////////
  321. //                                                                          //
  322. // Used to set the state of a TCP Connection. The only state that it can be //
  323. // set to is MIB_TCP_STATE_DELETE_TCB.  The complete MIB_TCPROW structure   //
  324. // MUST BE SPECIFIED                                                        //
  325. //                                                                          //
  326. //////////////////////////////////////////////////////////////////////////////
  327.  
  328. DWORD
  329. WINAPI
  330. SetTcpEntry(
  331.     IN PMIB_TCPROW pTcpRow
  332.     );
  333.  
  334.  
  335. DWORD
  336. WINAPI
  337. GetInterfaceInfo(
  338.     IN PIP_INTERFACE_INFO pIfTable,
  339.     OUT PULONG            dwOutBufLen
  340.     );
  341.  
  342. DWORD
  343. WINAPI
  344. GetUniDirectionalAdapterInfo(OUT PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS pIPIfInfo,
  345.                  OUT PULONG dwOutBufLen
  346.                  );
  347.  
  348. //////////////////////////////////////////////////////////////////////////////
  349. //                                                                          //
  350. // Gets the "best" outgoing interface for the specified destination address //
  351. //                                                                          //
  352. //////////////////////////////////////////////////////////////////////////////
  353.  
  354. DWORD
  355. WINAPI
  356. GetBestInterface(
  357.     IN  IPAddr  dwDestAddr,
  358.     OUT PDWORD  pdwBestIfIndex
  359.     );
  360.  
  361. //////////////////////////////////////////////////////////////////////////////
  362. //                                                                          //
  363. // Gets the best (longest matching prefix) route for the given destination  //
  364. // If the source address is also specified (i.e. is not 0x00000000), and    //
  365. // there are multiple "best" routes to the given destination, the returned  //
  366. // route will be one that goes out over the interface which has an address  //
  367. // that matches the source address                                          //
  368. //                                                                          //
  369. //////////////////////////////////////////////////////////////////////////////
  370.  
  371. DWORD
  372. WINAPI
  373. GetBestRoute(
  374.     IN  DWORD               dwDestAddr,
  375.     IN  DWORD               dwSourceAddr, OPTIONAL
  376.     OUT PMIB_IPFORWARDROW   pBestRoute
  377.     );
  378.  
  379. DWORD
  380. WINAPI
  381. NotifyAddrChange(
  382.     OUT PHANDLE      Handle,
  383.     IN  LPOVERLAPPED overlapped
  384.     );
  385.  
  386.  
  387. DWORD
  388. WINAPI
  389. NotifyRouteChange(
  390.     OUT PHANDLE      Handle,
  391.     IN  LPOVERLAPPED overlapped
  392.     );
  393.  
  394.  
  395. DWORD
  396. WINAPI
  397. GetAdapterIndex(
  398.     IN LPWSTR  AdapterName,
  399.     OUT PULONG IfIndex
  400.     );
  401.  
  402. DWORD
  403. WINAPI
  404. AddIPAddress(
  405.     IPAddr  Address,
  406.     IPMask  IpMask,
  407.     DWORD   IfIndex,
  408.     PULONG  NTEContext,
  409.     PULONG  NTEInstance
  410.     );
  411.  
  412. DWORD
  413. WINAPI
  414. DeleteIPAddress(
  415.     ULONG NTEContext
  416.     );
  417.  
  418. DWORD
  419. WINAPI
  420. GetNetworkParams(
  421.     PFIXED_INFO pFixedInfo, PULONG pOutBufLen
  422.     );
  423.  
  424. DWORD
  425. WINAPI
  426. GetAdaptersInfo(
  427.     PIP_ADAPTER_INFO pAdapterInfo, PULONG pOutBufLen
  428.     );
  429.  
  430. DWORD
  431. WINAPI
  432. GetPerAdapterInfo(
  433.     ULONG IfIndex, PIP_PER_ADAPTER_INFO pPerAdapterInfo, PULONG pOutBufLen
  434.     );
  435.  
  436. DWORD
  437. WINAPI
  438. IpReleaseAddress(
  439.     PIP_ADAPTER_INDEX_MAP  AdapterInfo
  440.     );
  441.  
  442.  
  443. DWORD
  444. WINAPI
  445. IpRenewAddress(
  446.     PIP_ADAPTER_INDEX_MAP  AdapterInfo
  447.     );
  448.  
  449. DWORD
  450. WINAPI
  451. SendARP(
  452.     IPAddr DestIP,
  453.     IPAddr SrcIP,
  454.     PULONG pMacAddr,
  455.     PULONG  PhyAddrLen
  456.     );
  457.  
  458. BOOL
  459. WINAPI
  460. GetRTTAndHopCount(
  461.     IPAddr DestIpAddress,
  462.     PULONG HopCount,
  463.     ULONG  MaxHops,
  464.     PULONG RTT
  465.     );
  466.  
  467. DWORD
  468. WINAPI
  469. GetFriendlyIfIndex(
  470.     DWORD IfIndex
  471.     );
  472.  
  473. DWORD
  474. WINAPI
  475. EnableRouter(
  476.     HANDLE* pHandle,
  477.     OVERLAPPED* pOverlapped
  478.     );
  479.  
  480. DWORD
  481. WINAPI
  482. UnenableRouter(
  483.     OVERLAPPED* pOverlapped,
  484.     LPDWORD lpdwEnableCount OPTIONAL
  485.     );
  486.  
  487. #ifdef __cplusplus
  488. }
  489. #endif
  490.  
  491. #pragma option pop /*P_O_Pop*/
  492. #endif //__IPHLPAPI_H__
  493.  
  494.  
  495.