CreateIpForwardEntry函数在WinXp及Win7下运行的有关问题
CreateIpForwardEntry函数在WinXp及Win7上运行的问题?
以下是我的代码,用于添加路由表
在Win7上CreateIpForwardEntry函数正常执行。
但是,在WinXp上,CreateIpForwardEntry返回87(参数有误),将IpForwardTable.dwForwardType改成3后,CreateIpForwardEntry函数才可以正常。
不知道是什么原因?请高手们给点意见。
------解决方案--------------------
呵呵,这个我遇到过,你可以在XP上先获取路由表某一个IpForwardTable,然后仅把用到的参数改成自己的,其他的直接复制,你现在对IpForwardTable每一个变量赋值,有些值不能随便写的!
以下是我的代码,用于添加路由表
- C/C++ code
DWORD CIpForwardTable::AddRouteTable(const char* pIP, const char* pMask, const char* pGateway, DWORD dwForwardType, DWORD dwForwardProto) { MIB_IPFORWARDROW IpForwardTable; ZeroMemory(&IpForwardTable,sizeof(MIB_IPFORWARDROW)); IpForwardTable.dwForwardDest = inet_addr(pIP); IpForwardTable.dwForwardMask = inet_addr(pMask); IpForwardTable.dwForwardNextHop = inet_addr(pGateway); IpForwardTable.dwForwardIfIndex = m_dwAdapterIndex; IpForwardTable.dwForwardType = 4; IpForwardTable.dwForwardProto = 3; IpForwardTable.dwForwardPolicy = 0; IpForwardTable.dwForwardAge = 0; IpForwardTable.dwForwardNextHopAS = 0; IpForwardTable.dwForwardMetric1 = m_ulMetric; IpForwardTable.dwForwardMetric2 = 0xFFFFFFFF; IpForwardTable.dwForwardMetric3 = 0xFFFFFFFF; IpForwardTable.dwForwardMetric4 = 0xFFFFFFFF; IpForwardTable.dwForwardMetric5 = 0xFFFFFFFF; DWORD dwRetVal = CreateIpForwardEntry(&IpForwardTable); return dwRetVal; }
在Win7上CreateIpForwardEntry函数正常执行。
但是,在WinXp上,CreateIpForwardEntry返回87(参数有误),将IpForwardTable.dwForwardType改成3后,CreateIpForwardEntry函数才可以正常。
不知道是什么原因?请高手们给点意见。
------解决方案--------------------
呵呵,这个我遇到过,你可以在XP上先获取路由表某一个IpForwardTable,然后仅把用到的参数改成自己的,其他的直接复制,你现在对IpForwardTable每一个变量赋值,有些值不能随便写的!