Hex Artifact Content

Not logged in

Artifact 11828d4561dc6f687d7ff769b1b5a16f15bd1880:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0040: 2a 2a 2a 2a 2a 2a 2a 2a 5c 0a 2a 20 20 20 20 20  ********\.*     
0050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0060: 20 20 20 20 20 20 20 20 20 20 69 70 68 6c 70 61            iphlpa
0070: 70 69 2e 64 20 20 20 20 20 20 20 20 20 20 20 20  pi.d            
0080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0090: 20 20 2a 0a 2a 20 20 20 20 20 20 20 20 20 20 20    *.*           
00a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00d0: 20 20 20 20 20 20 20 20 20 20 20 20 2a 0a 2a 20              *.* 
00e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00f0: 20 20 20 20 20 20 57 69 6e 64 6f 77 73 20 41 50        Windows AP
0100: 49 20 68 65 61 64 65 72 20 6d 6f 64 75 6c 65 20  I header module 
0110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0120: 20 20 20 20 20 20 2a 0a 2a 20 20 20 20 20 20 20        *.*       
0130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0170: 2a 0a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20  *.*             
0180: 20 20 20 20 54 72 61 6e 73 6c 61 74 65 64 20 66      Translated f
0190: 72 6f 6d 20 4d 69 6e 47 57 20 57 69 6e 64 6f 77  rom MinGW Window
01a0: 73 20 68 65 61 64 65 72 73 20 20 20 20 20 20 20  s headers       
01b0: 20 20 20 20 20 20 20 20 20 20 2a 0a 2a 20 20 20            *.*   
01c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
01d0: 20 20 20 20 20 20 20 20 62 79 20 53 74 65 77 61          by Stewa
01e0: 72 74 20 47 6f 72 64 6f 6e 20 20 20 20 20 20 20  rt Gordon       
01f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0200: 20 20 20 20 2a 0a 2a 20 20 20 20 20 20 20 20 20      *.*         
0210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 0a                *.
0250: 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  *               
0260: 20 20 20 20 20 20 20 20 50 6c 61 63 65 64 20 69          Placed i
0270: 6e 74 6f 20 70 75 62 6c 69 63 20 64 6f 6d 61 69  nto public domai
0280: 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  n               
0290: 20 20 20 20 20 20 20 20 2a 0a 5c 2a 2a 2a 2a 2a          *.\*****
02a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
02b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
02c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
02d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
02e0: 2a 2a 2f 0a 6d 6f 64 75 6c 65 20 77 69 6e 33 32  **/.module win32
02f0: 2e 69 70 68 6c 70 61 70 69 3b 0a 0a 69 6d 70 6f  .iphlpapi;..impo
0300: 72 74 20 77 69 6e 33 32 2e 69 70 65 78 70 6f 72  rt win32.ipexpor
0310: 74 2c 20 77 69 6e 33 32 2e 69 70 72 74 72 6d 69  t, win32.iprtrmi
0320: 62 2c 20 77 69 6e 33 32 2e 69 70 74 79 70 65 73  b, win32.iptypes
0330: 3b 0a 70 72 69 76 61 74 65 20 69 6d 70 6f 72 74  ;.private import
0340: 20 77 69 6e 33 32 2e 77 69 6e 62 61 73 65 2c 20   win32.winbase, 
0350: 77 69 6e 33 32 2e 77 69 6e 64 65 66 3b 0a 0a 65  win32.windef;..e
0360: 78 74 65 72 6e 20 28 57 69 6e 64 6f 77 73 29 20  xtern (Windows) 
0370: 7b 0a 09 44 57 4f 52 44 20 41 64 64 49 50 41 64  {..DWORD AddIPAd
0380: 64 72 65 73 73 28 49 50 41 64 64 72 2c 20 49 50  dress(IPAddr, IP
0390: 4d 61 73 6b 2c 20 44 57 4f 52 44 2c 20 50 55 4c  Mask, DWORD, PUL
03a0: 4f 4e 47 2c 20 50 55 4c 4f 4e 47 29 3b 0a 09 44  ONG, PULONG);..D
03b0: 57 4f 52 44 20 43 72 65 61 74 65 49 70 46 6f 72  WORD CreateIpFor
03c0: 77 61 72 64 45 6e 74 72 79 28 50 4d 49 42 5f 49  wardEntry(PMIB_I
03d0: 50 46 4f 52 57 41 52 44 52 4f 57 29 3b 0a 09 44  PFORWARDROW);..D
03e0: 57 4f 52 44 20 43 72 65 61 74 65 49 70 4e 65 74  WORD CreateIpNet
03f0: 45 6e 74 72 79 28 50 4d 49 42 5f 49 50 4e 45 54  Entry(PMIB_IPNET
0400: 52 4f 57 29 3b 0a 09 44 57 4f 52 44 20 43 72 65  ROW);..DWORD Cre
0410: 61 74 65 50 72 6f 78 79 41 72 70 45 6e 74 72 79  ateProxyArpEntry
0420: 28 44 57 4f 52 44 2c 20 44 57 4f 52 44 2c 20 44  (DWORD, DWORD, D
0430: 57 4f 52 44 29 3b 0a 09 44 57 4f 52 44 20 44 65  WORD);..DWORD De
0440: 6c 65 74 65 49 50 41 64 64 72 65 73 73 28 55 4c  leteIPAddress(UL
0450: 4f 4e 47 29 3b 0a 09 44 57 4f 52 44 20 44 65 6c  ONG);..DWORD Del
0460: 65 74 65 49 70 46 6f 72 77 61 72 64 45 6e 74 72  eteIpForwardEntr
0470: 79 28 50 4d 49 42 5f 49 50 46 4f 52 57 41 52 44  y(PMIB_IPFORWARD
0480: 52 4f 57 29 3b 0a 09 44 57 4f 52 44 20 44 65 6c  ROW);..DWORD Del
0490: 65 74 65 49 70 4e 65 74 45 6e 74 72 79 28 50 4d  eteIpNetEntry(PM
04a0: 49 42 5f 49 50 4e 45 54 52 4f 57 29 3b 0a 09 44  IB_IPNETROW);..D
04b0: 57 4f 52 44 20 44 65 6c 65 74 65 50 72 6f 78 79  WORD DeleteProxy
04c0: 41 72 70 45 6e 74 72 79 28 44 57 4f 52 44 2c 20  ArpEntry(DWORD, 
04d0: 44 57 4f 52 44 2c 20 44 57 4f 52 44 29 3b 0a 09  DWORD, DWORD);..
04e0: 44 57 4f 52 44 20 45 6e 61 62 6c 65 52 6f 75 74  DWORD EnableRout
04f0: 65 72 28 48 41 4e 44 4c 45 2a 2c 20 4f 56 45 52  er(HANDLE*, OVER
0500: 4c 41 50 50 45 44 2a 29 3b 0a 09 44 57 4f 52 44  LAPPED*);..DWORD
0510: 20 46 6c 75 73 68 49 70 4e 65 74 54 61 62 6c 65   FlushIpNetTable
0520: 28 44 57 4f 52 44 29 3b 0a 09 44 57 4f 52 44 20  (DWORD);..DWORD 
0530: 47 65 74 41 64 61 70 74 65 72 49 6e 64 65 78 28  GetAdapterIndex(
0540: 4c 50 57 53 54 52 2c 20 50 55 4c 4f 4e 47 29 3b  LPWSTR, PULONG);
0550: 0a 09 44 57 4f 52 44 20 47 65 74 41 64 61 70 74  ..DWORD GetAdapt
0560: 65 72 73 49 6e 66 6f 28 50 49 50 5f 41 44 41 50  ersInfo(PIP_ADAP
0570: 54 45 52 5f 49 4e 46 4f 2c 20 50 55 4c 4f 4e 47  TER_INFO, PULONG
0580: 29 3b 0a 09 44 57 4f 52 44 20 47 65 74 42 65 73  );..DWORD GetBes
0590: 74 49 6e 74 65 72 66 61 63 65 28 49 50 41 64 64  tInterface(IPAdd
05a0: 72 2c 20 50 44 57 4f 52 44 29 3b 0a 09 44 57 4f  r, PDWORD);..DWO
05b0: 52 44 20 47 65 74 42 65 73 74 52 6f 75 74 65 28  RD GetBestRoute(
05c0: 44 57 4f 52 44 2c 20 44 57 4f 52 44 2c 20 50 4d  DWORD, DWORD, PM
05d0: 49 42 5f 49 50 46 4f 52 57 41 52 44 52 4f 57 29  IB_IPFORWARDROW)
05e0: 3b 0a 09 44 57 4f 52 44 20 47 65 74 46 72 69 65  ;..DWORD GetFrie
05f0: 6e 64 6c 79 49 66 49 6e 64 65 78 28 44 57 4f 52  ndlyIfIndex(DWOR
0600: 44 29 3b 0a 09 44 57 4f 52 44 20 47 65 74 49 63  D);..DWORD GetIc
0610: 6d 70 53 74 61 74 69 73 74 69 63 73 28 50 4d 49  mpStatistics(PMI
0620: 42 5f 49 43 4d 50 29 3b 0a 09 44 57 4f 52 44 20  B_ICMP);..DWORD 
0630: 47 65 74 49 66 45 6e 74 72 79 28 50 4d 49 42 5f  GetIfEntry(PMIB_
0640: 49 46 52 4f 57 29 3b 0a 09 44 57 4f 52 44 20 47  IFROW);..DWORD G
0650: 65 74 49 66 54 61 62 6c 65 28 50 4d 49 42 5f 49  etIfTable(PMIB_I
0660: 46 54 41 42 4c 45 2c 20 50 55 4c 4f 4e 47 2c 20  FTABLE, PULONG, 
0670: 42 4f 4f 4c 29 3b 0a 09 44 57 4f 52 44 20 47 65  BOOL);..DWORD Ge
0680: 74 49 6e 74 65 72 66 61 63 65 49 6e 66 6f 28 50  tInterfaceInfo(P
0690: 49 50 5f 49 4e 54 45 52 46 41 43 45 5f 49 4e 46  IP_INTERFACE_INF
06a0: 4f 2c 20 50 55 4c 4f 4e 47 29 3b 0a 09 44 57 4f  O, PULONG);..DWO
06b0: 52 44 20 47 65 74 49 70 41 64 64 72 54 61 62 6c  RD GetIpAddrTabl
06c0: 65 28 50 4d 49 42 5f 49 50 41 44 44 52 54 41 42  e(PMIB_IPADDRTAB
06d0: 4c 45 2c 20 50 55 4c 4f 4e 47 2c 20 42 4f 4f 4c  LE, PULONG, BOOL
06e0: 29 3b 0a 09 44 57 4f 52 44 20 47 65 74 49 70 46  );..DWORD GetIpF
06f0: 6f 72 77 61 72 64 54 61 62 6c 65 28 50 4d 49 42  orwardTable(PMIB
0700: 5f 49 50 46 4f 52 57 41 52 44 54 41 42 4c 45 2c  _IPFORWARDTABLE,
0710: 20 50 55 4c 4f 4e 47 2c 20 42 4f 4f 4c 29 3b 0a   PULONG, BOOL);.
0720: 09 44 57 4f 52 44 20 47 65 74 49 70 4e 65 74 54  .DWORD GetIpNetT
0730: 61 62 6c 65 28 50 4d 49 42 5f 49 50 4e 45 54 54  able(PMIB_IPNETT
0740: 41 42 4c 45 2c 20 50 55 4c 4f 4e 47 2c 20 42 4f  ABLE, PULONG, BO
0750: 4f 4c 29 3b 0a 09 44 57 4f 52 44 20 47 65 74 49  OL);..DWORD GetI
0760: 70 53 74 61 74 69 73 74 69 63 73 28 50 4d 49 42  pStatistics(PMIB
0770: 5f 49 50 53 54 41 54 53 29 3b 0a 09 44 57 4f 52  _IPSTATS);..DWOR
0780: 44 20 47 65 74 4e 65 74 77 6f 72 6b 50 61 72 61  D GetNetworkPara
0790: 6d 73 28 50 46 49 58 45 44 5f 49 4e 46 4f 2c 20  ms(PFIXED_INFO, 
07a0: 50 55 4c 4f 4e 47 29 3b 0a 09 44 57 4f 52 44 20  PULONG);..DWORD 
07b0: 47 65 74 4e 75 6d 62 65 72 4f 66 49 6e 74 65 72  GetNumberOfInter
07c0: 66 61 63 65 73 28 50 44 57 4f 52 44 29 3b 0a 09  faces(PDWORD);..
07d0: 44 57 4f 52 44 20 47 65 74 50 65 72 41 64 61 70  DWORD GetPerAdap
07e0: 74 65 72 49 6e 66 6f 28 55 4c 4f 4e 47 2c 20 50  terInfo(ULONG, P
07f0: 49 50 5f 50 45 52 5f 41 44 41 50 54 45 52 5f 49  IP_PER_ADAPTER_I
0800: 4e 46 4f 2c 20 50 55 4c 4f 4e 47 29 3b 0a 09 42  NFO, PULONG);..B
0810: 4f 4f 4c 20 47 65 74 52 54 54 41 6e 64 48 6f 70  OOL GetRTTAndHop
0820: 43 6f 75 6e 74 28 49 50 41 64 64 72 2c 20 50 55  Count(IPAddr, PU
0830: 4c 4f 4e 47 2c 20 55 4c 4f 4e 47 2c 20 50 55 4c  LONG, ULONG, PUL
0840: 4f 4e 47 29 3b 0a 09 44 57 4f 52 44 20 47 65 74  ONG);..DWORD Get
0850: 54 63 70 53 74 61 74 69 73 74 69 63 73 28 50 4d  TcpStatistics(PM
0860: 49 42 5f 54 43 50 53 54 41 54 53 29 3b 0a 09 44  IB_TCPSTATS);..D
0870: 57 4f 52 44 20 47 65 74 54 63 70 54 61 62 6c 65  WORD GetTcpTable
0880: 28 50 4d 49 42 5f 54 43 50 54 41 42 4c 45 2c 20  (PMIB_TCPTABLE, 
0890: 50 44 57 4f 52 44 2c 20 42 4f 4f 4c 29 3b 0a 09  PDWORD, BOOL);..
08a0: 44 57 4f 52 44 20 47 65 74 55 6e 69 44 69 72 65  DWORD GetUniDire
08b0: 63 74 69 6f 6e 61 6c 41 64 61 70 74 65 72 49 6e  ctionalAdapterIn
08c0: 66 6f 28 50 49 50 5f 55 4e 49 44 49 52 45 43 54  fo(PIP_UNIDIRECT
08d0: 49 4f 4e 41 4c 5f 41 44 41 50 54 45 52 5f 41 44  IONAL_ADAPTER_AD
08e0: 44 52 45 53 53 2c 0a 09 20 20 50 55 4c 4f 4e 47  DRESS,..  PULONG
08f0: 29 3b 0a 09 44 57 4f 52 44 20 47 65 74 55 64 70  );..DWORD GetUdp
0900: 53 74 61 74 69 73 74 69 63 73 28 50 4d 49 42 5f  Statistics(PMIB_
0910: 55 44 50 53 54 41 54 53 29 3b 0a 09 44 57 4f 52  UDPSTATS);..DWOR
0920: 44 20 47 65 74 55 64 70 54 61 62 6c 65 28 50 4d  D GetUdpTable(PM
0930: 49 42 5f 55 44 50 54 41 42 4c 45 2c 20 50 44 57  IB_UDPTABLE, PDW
0940: 4f 52 44 2c 20 42 4f 4f 4c 29 3b 0a 09 44 57 4f  ORD, BOOL);..DWO
0950: 52 44 20 49 70 52 65 6c 65 61 73 65 41 64 64 72  RD IpReleaseAddr
0960: 65 73 73 28 50 49 50 5f 41 44 41 50 54 45 52 5f  ess(PIP_ADAPTER_
0970: 49 4e 44 45 58 5f 4d 41 50 29 3b 0a 09 44 57 4f  INDEX_MAP);..DWO
0980: 52 44 20 49 70 52 65 6e 65 77 41 64 64 72 65 73  RD IpRenewAddres
0990: 73 28 50 49 50 5f 41 44 41 50 54 45 52 5f 49 4e  s(PIP_ADAPTER_IN
09a0: 44 45 58 5f 4d 41 50 29 3b 0a 09 44 57 4f 52 44  DEX_MAP);..DWORD
09b0: 20 4e 6f 74 69 66 79 41 64 64 72 43 68 61 6e 67   NotifyAddrChang
09c0: 65 28 50 48 41 4e 44 4c 45 2c 20 4c 50 4f 56 45  e(PHANDLE, LPOVE
09d0: 52 4c 41 50 50 45 44 29 3b 0a 09 44 57 4f 52 44  RLAPPED);..DWORD
09e0: 20 4e 6f 74 69 66 79 52 6f 75 74 65 43 68 61 6e   NotifyRouteChan
09f0: 67 65 28 50 48 41 4e 44 4c 45 2c 20 4c 50 4f 56  ge(PHANDLE, LPOV
0a00: 45 52 4c 41 50 50 45 44 29 3b 0a 09 44 57 4f 52  ERLAPPED);..DWOR
0a10: 44 20 53 65 6e 64 41 52 50 28 49 50 41 64 64 72  D SendARP(IPAddr
0a20: 2c 20 49 50 41 64 64 72 2c 20 50 55 4c 4f 4e 47  , IPAddr, PULONG
0a30: 2c 20 50 55 4c 4f 4e 47 29 3b 0a 09 44 57 4f 52  , PULONG);..DWOR
0a40: 44 20 53 65 74 49 66 45 6e 74 72 79 28 50 4d 49  D SetIfEntry(PMI
0a50: 42 5f 49 46 52 4f 57 29 3b 0a 09 44 57 4f 52 44  B_IFROW);..DWORD
0a60: 20 53 65 74 49 70 46 6f 72 77 61 72 64 45 6e 74   SetIpForwardEnt
0a70: 72 79 28 50 4d 49 42 5f 49 50 46 4f 52 57 41 52  ry(PMIB_IPFORWAR
0a80: 44 52 4f 57 29 3b 0a 09 44 57 4f 52 44 20 53 65  DROW);..DWORD Se
0a90: 74 49 70 4e 65 74 45 6e 74 72 79 28 50 4d 49 42  tIpNetEntry(PMIB
0aa0: 5f 49 50 4e 45 54 52 4f 57 29 3b 0a 09 44 57 4f  _IPNETROW);..DWO
0ab0: 52 44 20 53 65 74 49 70 53 74 61 74 69 73 74 69  RD SetIpStatisti
0ac0: 63 73 28 50 4d 49 42 5f 49 50 53 54 41 54 53 29  cs(PMIB_IPSTATS)
0ad0: 3b 0a 09 44 57 4f 52 44 20 53 65 74 49 70 54 54  ;..DWORD SetIpTT
0ae0: 4c 28 55 49 4e 54 29 3b 0a 09 44 57 4f 52 44 20  L(UINT);..DWORD 
0af0: 53 65 74 54 63 70 45 6e 74 72 79 28 50 4d 49 42  SetTcpEntry(PMIB
0b00: 5f 54 43 50 52 4f 57 29 3b 0a 09 44 57 4f 52 44  _TCPROW);..DWORD
0b10: 20 55 6e 65 6e 61 62 6c 65 52 6f 75 74 65 72 28   UnenableRouter(
0b20: 4f 56 45 52 4c 41 50 50 45 44 2a 2c 20 4c 50 44  OVERLAPPED*, LPD
0b30: 57 4f 52 44 29 3b 0a 7d 0a                       WORD);.}.