ioctlsocket()win7下 出现10045异常 XP下正常

ioctlsocket()win7下 出现10045错误 XP下正常 ?
C/C++ code

r = bind(skRawListen, (PSOCKADDR) & stListen, sizeof(SOCKADDR));
    if (r)
    {
        printf("Call \"bind( )\" error !\n");
        closesocket(skRawListen);
        closesocket(skRawSend);
        getch();
        exit(0);
    }

    //    设置接收所有数据包
    DWORD    dwOn = 1;
    r = ioctlsocket(    skRawListen,
                        SIO_RCVALL,
                        & dwOn    );
    if (r==SOCKET_ERROR)
    {
        printf("Call \"ioctlsocket( )\" error !\n");
        printf("%d\n",WSAGetLastError());
        closesocket(skRawListen);
        closesocket(skRawSend);
        getch();
        exit(0);
    }



------解决方案--------------------
http://stackoverflow.com/questions/6108715/capturing-packets-on-windows-7
参考下这里,有的人能在win7下运行,但好像的又不行