CreateIpForwardEntry函数在WinXp及Win7下运行的有关问题

CreateIpForwardEntry函数在WinXp及Win7上运行的问题?
以下是我的代码,用于添加路由表

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每一个变量赋值,有些值不能随便写的!