VirtualBox

Ignore:
Timestamp:
Mar 1, 2011 3:25:18 PM (14 years ago)
Author:
vboxsync
Message:

rework NetFlt/Adp

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/src-server/win/NetIf-win.cpp

    r35785 r36121  
    3333
    3434#ifdef VBOX_WITH_NETFLT
    35 #include "VBox/WinNetConfig.h"
    36 #include "devguid.h"
     35# include "VBox/VBoxNetCfg-win.h"
     36# include "devguid.h"
    3737#endif
    3838
     
    10011001
    10021002    /* we are using the INetCfg API for getting the list of miniports */
    1003     hr = VBoxNetCfgWinQueryINetCfg(FALSE,
     1003    hr = VBoxNetCfgWinQueryINetCfg(&pNc, FALSE,
    10041004                       VBOX_APP_NAME,
    1005                        &pNc,
     1005                       10000,
    10061006                       &lpszApp);
    10071007    Assert(hr == S_OK);
    10081008    if (hr == S_OK)
    10091009    {
    1010         hr = VBoxNetCfgWinGetComponentEnum(pNc, &GUID_DEVCLASS_NET, &pEnumComponent);
     1010        hr = pNc->EnumComponents(&GUID_DEVCLASS_NET, &pEnumComponent);
    10111011        if (hr == S_OK)
    10121012        {
    1013             while ((hr = VBoxNetCfgWinGetNextComponent(pEnumComponent, &pMpNcc)) == S_OK)
     1013            while ((hr = pEnumComponent->Next(1, &pMpNcc, NULL)) == S_OK)
    10141014            {
    10151015                ULONG uComponentStatus;
     
    10321032                    }
    10331033                }
    1034                 VBoxNetCfgWinReleaseRef(pMpNcc);
     1034                pMpNcc->Release();
    10351035            }
    10361036            Assert(hr == S_OK || hr == S_FALSE);
    10371037
    1038             VBoxNetCfgWinReleaseRef(pEnumComponent);
     1038            pEnumComponent->Release();
    10391039        }
    10401040        else
    10411041        {
    1042             LogRel(("failed to get the sun_VBoxNetFlt component, error (0x%x)", hr));
     1042            LogRel((__FUNCTION__": EnumComponents error (0x%x)", hr));
    10431043        }
    10441044
     
    14421442
    14431443    /* we are using the INetCfg API for getting the list of miniports */
    1444     hr = VBoxNetCfgWinQueryINetCfg(FALSE,
     1444    hr = VBoxNetCfgWinQueryINetCfg(&pNc, FALSE,
    14451445                       VBOX_APP_NAME,
    1446                        &pNc,
     1446                       10000,
    14471447                       &lpszApp);
    14481448    Assert(hr == S_OK);
     
    14661466        if (hr == S_OK)
    14671467        {
    1468             hr = VBoxNetCfgWinGetBindingPathEnum(pTcpIpNcc, EBP_BELOW, &pEnumBp);
     1468            INetCfgComponentBindings *pBindings;
     1469            hr = pTcpIpNcc->QueryInterface(IID_INetCfgComponentBindings, (PVOID*)&pBindings);
    14691470            Assert(hr == S_OK);
    14701471            if (hr == S_OK)
    14711472            {
    1472                 hr = VBoxNetCfgWinGetFirstBindingPath(pEnumBp, &pBp);
    1473                 Assert(hr == S_OK || hr == S_FALSE);
    1474                 while (hr == S_OK)
     1473                hr = pBindings->EnumBindingPaths(EBP_BELOW, &pEnumBp);
     1474                Assert(hr == S_OK);
     1475                if (hr == S_OK)
    14751476                {
    1476                     /* S_OK == enabled, S_FALSE == disabled */
    1477                     if (pBp->IsEnabled() == S_OK)
    1478                     {
    1479                         hr = VBoxNetCfgWinGetBindingInterfaceEnum(pBp, &pEnumBi);
    1480                         Assert(hr == S_OK);
    1481                         if ( hr == S_OK )
     1477                    hr = pEnumBp->Reset();
     1478                    Assert(hr == S_OK);
     1479                    if (hr == S_OK)
     1480                    {
     1481                        while ((hr = pEnumBp->Next(1, &pBp, NULL)) == S_OK)
    14821482                        {
    1483                             hr = VBoxNetCfgWinGetFirstBindingInterface(pEnumBi, &pBi);
    1484                             Assert(hr == S_OK);
    1485                             while (hr == S_OK)
     1483                            /* S_OK == enabled, S_FALSE == disabled */
     1484                            if (pBp->IsEnabled() == S_OK)
    14861485                            {
    1487                                 hr = pBi->GetLowerComponent( &pMpNcc );
     1486                                hr = pBp->EnumBindingInterfaces(&pEnumBi);
    14881487                                Assert(hr == S_OK);
    1489                                 if (hr == S_OK)
     1488                                if ( hr == S_OK )
    14901489                                {
    1491                                     ULONG uComponentStatus;
    1492                                     hr = pMpNcc->GetDeviceStatus(&uComponentStatus);
     1490                                    hr = pEnumBi->Reset();
     1491                                    Assert(hr == S_OK);
    14931492                                    if (hr == S_OK)
    14941493                                    {
    1495                                         if (uComponentStatus == 0)
     1494                                        while ((hr = pEnumBi->Next(1, &pBi, NULL)) == S_OK)
    14961495                                        {
    1497                                             vboxNetWinAddComponent(&list, pMpNcc, HostNetworkInterfaceType_Bridged, iDefault);
     1496                                            hr = pBi->GetLowerComponent( &pMpNcc );
     1497                                            Assert(hr == S_OK);
     1498                                            if (hr == S_OK)
     1499                                            {
     1500                                                ULONG uComponentStatus;
     1501                                                hr = pMpNcc->GetDeviceStatus(&uComponentStatus);
     1502                                                if (hr == S_OK)
     1503                                                {
     1504                                                    if (uComponentStatus == 0)
     1505                                                    {
     1506                                                        vboxNetWinAddComponent(&list, pMpNcc, HostNetworkInterfaceType_Bridged, iDefault);
     1507                                                    }
     1508                                                }
     1509                                                pMpNcc->Release();
     1510                                            }
     1511                                            pBi->Release();
    14981512                                        }
     1513                                        Assert(hr == S_OK || hr == S_FALSE);
    14991514                                    }
    1500                                     VBoxNetCfgWinReleaseRef( pMpNcc );
     1515                                    pEnumBi->Release();
    15011516                                }
    1502                                 VBoxNetCfgWinReleaseRef(pBi);
    1503 
    1504                                 hr = VBoxNetCfgWinGetNextBindingInterface(pEnumBi, &pBi);
    15051517                            }
    1506                             VBoxNetCfgWinReleaseRef(pEnumBi);
     1518                            pBp->Release();
    15071519                        }
    1508                     }
    1509                     VBoxNetCfgWinReleaseRef(pBp);
    1510 
    1511                     hr = VBoxNetCfgWinGetNextBindingPath(pEnumBp, &pBp);
     1520                        Assert(hr == S_OK || hr == S_FALSE);
     1521                    }
     1522                    pEnumBp->Release();
    15121523                }
    1513                 VBoxNetCfgWinReleaseRef(pEnumBp);
    1514             }
    1515             VBoxNetCfgWinReleaseRef(pTcpIpNcc);
     1524                pBindings->Release();
     1525            }
     1526            pTcpIpNcc->Release();
    15161527        }
    15171528        else
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette