Annotation of sbbs/include/microsoft/psdk/iphlpapi.h, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.