VirtualBox

Ignore:
Timestamp:
Jun 1, 2011 11:59:23 AM (14 years ago)
Author:
vboxsync
Message:

Windows host installaer/VBoxNetCfg: Major overhaul for supporting Windows Installer XML 3.5, fixed VBoxInstallHelper logging, coding style, added missing installer icons.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostDrivers/VBoxNetFlt/win/cfg/VBoxNetCfg.cpp

    r36487 r37289  
    5050static VOID DoLogging(LPCSTR szString, ...);
    5151#define Log DoLogging
     52#define LogFlow(x) DoLogging x
    5253
    5354#define DbgLog
     
    5758
    5859static HRESULT vboxNetCfgWinINetCfgLock(IN INetCfg *pNetCfg,
    59                           IN LPCWSTR pszwClientDescription,
    60                           IN DWORD cmsTimeout,
    61                           OUT LPWSTR *ppszwClientDescription)
     60                                        IN LPCWSTR pszwClientDescription,
     61                                        IN DWORD cmsTimeout,
     62                                        OUT LPWSTR *ppszwClientDescription)
    6263{
    6364    INetCfgLock *pLock;
    6465    HRESULT hr = pNetCfg->QueryInterface(IID_INetCfgLock, (PVOID*)&pLock);
    65     Assert(hr == S_OK);
    66     if (hr != S_OK)
    67     {
    68         Log(__FUNCTION__ ": QueryInterface failed, hr (0x%x)\n", hr);
     66    if (FAILED(hr))
     67    {
     68        LogFlow(("QueryInterface failed, hr (0x%x)\n", hr));
    6969        return hr;
    7070    }
    7171
    7272    hr = pLock->AcquireWriteLock(cmsTimeout, pszwClientDescription, ppszwClientDescription);
    73     Assert(hr == S_OK || hr == S_FALSE);
    7473    if (hr == S_FALSE)
    7574    {
    76         Log(__FUNCTION__ ": write lock busy\n");
    77     }
    78     else if (hr != S_OK)
    79     {
    80         Log(__FUNCTION__ ": AcquireWriteLock failed hr (0x%x)\n", hr);
     75        LogFlow(("Write lock busy\n"));
     76    }
     77    else if (FAILED(hr))
     78    {
     79        LogFlow(("AcquireWriteLock failed, hr (0x%x)\n", hr));
    8180    }
    8281
     
    8988    INetCfgLock *pLock;
    9089    HRESULT hr = pNetCfg->QueryInterface(IID_INetCfgLock, (PVOID*)&pLock);
    91     Assert(hr == S_OK);
    92     if (hr != S_OK)
    93     {
    94         Log(__FUNCTION__ ": QueryInterface failed, hr (0x%x)\n", hr);
     90    if (FAILED(hr))
     91    {
     92        LogFlow(("QueryInterface failed, hr (0x%x)\n", hr));
    9593        return hr;
    9694    }
    9795
    9896    hr = pLock->ReleaseWriteLock();
    99     Assert(hr == S_OK);
    100     if (hr != S_OK)
    101     {
    102         Log(__FUNCTION__ ": ReleaseWriteLock failed hr (0x%x)\n", hr);
    103     }
     97    if (FAILED(hr))
     98        LogFlow(("ReleaseWriteLock failed, hr (0x%x)\n", hr));
    10499
    105100    pLock->Release();
     
    108103
    109104VBOXNETCFGWIN_DECL(HRESULT) VBoxNetCfgWinQueryINetCfg(OUT INetCfg **ppNetCfg,
    110                           IN BOOL fGetWriteLock,
    111                           IN LPCWSTR pszwClientDescription,
    112                           IN DWORD cmsTimeout,
    113                           OUT LPWSTR *ppszwClientDescription)
     105                                                      IN BOOL fGetWriteLock,
     106                                                      IN LPCWSTR pszwClientDescription,
     107                                                      IN DWORD cmsTimeout,
     108                                                      OUT LPWSTR *ppszwClientDescription)
    114109{
    115110    INetCfg *pNetCfg;
    116111    HRESULT hr = CoCreateInstance(CLSID_CNetCfg, NULL, CLSCTX_INPROC_SERVER, IID_INetCfg, (PVOID*)&pNetCfg);
    117     Assert(hr == S_OK);
    118     if (hr != S_OK)
    119     {
    120         Log(__FUNCTION__ ": CoCreateInstance failed, hr (0x%x)\n", hr);
     112    if (FAILED(hr))
     113    {
     114        LogFlow(("CoCreateInstance failed, hr (0x%x)\n", hr));
    121115        return hr;
    122116    }
     
    125119    {
    126120        hr = vboxNetCfgWinINetCfgLock(pNetCfg, pszwClientDescription, cmsTimeout, ppszwClientDescription);
    127         Assert(hr == S_OK || hr == S_FALSE);
    128121        if (hr == S_FALSE)
    129122        {
    130             Log(__FUNCTION__ ": write lock is busy\n", hr);
     123            LogFlow(("Write lock is busy\n", hr));
    131124            hr = NETCFG_E_NO_WRITE_LOCK;
    132125        }
    133126    }
    134127
    135     if (hr == S_OK)
     128    if (SUCCEEDED(hr))
    136129    {
    137130        hr = pNetCfg->Initialize(NULL);
    138         Assert(hr == S_OK);
    139         if (hr == S_OK)
     131        if (SUCCEEDED(hr))
    140132        {
    141133            *ppNetCfg = pNetCfg;
     
    143135        }
    144136        else
    145         {
    146             Log(__FUNCTION__ ": Initialize failed, hr (0x%x)\n", hr);
    147         }
     137            LogFlow(("Initialize failed, hr (0x%x)\n", hr));
    148138    }
    149139
     
    155145{
    156146    HRESULT hr = pNetCfg->Uninitialize();
    157     Assert(hr == S_OK);
    158     if (hr != S_OK)
    159     {
    160         Log(__FUNCTION__ ": Uninitialize failed, hr (0x%x)\n", hr);
     147    if (FAILED(hr))
     148    {
     149        LogFlow(("Uninitialize failed, hr (0x%x)\n", hr));
    161150        return hr;
    162151    }
     
    165154    {
    166155        hr = vboxNetCfgWinINetCfgUnlock(pNetCfg);
    167         Assert(hr == S_OK);
    168         if (hr != S_OK)
    169         {
    170             Log(__FUNCTION__ ": vboxNetCfgWinINetCfgUnlock failed, hr (0x%x)\n", hr);
    171         }
     156        if (FAILED(hr))
     157            LogFlow(("vboxNetCfgWinINetCfgUnlock failed, hr (0x%x)\n", hr));
    172158    }
    173159
     
    176162}
    177163
    178 static HRESULT vboxNetCfgWinGetComponentByGuidEnum(IEnumNetCfgComponent *pEnumNcc, IN const GUID * pGuid, OUT INetCfgComponent ** ppNcc)
    179 {
    180     INetCfgComponent * pNcc;
    181     GUID NccGuid;
    182 
     164static HRESULT vboxNetCfgWinGetComponentByGuidEnum(IEnumNetCfgComponent *pEnumNcc,
     165                                                   IN const GUID *pGuid,
     166                                                   OUT INetCfgComponent **ppNcc)
     167{
    183168    HRESULT hr = pEnumNcc->Reset();
    184     Assert(hr == S_OK);
    185     if (hr != S_OK)
    186     {
    187         Log(__FUNCTION__": Reset failed, hr (0x%x)\n", hr);
     169    if (FAILED(hr))
     170    {
     171        LogFlow(("Reset failed, hr (0x%x)\n", hr));
    188172        return hr;
    189173    }
    190174
     175    INetCfgComponent *pNcc;
    191176    while ((hr = pEnumNcc->Next(1, &pNcc, NULL)) == S_OK)
    192177    {
    193178        ULONG uComponentStatus;
    194179        hr = pNcc->GetDeviceStatus(&uComponentStatus);
    195         if (hr == S_OK)
     180        if (SUCCEEDED(hr))
    196181        {
    197182            if (uComponentStatus == 0)
    198183            {
     184                GUID NccGuid;
    199185                hr = pNcc->GetInstanceGuid(&NccGuid);
    200                 Assert(hr == S_OK);
    201                 if (hr == S_OK)
     186
     187                if (SUCCEEDED(hr))
    202188                {
    203189                    if (NccGuid == *pGuid)
     
    209195                }
    210196                else
    211                 {
    212                     Log(__FUNCTION__": GetInstanceGuid failed, hr (0x%x)\n", hr);
    213                 }
     197                    LogFlow(("GetInstanceGuid failed, hr (0x%x)\n", hr));
    214198            }
    215199        }
     
    217201        pNcc->Release();
    218202    }
    219 
    220     Assert(hr == S_OK || hr == S_FALSE);
    221     return hr;
    222 }
    223 
    224 VBOXNETCFGWIN_DECL(HRESULT)
    225 VBoxNetCfgWinGetComponentByGuid(IN INetCfg *pNc,
    226                                 IN const GUID *pguidClass,
    227                                 IN const GUID * pComponentGuid,
    228                                 OUT INetCfgComponent **ppncc)
     203    return hr;
     204}
     205
     206VBOXNETCFGWIN_DECL(HRESULT) VBoxNetCfgWinGetComponentByGuid(IN INetCfg *pNc,
     207                                                            IN const GUID *pguidClass,
     208                                                            IN const GUID * pComponentGuid,
     209                                                            OUT INetCfgComponent **ppncc)
    229210{
    230211    IEnumNetCfgComponent *pEnumNcc;
    231212    HRESULT hr = pNc->EnumComponents(pguidClass, &pEnumNcc);
    232     Assert(hr == S_OK);
    233     if (hr == S_OK)
     213
     214    if (SUCCEEDED(hr))
    234215    {
    235216        hr = vboxNetCfgWinGetComponentByGuidEnum(pEnumNcc, pComponentGuid, ppncc);
    236         Assert(hr == S_OK || hr == S_FALSE);
    237217        if (hr == S_FALSE)
    238218        {
    239             Log(__FUNCTION__": component not found \n");
    240         }
    241         else if (hr != S_OK)
    242         {
    243             Log(__FUNCTION__": vboxNetCfgWinGetComponentByGuidEnum failed, hr (0x%x)\n", hr);
     219            LogFlow(("Component not found\n"));
     220        }
     221        else if (FAILED(hr))
     222        {
     223            LogFlow(("vboxNetCfgWinGetComponentByGuidEnum failed, hr (0x%x)\n", hr));
    244224        }
    245225        pEnumNcc->Release();
    246226    }
    247227    else
    248     {
    249         Log(__FUNCTION__": EnumComponents failed, hr (0x%x)\n", hr);
    250     }
     228        LogFlow(("EnumComponents failed, hr (0x%x)\n", hr));
    251229    return hr;
    252230}
     
    255233{
    256234    HRESULT hr = pNetCfg->QueryNetCfgClass(pguidClass, IID_INetCfgClassSetup, (void**)ppSetup);
    257     Assert(hr == S_OK);
    258     if (hr != S_OK)
    259     {
    260         Log(__FUNCTION__ ": QueryNetCfgClass failed hr (0x%x)\n", hr);
    261     }
     235    if (FAILED(hr))
     236        LogFlow(("QueryNetCfgClass failed, hr (0x%x)\n", hr));
    262237    return hr;
    263238}
    264239
    265240VBOXNETCFGWIN_DECL(HRESULT) VBoxNetCfgWinInstallComponent(IN INetCfg *pNetCfg, IN LPCWSTR pszwComponentId, IN const GUID *pguidClass,
    266         OUT INetCfgComponent **ppComponent)
     241                                                          OUT INetCfgComponent **ppComponent)
    267242{
    268243    INetCfgClassSetup *pSetup;
    269244    HRESULT hr = vboxNetCfgWinQueryInstaller(pNetCfg, pguidClass, &pSetup);
    270     Assert(hr == S_OK);
    271     if (hr != S_OK)
    272     {
    273         Log(__FUNCTION__ ": vboxNetCfgWinQueryInstaller failed hr (0x%x)\n", hr);
     245    if (FAILED(hr))
     246    {
     247        LogFlow(("vboxNetCfgWinQueryInstaller failed, hr (0x%x)\n", hr));
    274248        return hr;
    275249    }
    276250
    277251    OBO_TOKEN Token;
    278     memset(&Token, 0, sizeof (Token));
     252    ZeroMemory(&Token, sizeof (Token));
    279253    Token.Type = OBO_USER;
    280254
    281255    hr = pSetup->Install(pszwComponentId, &Token,
    282             0,    /* IN DWORD dwSetupFlags */
    283             0,    /* IN DWORD dwUpgradeFromBuildNo */
    284             NULL, /* IN LPCWSTR pszwAnswerFile */
    285             NULL, /* IN LPCWSTR pszwAnswerSections */
    286             ppComponent);
    287     Assert(hr == S_OK);
    288     if (hr == S_OK)
     256                         0,    /* IN DWORD dwSetupFlags */
     257                         0,    /* IN DWORD dwUpgradeFromBuildNo */
     258                         NULL, /* IN LPCWSTR pszwAnswerFile */
     259                         NULL, /* IN LPCWSTR pszwAnswerSections */
     260                         ppComponent);
     261    if (SUCCEEDED(hr))
    289262    {
    290263        /* ignore the apply failure */
     
    292265        Assert(tmpHr == S_OK);
    293266        if (tmpHr != S_OK)
    294         {
    295             Log(__FUNCTION__ ": Apply failed, hr (0x%x)\n", tmpHr);
    296         }
     267            LogFlow(("Apply failed, hr (0x%x)\n", tmpHr));
    297268    }
    298269    else
    299     {
    300         Log(__FUNCTION__ ": Install failed hr (0x%x)\n", hr);
    301     }
     270        LogFlow(("Install failed, hr (0x%x)\n", hr));
     271
    302272    pSetup->Release();
    303273    return hr;
     
    305275
    306276VBOXNETCFGWIN_DECL(HRESULT) VBoxNetCfgWinInstallInfAndComponent(IN INetCfg *pNetCfg, IN LPCWSTR pszwComponentId, IN const GUID *pguidClass,
    307         IN LPCWSTR * apInfPaths, IN UINT cInfPaths,
    308         OUT INetCfgComponent **ppComponent)
     277                                                                IN LPCWSTR * apInfPaths, IN UINT cInfPaths,
     278                                                                OUT INetCfgComponent **ppComponent)
    309279{
    310280    HRESULT hr = S_OK;
    311281    UINT i = 0;
    312282
     283    LogFlow(("Installing %u INF files ...\n", cInfPaths));
     284
    313285    for (; i < cInfPaths; i++)
    314286    {
     287        LogFlow(("Installing INF file \"%ws\" ...\n", apInfPaths[i]));
    315288        hr = VBoxDrvCfgInfInstall(apInfPaths[i]);
    316         Assert(hr == S_OK);
    317         if (hr != S_OK)
    318         {
    319             Log(__FUNCTION__ ": VBoxNetCfgWinInfInstall failed hr (0x%x)\n", hr);
     289        if (FAILED(hr))
     290        {
     291            LogFlow(("VBoxNetCfgWinInfInstall failed, hr (0x%x)\n", hr));
    320292            break;
    321293        }
    322294    }
    323295
    324     if (hr == S_OK)
     296    if (SUCCEEDED(hr))
    325297    {
    326298        hr = VBoxNetCfgWinInstallComponent(pNetCfg, pszwComponentId, pguidClass, ppComponent);
    327         Assert(hr == S_OK);
    328         if (hr != S_OK)
    329         {
    330             Log(__FUNCTION__ ": VBoxNetCfgWinInstallComponent failed hr (0x%x)\n", hr);
    331         }
    332     }
    333 
    334     if (hr != S_OK)
    335     {
    336         for (UINT j = i-1; j != 0; j--)
    337         {
     299        if (FAILED(hr))
     300            LogFlow(("VBoxNetCfgWinInstallComponent failed, hr (0x%x)\n", hr));
     301    }
     302
     303    if (FAILED(hr))
     304    {
     305        for (UINT j = i - 1; j != 0; j--)
    338306            VBoxDrvCfgInfUninstall(apInfPaths[j], 0);
    339         }
    340307    }
    341308
     
    347314    GUID GuidClass;
    348315    HRESULT hr = pComponent->GetClassGuid(&GuidClass);
    349     Assert(hr == S_OK);
    350     if (hr != S_OK)
    351     {
    352         Log(__FUNCTION__ ": GetClassGuid failed hr (0x%x)\n", hr);
     316    if (FAILED(hr))
     317    {
     318        LogFlow(("GetClassGuid failed, hr (0x%x)\n", hr));
    353319        return hr;
    354320    }
    355321
    356     INetCfgClassSetup *pSetup;
     322    INetCfgClassSetup *pSetup = NULL;
    357323    hr = vboxNetCfgWinQueryInstaller(pNetCfg, &GuidClass, &pSetup);
    358     Assert(hr == S_OK);
    359     if (hr != S_OK)
    360     {
    361         Log(__FUNCTION__ ": vboxNetCfgWinQueryInstaller failed hr (0x%x)\n", hr);
     324    if (FAILED(hr))
     325    {
     326        LogFlow(("vboxNetCfgWinQueryInstaller failed, hr (0x%x)\n", hr));
    362327        return hr;
    363328    }
    364329
    365330    OBO_TOKEN Token;
    366     memset(&Token, 0, sizeof (Token));
     331    ZeroMemory(&Token, sizeof(Token));
    367332    Token.Type = OBO_USER;
    368333
    369334    hr = pSetup->DeInstall(pComponent, &Token, NULL /* OUT LPWSTR *pmszwRefs */);
    370     Assert(hr == S_OK);
    371     if (hr == S_OK)
    372     {
    373         HRESULT tmpHr = pNetCfg->Apply();
    374         Assert(tmpHr == S_OK);
    375         if (tmpHr != S_OK)
    376         {
    377             Log(__FUNCTION__ ": Apply failed, hr (0x%x)\n", tmpHr);
    378         }
     335    if (SUCCEEDED(hr))
     336    {
     337        hr = pNetCfg->Apply();
     338        if (FAILED(hr))
     339            LogFlow(("Apply failed, hr (0x%x)\n", hr));
    379340    }
    380341    else
    381     {
    382         Log(__FUNCTION__ ": DeInstall failed hr (0x%x)\n", hr);
    383     }
    384     pSetup->Release();
    385     return hr;
    386 }
    387 
    388 typedef BOOL (*VBOXNETCFGWIN_NETCFGENUM_CALLBACK) (IN INetCfg *pNc, IN INetCfgComponent *pNcc, PVOID pContext);
    389 
    390 static HRESULT vboxNetCfgWinEnumNetCfgComponents(IN INetCfg *pNc,
    391         IN const GUID *pguidClass,
    392         VBOXNETCFGWIN_NETCFGENUM_CALLBACK callback,
    393         PVOID pContext)
     342        LogFlow(("DeInstall failed, hr (0x%x)\n", hr));
     343
     344    if (pSetup)
     345        pSetup->Release();
     346    return hr;
     347}
     348
     349typedef BOOL (*VBOXNETCFGWIN_NETCFGENUM_CALLBACK) (IN INetCfg *pNetCfg, IN INetCfgComponent *pNetCfgComponent, PVOID pContext);
     350
     351static HRESULT vboxNetCfgWinEnumNetCfgComponents(IN INetCfg *pNetCfg,
     352                                                 IN const GUID *pguidClass,
     353                                                 VBOXNETCFGWIN_NETCFGENUM_CALLBACK callback,
     354                                                 PVOID pContext)
    394355{
    395356    IEnumNetCfgComponent *pEnumComponent;
    396     HRESULT hr = pNc->EnumComponents(pguidClass, &pEnumComponent);
    397     bool bBreak = false;
    398     Assert(hr == S_OK);
    399     if (hr == S_OK)
    400     {
    401         INetCfgComponent *pNcc;
     357    HRESULT hr = pNetCfg->EnumComponents(pguidClass, &pEnumComponent);
     358    if (SUCCEEDED(hr))
     359    {
     360        INetCfgComponent *pNetCfgComponent;
    402361        hr = pEnumComponent->Reset();
    403         Assert(hr == S_OK);
    404362        do
    405363        {
    406             hr = pEnumComponent->Next(1, &pNcc, NULL);
    407             Assert(hr == S_OK || hr == S_FALSE);
    408             if (hr == S_OK)
     364            hr = pEnumComponent->Next(1, &pNetCfgComponent, NULL);
     365            if (SUCCEEDED(hr))
    409366            {
    410367//                ULONG uComponentStatus;
    411368//                hr = pNcc->GetDeviceStatus(&uComponentStatus);
    412 //                if (hr == S_OK)
    413                 {
    414                     if (!callback(pNc, pNcc, pContext))
    415                     {
    416                         bBreak = true;
    417                     }
    418                 }
    419                 pNcc->Release();
     369//                if (SUCCEEDED(hr))
     370                BOOL fResult = FALSE;
     371                if (pNetCfgComponent)
     372                {
     373                    if (pContext)
     374                        fResult = callback(pNetCfg, pNetCfgComponent, pContext);
     375                    pNetCfgComponent->Release();
     376                }
     377
     378                if (!fResult)
     379                    break;
    420380            }
    421381            else
    422382            {
    423                 if (hr ==S_FALSE)
     383                if (hr == S_FALSE)
    424384                {
    425385                    hr = S_OK;
    426386                }
    427387                else
    428                 {
    429                     Log(__FUNCTION__": Next failed, hr (0x%x)\n", hr);
    430                 }
     388                    LogFlow(("Next failed, hr (0x%x)\n", hr));
    431389                break;
    432390            }
    433         } while (!bBreak);
    434 
     391        } while (true);
    435392        pEnumComponent->Release();
    436393    }
     
    440397static BOOL vboxNetCfgWinRemoveAllNetDevicesOfIdCallback(HDEVINFO hDevInfo, PSP_DEVINFO_DATA pDev, PVOID pContext)
    441398{
    442     DWORD winEr;
    443399    HRESULT hr = S_OK;
    444400    SP_REMOVEDEVICE_PARAMS rmdParams;
     401
    445402    rmdParams.ClassInstallHeader.cbSize = sizeof(SP_CLASSINSTALL_HEADER);
    446403    rmdParams.ClassInstallHeader.InstallFunction = DIF_REMOVE;
    447404    rmdParams.Scope = DI_REMOVEDEVICE_GLOBAL;
    448405    rmdParams.HwProfile = 0;
     406
    449407    if (SetupDiSetClassInstallParams(hDevInfo,pDev,&rmdParams.ClassInstallHeader,sizeof(rmdParams)))
    450408    {
     
    460418                    {
    461419                        hr = S_FALSE;
    462                         Log(__FUNCTION__": !!!REBOOT REQUIRED!!!\n");
     420                        Log(("!!!REBOOT REQUIRED!!!\n"));
    463421                    }
    464422                }
     
    466424            else
    467425            {
    468                 winEr = GetLastError();
    469                 Log(__FUNCTION__": SetupDiCallClassInstaller failed winErr(%d)\n", winEr);
    470                 hr = HRESULT_FROM_WIN32(winEr);
     426                DWORD dwErr = GetLastError();
     427                LogFlow(("SetupDiCallClassInstaller failed with %ld\n", dwErr));
     428                hr = HRESULT_FROM_WIN32(dwErr);
    471429            }
    472430        }
    473431        else
    474432        {
    475             winEr = GetLastError();
    476             Log(__FUNCTION__": SetupDiSetSelectedDevice failed winErr(%d)\n", winEr);
    477             hr = HRESULT_FROM_WIN32(winEr);
     433            DWORD dwErr = GetLastError();
     434            LogFlow(("SetupDiSetSelectedDevice failed with %ld\n", dwErr));
     435            hr = HRESULT_FROM_WIN32(dwErr);
    478436        }
    479437    }
    480438    else
    481439    {
    482         winEr = GetLastError();
    483         Log(__FUNCTION__": SetupDiSetClassInstallParams failed winErr(%d)\n", winEr);
    484         hr = HRESULT_FROM_WIN32(winEr);
     440        DWORD dwErr = GetLastError();
     441        LogFlow(("SetupDiSetClassInstallParams failed with %ld\n", dwErr));
     442        hr = HRESULT_FROM_WIN32(dwErr);
    485443    }
    486444
     
    528486                if (winEr != ERROR_INSUFFICIENT_BUFFER)
    529487                {
    530                     Log(__FUNCTION__": SetupDiGetDeviceRegistryPropertyW (1) failed winErr(%d)\n", winEr);
     488                    LogFlow(("SetupDiGetDeviceRegistryPropertyW (1) failed winErr(%d)\n", winEr));
    531489                    hr = HRESULT_FROM_WIN32(winEr);
    532490                    break;
     
    534492
    535493                if (pBuffer)
    536                 {
    537494                    free(pBuffer);
    538                 }
    539495
    540496                pBuffer = (PBYTE)malloc(cbRequired);
     
    542498
    543499                if (!SetupDiGetDeviceRegistryPropertyW(hDevInfo,&Dev,
    544                           SPDRP_HARDWAREID, /* IN DWORD Property,*/
    545                           NULL, /*OUT PDWORD PropertyRegDataType, OPTIONAL*/
    546                           pBuffer, /*OUT PBYTE PropertyBuffer,*/
    547                           cbBuffer, /* IN DWORD PropertyBufferSize,*/
    548                           &cbRequired /*OUT PDWORD RequiredSize OPTIONAL*/
    549                         ))
     500                                                       SPDRP_HARDWAREID, /* IN DWORD Property,*/
     501                                                       NULL, /*OUT PDWORD PropertyRegDataType, OPTIONAL*/
     502                                                       pBuffer, /*OUT PBYTE PropertyBuffer,*/
     503                                                       cbBuffer, /* IN DWORD PropertyBufferSize,*/
     504                                                       &cbRequired /*OUT PDWORD RequiredSize OPTIONAL*/
     505                                                       ))
    550506                {
    551507                    winEr = GetLastError();
    552                     Log(__FUNCTION__": SetupDiGetDeviceRegistryPropertyW (2) failed winErr(%d)\n", winEr);
     508                    LogFlow(("SetupDiGetDeviceRegistryPropertyW (2) failed winErr(%d)\n", winEr));
    553509                    hr = HRESULT_FROM_WIN32(winEr);
    554510                    break;
     
    585541    {
    586542        DWORD winEr = GetLastError();
    587         Log(__FUNCTION__": SetupDiGetClassDevsExW failed winErr(%d)\n", winEr);
     543        LogFlow(("SetupDiGetClassDevsExW failed winErr(%d)\n", winEr));
    588544        hr = HRESULT_FROM_WIN32(winEr);
    589545    }
     
    868824        }
    869825        else
    870         {
    871             Log(__FUNCTION__": ExecQuery fail hr (0x%x)\n", hr);
    872         }
     826            LogFlow(("ExecQuery failed (0x%x)\n", hr));
    873827    }
    874828    else
    875829    {
    876830        DWORD winEr = GetLastError();
    877         Log(__FUNCTION__": StringFromGUID2 fail winEr (%d)\n", winEr);
     831        LogFlow(("StringFromGUID2 failed winEr (%d)\n", winEr));
    878832        hr = HRESULT_FROM_WIN32( winEr );
    879833    }
     
    1002956                        {
    1003957                            if (!wcsicmp(pCurMask, pMask))
    1004                             {
    1005958                                *pFound = true;
    1006                             }
    1007959                            break;
    1008960                        }
     
    10761028            }
    10771029            else
    1078             {
    1079                 Log(__FUNCTION__": CoSetProxyBlanket failed hr (0x%x)\n", hr);
    1080             }
     1030                LogFlow(("CoSetProxyBlanket failed, hr (0x%x)\n", hr));
    10811031
    10821032            pSvc->Release();
    10831033        }
    10841034        else
    1085         {
    1086             Log(__FUNCTION__": ConnectServer failed hr (0x%x)\n", hr);
    1087         }
    1088 
     1035            LogFlow(("ConnectServer failed, hr (0x%x)\n", hr));
    10891036        pLoc->Release();
    10901037    }
    10911038    else
    1092     {
    1093         Log(__FUNCTION__": CoCreateInstance failed hr (0x%x)\n", hr);
    1094     }
    1095 
     1039        LogFlow(("CoCreateInstance failed, hr (0x%x)\n", hr));
    10961040    return hr;
    10971041}
     
    11081052    }
    11091053    else
    1110     {
    1111         DWORD winEr = GetLastError();
    1112         Log(__FUNCTION__": Get failed winEr (%d)\n", winEr);
    1113         Assert(0);
    1114         hr = HRESULT_FROM_WIN32(winEr);
    1115     }
     1054        LogFlow(("Get failed, hr (0x%x)\n", hr));
    11161055    return hr;
    11171056}
     
    11391078                        pArgs[i], 0);
    11401079                    if (FAILED(hr))
    1141                     {
    11421080                        break;
    1143                     }
    11441081                }
    11451082            }
     
    11871124    }
    11881125    else
    1189     {
    1190         DWORD dwError = GetLastError();
    1191         Assert(0);
    1192         hr = HRESULT_FROM_WIN32( dwError );
    1193     }
     1126        hr = HRESULT_FROM_WIN32(GetLastError());
    11941127
    11951128    return hr;
     
    12181151    }
    12191152    else
    1220     {
    1221         DWORD dwError = GetLastError();
    1222         Assert(0);
    1223         hr = HRESULT_FROM_WIN32( dwError );
    1224     }
     1153        hr = HRESULT_FROM_WIN32(GetLastError());
    12251154
    12261155    return hr;
     
    13001229    }
    13011230    else
    1302     {
    1303         DWORD winEr = GetLastError();
    1304         Assert(0);
    1305         hr = HRESULT_FROM_WIN32(winEr);
    1306     }
     1231        hr = HRESULT_FROM_WIN32(GetLastError());
    13071232
    13081233    return hr;
     
    13811306                    }
    13821307                }
    1383             }        }
     1308            }
     1309        }
    13841310        SysFreeString(ClassName);
    13851311    }
    13861312    else
    1387     {
    1388         DWORD dwError = GetLastError();
    1389         Assert(0);
    1390         hr = HRESULT_FROM_WIN32( dwError );
    1391     }
     1313        hr = HRESULT_FROM_WIN32(GetLastError());
    13921314
    13931315    return hr;
     
    14581380    }
    14591381    else
    1460     {
    1461         DWORD dwError = GetLastError();
    1462         Assert(0);
    1463         hr = HRESULT_FROM_WIN32( dwError );
    1464     }
     1382        hr = HRESULT_FROM_WIN32(GetLastError());
    14651383
    14661384    return hr;
     
    15021420                                int winEr = varReturnValue.uintVal;
    15031421                                if (winEr == 0)
    1504                                 {
    15051422                                    hr = S_OK;
    1506                                 }
    15071423                                else
    1508                                 {
    15091424                                    hr = HRESULT_FROM_WIN32( winEr );
    1510                                 }
    15111425                            }
    15121426                        }
    15131427                    }
    15141428                    else
    1515                     {
    15161429                        hr = HRESULT_FROM_WIN32( winEr );
    1517                     }
    15181430                }
    15191431            }
     
    15221434    }
    15231435    else
    1524     {
    1525         DWORD dwError = GetLastError();
    1526         Assert(0);
    1527         hr = HRESULT_FROM_WIN32(dwError);
    1528     }
     1436        hr = HRESULT_FROM_WIN32(GetLastError());
    15291437
    15301438    return hr;
     
    15361444    HRESULT hr = pAdapterConfig->Get(L"DHCPEnabled", 0, &vtEnabled, 0, 0);
    15371445    if (SUCCEEDED(hr))
    1538     {
    15391446        *pEnabled = vtEnabled.boolVal;
    1540     }
    15411447    return hr;
    15421448}
     
    15511457        ComPtr <IWbemClassObject> pAdapterConfig;
    15521458        hr = netIfWinFindAdapterClassById(pSvc, pGuid, pAdapterConfig.asOutParam());
    1553         if (hr == S_OK)
     1459        if (SUCCEEDED(hr))
    15541460        {
    15551461            hr = vboxNetCfgWinIsDhcpEnabled(pAdapterConfig, &pSettings->bDhcp);
    15561462            if (SUCCEEDED(hr))
    1557             {
    15581463                hr = netIfWinGetIpSettings(pAdapterConfig, &pSettings->ip, &pSettings->mask);
    1559             }
    15601464        }
    15611465    }
     
    15731477            ComPtr <IWbemClassObject> pAdapterConfig;
    15741478            hr = netIfWinFindAdapterClassById(pSvc, pGuid, pAdapterConfig.asOutParam());
    1575             if (hr == S_OK)
     1479            if (SUCCEEDED(hr))
    15761480            {
    15771481                VARIANT vtEnabled;
    15781482                hr = pAdapterConfig->Get(L"DHCPEnabled", 0, &vtEnabled, 0, 0);
    15791483                if (SUCCEEDED(hr))
    1580                 {
    15811484                    *pEnabled = vtEnabled.boolVal;
    1582                 }
    15831485            }
    15841486        }
     
    15961498            ComPtr <IWbemClassObject> pAdapterConfig;
    15971499            hr = netIfWinFindAdapterClassById(pSvc, pGuid, pAdapterConfig.asOutParam());
    1598             if (hr == S_OK)
     1500            if (SUCCEEDED(hr))
    15991501            {
    16001502                BOOL bIsHostOnly;
     
    16491551            ComPtr <IWbemClassObject> pAdapterConfig;
    16501552            hr = netIfWinFindAdapterClassById(pSvc, pGuid, pAdapterConfig.asOutParam());
    1651             if (hr == S_OK)
     1553            if (SUCCEEDED(hr))
    16521554            {
    16531555                BSTR ObjPath;
     
    16971599            ComPtr <IWbemClassObject> pAdapterConfig;
    16981600            hr = netIfWinFindAdapterClassById(pSvc, pGuid, pAdapterConfig.asOutParam());
    1699             if (hr == S_OK)
     1601            if (SUCCEEDED(hr))
    17001602            {
    17011603                BOOL bIsHostOnly;
     
    17381640            ComPtr <IWbemClassObject> pAdapterConfig;
    17391641            hr = netIfWinFindAdapterClassById(pSvc, pGuid, pAdapterConfig.asOutParam());
    1740             if (hr == S_OK)
     1642            if (SUCCEEDED(hr))
    17411643            {
    17421644                BOOL bIsHostOnly;
     
    19021804    }
    19031805    else
    1904     {
    1905         Log(__FUNCTION__": GetAdaptersAddresses err (%d)\n", dwRc);
    1906     }
    1907     free(pAddresses);
     1806        LogFlow(("GetAdaptersAddresses err (%d)\n", dwRc));
     1807
     1808    if (pAddresses)
     1809        free(pAddresses);
    19081810
    19091811    if (dwRc != NO_ERROR)
     
    19271829    if (hr == S_OK)
    19281830    {
    1929         Log("NetFlt Is Installed currently\n");
     1831        Log("NetFlt is installed currently, uninstalling ...\n");
    19301832
    19311833        hr = VBoxNetCfgWinUninstallComponent(pNc, pNcc);
     
    19351837    else if (hr == S_FALSE)
    19361838    {
    1937         Log("NetFlt Is Not Installed currently\n");
     1839        Log("NetFlt is not installed currently\n");
    19381840        hr = S_OK;
    19391841    }
    19401842    else
    19411843    {
    1942         Log("vboxNetCfgWinNetFltUninstall: FindComponent for NetFlt failed, hr (0x%x)\n", hr);
     1844        LogFlow(("FindComponent failed, hr (0x%x)\n", hr));
    19431845        hr = S_OK;
    19441846    }
     
    19501852}
    19511853
    1952 VBOXNETCFGWIN_DECL(HRESULT)
    1953 VBoxNetCfgWinNetFltUninstall(IN INetCfg *pNc)
     1854VBOXNETCFGWIN_DECL(HRESULT) VBoxNetCfgWinNetFltUninstall(IN INetCfg *pNc)
    19541855{
    19551856    return vboxNetCfgWinNetFltUninstall(pNc, 0);
    19561857}
    19571858
    1958 VBOXNETCFGWIN_DECL(HRESULT)
    1959 VBoxNetCfgWinNetFltInstall(IN INetCfg *pNc, IN LPCWSTR * apInfFullPaths, IN UINT cInfFullPaths)
     1859VBOXNETCFGWIN_DECL(HRESULT) VBoxNetCfgWinNetFltInstall(IN INetCfg *pNc,
     1860                                                      IN LPCWSTR * apInfFullPaths, IN UINT cInfFullPaths)
    19601861{
    19611862    HRESULT hr = vboxNetCfgWinNetFltUninstall(pNc, SUOI_FORCEDELETE);
    1962 
    1963     hr = VBoxNetCfgWinInstallInfAndComponent(pNc, VBOXNETCFGWIN_NETFLT_ID,
    1964                                      &GUID_DEVCLASS_NETSERVICE,
    1965                                      apInfFullPaths,
    1966                                      cInfFullPaths,
    1967                                      NULL);
    1968 
     1863    if (SUCCEEDED(hr))
     1864    {
     1865        Log("NetFlt will be installed ...\n");
     1866        hr = VBoxNetCfgWinInstallInfAndComponent(pNc, VBOXNETCFGWIN_NETFLT_ID,
     1867                                                 &GUID_DEVCLASS_NETSERVICE,
     1868                                                 apInfFullPaths,
     1869                                                 cInfFullPaths,
     1870                                                 NULL);
     1871    }
    19691872    return hr;
    19701873}
    19711874
    19721875#define VBOX_CONNECTION_NAME L"VirtualBox Host-Only Network"
    1973 VBOXNETCFGWIN_DECL(HRESULT) VBoxNetCfgWinGenHostonlyConnectionName (PCWSTR DevName, WCHAR *pBuf, PULONG pcbBuf)
     1876VBOXNETCFGWIN_DECL(HRESULT) VBoxNetCfgWinGenHostonlyConnectionName(PCWSTR DevName, WCHAR *pBuf, PULONG pcbBuf)
    19741877{
    19751878    const WCHAR * pSuffix = wcsrchr( DevName, L'#' );
     
    19991902}
    20001903
    2001 static BOOL vboxNetCfgWinAdjustHostOnlyNetworkInterfacePriority (IN INetCfg *pNc, IN INetCfgComponent *pNcc, PVOID pContext)
    2002 {
    2003     INetCfgComponentBindings *pNccb = NULL;
    2004     IEnumNetCfgBindingPath  *pEnumNccbp;
     1904static BOOL vboxNetCfgWinAdjustHostOnlyNetworkInterfacePriority(IN INetCfg *pNc, IN INetCfgComponent *pNcc, PVOID pContext)
     1905{
     1906    INetCfgComponentBindings *pNetCfgBindings;
    20051907    GUID *pGuid = (GUID*)pContext;
    2006     HRESULT hr;
    2007     bool bFound = false;
    20081908
    20091909    /* Get component's binding. */
    2010     hr = pNcc->QueryInterface(IID_INetCfgComponentBindings, (PVOID*)&pNccb);
    2011     Assert(hr == S_OK);
    2012     if ( hr == S_OK )
     1910    HRESULT hr = pNcc->QueryInterface(IID_INetCfgComponentBindings, (PVOID*)&pNetCfgBindings);
     1911    if (SUCCEEDED(hr))
    20131912    {
    20141913        /* Get binding path enumerator reference. */
    2015         hr = pNccb->EnumBindingPaths(EBP_BELOW, &pEnumNccbp);
    2016         Assert(hr == S_OK);
    2017         if (hr == S_OK)
    2018         {
    2019             INetCfgBindingPath *pNccbp;
    2020             hr = pEnumNccbp->Reset();
    2021             Assert(hr == S_OK);
     1914        IEnumNetCfgBindingPath *pEnumNetCfgBindPath;
     1915        hr = pNetCfgBindings->EnumBindingPaths(EBP_BELOW, &pEnumNetCfgBindPath);
     1916        if (SUCCEEDED(hr))
     1917        {
     1918            bool bFoundIface = false;
     1919            hr = pEnumNetCfgBindPath->Reset();
    20221920            do
    20231921            {
    2024                 hr = pEnumNccbp->Next(1, &pNccbp, NULL);
    2025                 Assert(hr == S_OK || hr == S_FALSE);
     1922                INetCfgBindingPath *pNetCfgBindPath;
     1923                hr = pEnumNetCfgBindPath->Next(1, &pNetCfgBindPath, NULL);
    20261924                if (hr == S_OK)
    20271925                {
    2028 //                   if (pNccbp->IsEnabled() == S_OK)
     1926                    IEnumNetCfgBindingInterface *pEnumNetCfgBindIface;
     1927                    hr = pNetCfgBindPath->EnumBindingInterfaces(&pEnumNetCfgBindIface);
     1928                    if (hr == S_OK)
    20291929                    {
    2030                         IEnumNetCfgBindingInterface *pEnumNcbi;
    2031                         hr = pNccbp->EnumBindingInterfaces(&pEnumNcbi);
    2032                         Assert(hr == S_OK);
    2033                         if (hr == S_OK)
     1930                        pEnumNetCfgBindIface->Reset();
     1931                        do
    20341932                        {
    2035                             INetCfgBindingInterface *pNcbi;
    2036                             hr = pEnumNcbi->Reset();
    2037                             Assert(hr == S_OK);
    2038                             do
     1933                            INetCfgBindingInterface *pNetCfgBindIfce;
     1934                            hr = pEnumNetCfgBindIface->Next(1, &pNetCfgBindIfce, NULL);
     1935                            if (hr == S_OK)
    20391936                            {
    2040                                 hr = pEnumNcbi->Next(1, &pNcbi, NULL);
    2041                                 Assert(hr == S_OK || hr == S_FALSE);
     1937                                INetCfgComponent *pNetCfgCompo;
     1938                                hr = pNetCfgBindIfce->GetLowerComponent(&pNetCfgCompo);
    20421939                                if (hr == S_OK)
    20431940                                {
    2044                                     INetCfgComponent * pNccBoud;
    2045                                     hr = pNcbi->GetLowerComponent(&pNccBoud);
    2046                                     Assert(hr == S_OK);
     1941                                    ULONG uComponentStatus;
     1942                                    hr = pNetCfgCompo->GetDeviceStatus(&uComponentStatus);
    20471943                                    if (hr == S_OK)
    20481944                                    {
    2049                                         ULONG uComponentStatus;
    2050                                         hr = pNccBoud->GetDeviceStatus(&uComponentStatus);
    2051                                         if (hr == S_OK)
     1945                                        GUID guid;
     1946                                        hr = pNetCfgCompo->GetInstanceGuid(&guid);
     1947                                        if (   hr == S_OK
     1948                                            && guid == *pGuid)
    20521949                                        {
    2053 //                                            if (uComponentStatus == 0)
    2054                                             {
    2055                                                 GUID guid;
    2056                                                 hr = pNccBoud->GetInstanceGuid(&guid);
    2057                                                 if (guid == *pGuid)
    2058                                                 {
    2059                                                     hr = pNccb->MoveAfter(pNccbp, NULL);
    2060                                                     Assert(hr == S_OK);
    2061                                                     bFound = true;
    2062                                                 }
    2063                                             }
     1950                                            hr = pNetCfgBindings->MoveAfter(pNetCfgBindPath, NULL);
     1951                                            if (FAILED(hr))
     1952                                                LogFlow(("Unable to move interface, hr (0x%x)\n", hr));
     1953                                            bFoundIface = true;
    20641954                                        }
    2065                                         pNccBoud->Release();
    20661955                                    }
    2067                                     pNcbi->Release();
     1956                                    pNetCfgCompo->Release();
    20681957                                }
    20691958                                else
    2070                                 {
    2071                                     if (hr == S_FALSE)
    2072                                     {
    2073                                         hr = S_OK;
    2074                                     }
    2075                                     else
    2076                                     {
    2077                                         Log(__FUNCTION__": Next failed, hr (0x%x)\n", hr);
    2078                                     }
    2079                                     break;
    2080                                 }
    2081                             } while (!bFound);
    2082                             pEnumNcbi->Release();
    2083                         }
    2084                         else
    2085                         {
    2086                             Log(__FUNCTION__": EnumBindingInterfaces failed, hr (0x%x)\n", hr);
    2087                         }
    2088                     }
    2089 
    2090                     pNccbp->Release();
    2091                 }
    2092                 else
    2093                 {
    2094                     if (hr = S_FALSE)
    2095                     {
    2096                         hr = S_OK;
     1959                                    LogFlow(("GetLowerComponent failed, hr (0x%x)\n", hr));
     1960                                pNetCfgBindIfce->Release();
     1961                            }
     1962                            else
     1963                            {
     1964                                if (hr == S_FALSE) /* No more binding interfaces? */
     1965                                    hr = S_OK;
     1966                                else
     1967                                    LogFlow(("Next binding interface failed, hr (0x%x)\n", hr));
     1968                                break;
     1969                            }
     1970                        } while (!bFoundIface);
     1971                        pEnumNetCfgBindIface->Release();
    20971972                    }
    20981973                    else
    2099                     {
    2100                         Log(__FUNCTION__": Next failed, hr (0x%x)\n", hr);
    2101                     }
     1974                        LogFlow(("EnumBindingInterfaces failed, hr (0x%x)\n", hr));
     1975                    pNetCfgBindPath->Release();
     1976                }
     1977                else
     1978                {
     1979                    if (hr = S_FALSE) /* No more binding paths? */
     1980                        hr = S_OK;
     1981                    else
     1982                        LogFlow(("Next bind path failed, hr (0x%x)\n", hr));
    21021983                    break;
    21031984                }
    2104             } while (!bFound);
    2105 
    2106             pEnumNccbp->Release();
     1985            } while (!bFoundIface);
     1986            pEnumNetCfgBindPath->Release();
    21071987        }
    21081988        else
    2109         {
    2110             Log(__FUNCTION__": EnumBindingPaths failed, hr (0x%x)\n", hr);
    2111         }
    2112 
    2113         pNccb->Release();
     1989            LogFlow(("EnumBindingPaths failed, hr (0x%x)\n", hr));
     1990        pNetCfgBindings->Release();
    21141991    }
    21151992    else
    2116     {
    2117         Log(__FUNCTION__": QueryInterface for IID_INetCfgComponentBindings failed, hr (0x%x)\n", hr);
    2118     }
    2119 
    2120     return true;
     1993        LogFlow(("QueryInterface for IID_INetCfgComponentBindings failed, hr (0x%x)\n", hr));
     1994    return TRUE;
    21211995}
    21221996
     
    22572131        hrc = E_FAIL; \
    22582132        Log strAndArgs; \
    2259         Assert(0); \
    22602133        break; \
    22612134    } else do {} while (0)
    22622135
    2263 
    2264 VBOXNETCFGWIN_DECL(HRESULT) VBoxNetCfgWinRemoveHostOnlyNetworkInterface (IN const GUID *pGUID, OUT BSTR *pErrMsg)
     2136VBOXNETCFGWIN_DECL(HRESULT) VBoxNetCfgWinRemoveHostOnlyNetworkInterface(IN const GUID *pGUID, OUT BSTR *pErrMsg)
    22652137{
    22662138    HRESULT hrc = S_OK;
     
    24672339}
    24682340
    2469 VBOXNETCFGWIN_DECL(HRESULT) VBoxNetCfgWinCreateHostOnlyNetworkInterface (IN LPCWSTR pInfPath, IN bool bIsInfPathFile,
    2470         OUT GUID *pGuid, OUT BSTR *lppszName, OUT BSTR *pErrMsg)
     2341VBOXNETCFGWIN_DECL(HRESULT) VBoxNetCfgWinCreateHostOnlyNetworkInterface(IN LPCWSTR pInfPath, IN bool bIsInfPathFile,
     2342                                                                        OUT GUID *pGuid, OUT BSTR *lppszName, OUT BSTR *pErrMsg)
    24712343{
    24722344    HRESULT hrc = S_OK;
     
    24842356    do
    24852357    {
    2486         BOOL ok;
    24872358        GUID netGuid;
    24882359        SP_DRVINFO_DATA DriverInfoData;
     
    25082379
    25092380        /* create an empty device info set associated with the net class GUID */
    2510         hDeviceInfo = SetupDiCreateDeviceInfoList (&netGuid, NULL);
     2381        hDeviceInfo = SetupDiCreateDeviceInfoList(&netGuid, NULL);
    25112382        if (hDeviceInfo == INVALID_HANDLE_VALUE)
    25122383            SetErrBreak (("SetupDiCreateDeviceInfoList failed (0x%08X)",
     
    25142385
    25152386        /* get the class name from GUID */
    2516         ok = SetupDiClassNameFromGuid (&netGuid, className, MAX_PATH, NULL);
    2517         if (!ok)
     2387        BOOL fResult = SetupDiClassNameFromGuid (&netGuid, className, MAX_PATH, NULL);
     2388        if (!fResult)
    25182389            SetErrBreak (("SetupDiClassNameFromGuid failed (0x%08X)",
    25192390                          GetLastError()));
     
    25212392        /* create a device info element and add the new device instance
    25222393         * key to registry */
    2523         ok = SetupDiCreateDeviceInfo (hDeviceInfo, className, &netGuid, NULL, NULL,
     2394        fResult = SetupDiCreateDeviceInfo (hDeviceInfo, className, &netGuid, NULL, NULL,
    25242395                                     DICD_GENERATE_ID, &DeviceInfoData);
    2525         if (!ok)
     2396        if (!fResult)
    25262397            SetErrBreak (("SetupDiCreateDeviceInfo failed (0x%08X)",
    25272398                          GetLastError()));
     
    25292400        /* select the newly created device info to be the currently
    25302401           selected member */
    2531         ok = SetupDiSetSelectedDevice (hDeviceInfo, &DeviceInfoData);
    2532         if (!ok)
     2402        fResult = SetupDiSetSelectedDevice (hDeviceInfo, &DeviceInfoData);
     2403        if (!fResult)
    25332404            SetErrBreak (("SetupDiSetSelectedDevice failed (0x%08X)",
    25342405                          GetLastError()));
     
    25382409            /* get the device install parameters and disable filecopy */
    25392410            DeviceInstallParams.cbSize = sizeof(SP_DEVINSTALL_PARAMS);
    2540             ok = SetupDiGetDeviceInstallParams (hDeviceInfo, &DeviceInfoData,
     2411            fResult = SetupDiGetDeviceInstallParams (hDeviceInfo, &DeviceInfoData,
    25412412                                                &DeviceInstallParams);
    2542             if (ok)
     2413            if (fResult)
    25432414            {
    25442415                memset(DeviceInstallParams.DriverPath, 0, sizeof(DeviceInstallParams.DriverPath));
     
    25532424                    }
    25542425
    2555                     ok = SetupDiSetDeviceInstallParams (hDeviceInfo, &DeviceInfoData,
    2556                                                         &DeviceInstallParams);
    2557                     if (!ok)
     2426                    fResult = SetupDiSetDeviceInstallParams(hDeviceInfo, &DeviceInfoData,
     2427                                                       &DeviceInstallParams);
     2428                    if (!fResult)
    25582429                    {
    25592430                        DWORD winEr = GetLastError();
    2560                         Log("SetupDiSetDeviceInstallParams: SetupDiSetDeviceInstallParams failed, winEr (%d)\n", winEr);
    2561                         Assert(0);
     2431                        LogFlow(("SetupDiSetDeviceInstallParams failed, winEr (%d)\n", winEr));
    25622432                        break;
    25632433                    }
     
    25652435                else
    25662436                {
    2567                     Log("SetupDiSetDeviceInstallParams: inf path is too long\n");
    2568                     Assert(0);
     2437                    LogFlow(("SetupDiSetDeviceInstallParams faileed: INF path is too long\n"));
    25692438                    break;
    25702439                }
     
    25732442            {
    25742443                DWORD winEr = GetLastError();
    2575                 Assert(0);
    2576                 Log("VBoxNetCfgWinCreateHostOnlyNetworkInterface: SetupDiGetDeviceInstallParams failed, winEr (%d)\n", winEr);
    2577             }
    2578 
     2444                LogFlow(("SetupDiGetDeviceInstallParams failed, winEr (%d)\n", winEr));
     2445            }
    25792446        }
    25802447
    25812448        /* build a list of class drivers */
    2582         ok = SetupDiBuildDriverInfoList (hDeviceInfo, &DeviceInfoData,
    2583                                         SPDIT_CLASSDRIVER);
    2584         if (!ok)
     2449        fResult = SetupDiBuildDriverInfoList (hDeviceInfo, &DeviceInfoData,
     2450                                              SPDIT_CLASSDRIVER);
     2451        if (!fResult)
    25852452            SetErrBreak (("SetupDiBuildDriverInfoList failed (0x%08X)",
    25862453                          GetLastError()));
     
    26472514
    26482515        if (!found)
    2649             SetErrBreak (("Could not find Host Interface Networking driver! "
    2650                               "Please reinstall"));
     2516            SetErrBreak(("Could not find Host Interface Networking driver! Please reinstall"));
    26512517
    26522518        /* set the loopback driver to be the currently selected */
    2653         ok = SetupDiSetSelectedDriver (hDeviceInfo, &DeviceInfoData,
     2519        fResult = SetupDiSetSelectedDriver (hDeviceInfo, &DeviceInfoData,
    26542520                                       &DriverInfoData);
    2655         if (!ok)
    2656             SetErrBreak (("SetupDiSetSelectedDriver failed (0x%08X)",
    2657                           GetLastError()));
     2521        if (!fResult)
     2522            SetErrBreak(("SetupDiSetSelectedDriver failed (0x%08X)",
     2523                         GetLastError()));
    26582524
    26592525        /* register the phantom device to prepare for install */
    2660         ok = SetupDiCallClassInstaller (DIF_REGISTERDEVICE, hDeviceInfo,
    2661                                         &DeviceInfoData);
    2662         if (!ok)
     2526        fResult = SetupDiCallClassInstaller (DIF_REGISTERDEVICE, hDeviceInfo,
     2527                                             &DeviceInfoData);
     2528        if (!fResult)
    26632529        {
    26642530            DWORD err = GetLastError();
     
    26712537
    26722538        /* ask the installer if we can install the device */
    2673         ok = SetupDiCallClassInstaller (DIF_ALLOW_INSTALL, hDeviceInfo,
    2674                                         &DeviceInfoData);
    2675         if (!ok)
     2539        fResult = SetupDiCallClassInstaller (DIF_ALLOW_INSTALL, hDeviceInfo,
     2540                                             &DeviceInfoData);
     2541        if (!fResult)
    26762542        {
    26772543            if (GetLastError() != ERROR_DI_DO_DEFAULT)
     
    26832549        /* get the device install parameters and disable filecopy */
    26842550        DeviceInstallParams.cbSize = sizeof(SP_DEVINSTALL_PARAMS);
    2685         ok = SetupDiGetDeviceInstallParams (hDeviceInfo, &DeviceInfoData,
    2686                                             &DeviceInstallParams);
    2687         if (ok)
     2551        fResult = SetupDiGetDeviceInstallParams (hDeviceInfo, &DeviceInfoData,
     2552                                                 &DeviceInstallParams);
     2553        if (fResult)
    26882554        {
    26892555            pQueueCallbackContext = SetupInitDefaultQueueCallback(NULL);
     
    26922558                DeviceInstallParams.InstallMsgHandlerContext = pQueueCallbackContext;
    26932559                DeviceInstallParams.InstallMsgHandler = (PSP_FILE_CALLBACK)vboxNetCfgWinPspFileCallback;
    2694                 ok = SetupDiSetDeviceInstallParams (hDeviceInfo, &DeviceInfoData,
     2560                fResult = SetupDiSetDeviceInstallParams (hDeviceInfo, &DeviceInfoData,
    26952561                                                    &DeviceInstallParams);
    2696                 if (!ok)
     2562                if (!fResult)
    26972563                {
    26982564                    DWORD winEr = GetLastError();
    2699                     Assert(0);
    2700                     Log("SetupDiSetDeviceInstallParams: SetupDiSetDeviceInstallParams failed, winEr (%d)\n", winEr);
    2701                 }
    2702                 Assert(ok);
     2565                    LogFlow(("SetupDiSetDeviceInstallParams failed, winEr (%d)\n", winEr));
     2566                }
     2567                Assert(fResult);
    27032568            }
    27042569            else
    27052570            {
    27062571                DWORD winEr = GetLastError();
    2707                 Assert(0);
    2708                 Log("VBoxNetCfgWinCreateHostOnlyNetworkInterface: SetupInitDefaultQueueCallback failed, winEr (%d)\n", winEr);
     2572                LogFlow(("SetupInitDefaultQueueCallback failed, winEr (%d)\n", winEr));
    27092573            }
    27102574        }
     
    27122576        {
    27132577            DWORD winEr = GetLastError();
    2714             Assert(0);
    2715             Log("VBoxNetCfgWinCreateHostOnlyNetworkInterface: SetupDiGetDeviceInstallParams failed, winEr (%d)\n", winEr);
     2578            LogFlow(("SetupDiGetDeviceInstallParams failed, winEr (%d)\n", winEr));
    27162579        }
    27172580
    27182581        /* install the files first */
    2719         ok = SetupDiCallClassInstaller (DIF_INSTALLDEVICEFILES, hDeviceInfo,
     2582        fResult = SetupDiCallClassInstaller (DIF_INSTALLDEVICEFILES, hDeviceInfo,
    27202583                                        &DeviceInfoData);
    2721         if (!ok)
     2584        if (!fResult)
    27222585            SetErrBreak (("SetupDiCallClassInstaller (DIF_INSTALLDEVICEFILES) failed (0x%08X)",
    27232586                          GetLastError()));
    2724 
    27252587        /* get the device install parameters and disable filecopy */
    27262588        DeviceInstallParams.cbSize = sizeof(SP_DEVINSTALL_PARAMS);
    2727         ok = SetupDiGetDeviceInstallParams (hDeviceInfo, &DeviceInfoData,
     2589        fResult = SetupDiGetDeviceInstallParams (hDeviceInfo, &DeviceInfoData,
    27282590                                            &DeviceInstallParams);
    2729         if (ok)
     2591        if (fResult)
    27302592        {
    27312593            DeviceInstallParams.Flags |= DI_NOFILECOPY;
    2732             ok = SetupDiSetDeviceInstallParams (hDeviceInfo, &DeviceInfoData,
    2733                                                 &DeviceInstallParams);
    2734             if (!ok)
     2594            fResult = SetupDiSetDeviceInstallParams(hDeviceInfo, &DeviceInfoData,
     2595                                                    &DeviceInstallParams);
     2596            if (!fResult)
    27352597                SetErrBreak (("SetupDiSetDeviceInstallParams failed (0x%08X)",
    27362598                              GetLastError()));
     
    27402602         * Register any device-specific co-installers for this device,
    27412603         */
    2742 
    2743         ok = SetupDiCallClassInstaller (DIF_REGISTER_COINSTALLERS,
    2744                                         hDeviceInfo,
    2745                                         &DeviceInfoData);
    2746         if (!ok)
     2604        fResult = SetupDiCallClassInstaller(DIF_REGISTER_COINSTALLERS,
     2605                                            hDeviceInfo,
     2606                                            &DeviceInfoData);
     2607        if (!fResult)
    27472608            SetErrBreak (("SetupDiCallClassInstaller (DIF_REGISTER_COINSTALLERS) failed (0x%08X)",
    27482609                          GetLastError()));
     
    27522613         * and then do the real install
    27532614         */
    2754         ok = SetupDiCallClassInstaller (DIF_INSTALLINTERFACES,
    2755                                         hDeviceInfo,
    2756                                         &DeviceInfoData);
    2757         if (!ok)
     2615        fResult = SetupDiCallClassInstaller(DIF_INSTALLINTERFACES,
     2616                                            hDeviceInfo,
     2617                                            &DeviceInfoData);
     2618        if (!fResult)
    27582619            SetErrBreak (("SetupDiCallClassInstaller (DIF_INSTALLINTERFACES) failed (0x%08X)",
    27592620                          GetLastError()));
    27602621
    2761         ok = SetupDiCallClassInstaller (DIF_INSTALLDEVICE,
    2762                                         hDeviceInfo,
    2763                                         &DeviceInfoData);
    2764         if (!ok)
     2622        fResult = SetupDiCallClassInstaller(DIF_INSTALLDEVICE,
     2623                                            hDeviceInfo,
     2624                                            &DeviceInfoData);
     2625        if (!fResult)
    27652626            SetErrBreak (("SetupDiCallClassInstaller (DIF_INSTALLDEVICE) failed (0x%08X)",
    27662627                          GetLastError()));
    27672628
    27682629        /* Figure out NetCfgInstanceId */
    2769         hkey = SetupDiOpenDevRegKey (hDeviceInfo,
    2770                                      &DeviceInfoData,
    2771                                      DICS_FLAG_GLOBAL,
    2772                                      0,
    2773                                      DIREG_DRV,
    2774                                      KEY_READ);
     2630        hkey = SetupDiOpenDevRegKey(hDeviceInfo,
     2631                                    &DeviceInfoData,
     2632                                    DICS_FLAG_GLOBAL,
     2633                                    0,
     2634                                    DIREG_DRV,
     2635                                    KEY_READ);
    27752636        if (hkey == INVALID_HANDLE_VALUE)
    27762637            SetErrBreak (("SetupDiOpenDevRegKey failed (0x%08X)",
     
    27852646
    27862647        if (!SetupDiGetDeviceRegistryPropertyW(hDeviceInfo, &DeviceInfoData,
    2787                 SPDRP_FRIENDLYNAME , /* IN DWORD Property,*/
    2788                   NULL, /*OUT PDWORD PropertyRegDataType, OPTIONAL*/
    2789                   (PBYTE)DevName, /*OUT PBYTE PropertyBuffer,*/
    2790                   sizeof(DevName), /* IN DWORD PropertyBufferSize,*/
    2791                   NULL /*OUT PDWORD RequiredSize OPTIONAL*/
    2792                 ))
     2648                                               SPDRP_FRIENDLYNAME , /* IN DWORD Property,*/
     2649                                               NULL, /*OUT PDWORD PropertyRegDataType, OPTIONAL*/
     2650                                               (PBYTE)DevName, /*OUT PBYTE PropertyBuffer,*/
     2651                                               sizeof(DevName), /* IN DWORD PropertyBufferSize,*/
     2652                                               NULL /*OUT PDWORD RequiredSize OPTIONAL*/))
    27932653        {
    27942654            int err = GetLastError();
     
    28192679     */
    28202680    if (pQueueCallbackContext)
    2821     {
    28222681        SetupTermDefaultQueueCallback(pQueueCallbackContext);
    2823     }
    28242682
    28252683    if (hDeviceInfo != INVALID_HANDLE_VALUE)
     
    28272685        /* an error has occurred, but the device is registered, we must remove it */
    28282686        if (ret != 0 && registered)
    2829             SetupDiCallClassInstaller (DIF_REMOVE, hDeviceInfo, &DeviceInfoData);
    2830 
    2831         found = SetupDiDeleteDeviceInfo (hDeviceInfo, &DeviceInfoData);
     2687            SetupDiCallClassInstaller(DIF_REMOVE, hDeviceInfo, &DeviceInfoData);
     2688
     2689        found = SetupDiDeleteDeviceInfo(hDeviceInfo, &DeviceInfoData);
    28322690
    28332691        /* destroy the driver info list */
    28342692        if (destroyList)
    2835             SetupDiDestroyDriverInfoList (hDeviceInfo, &DeviceInfoData,
    2836                                           SPDIT_CLASSDRIVER);
     2693            SetupDiDestroyDriverInfoList(hDeviceInfo, &DeviceInfoData,
     2694                                         SPDIT_CLASSDRIVER);
    28372695        /* clean up the device info set */
    28382696        SetupDiDestroyDeviceInfoList (hDeviceInfo);
     
    28452703        ULONG cbName = sizeof(ConnectoinName);
    28462704
    2847         HRESULT hr = VBoxNetCfgWinGenHostonlyConnectionName (DevName, ConnectoinName, &cbName);
     2705        HRESULT hr = VBoxNetCfgWinGenHostonlyConnectionName(DevName, ConnectoinName, &cbName);
     2706        if (SUCCEEDED(hr))
     2707            hr = VBoxNetCfgWinRenameConnection(pWCfgGuidString, ConnectoinName);
     2708
     2709        if (lppszName)
     2710        {
     2711            *lppszName = ::SysAllocString((const OLECHAR *) DevName);
     2712            if (!*lppszName)
     2713            {
     2714                LogFlow(("SysAllocString failed\n"));
     2715                hrc = HRESULT_FROM_WIN32(ERROR_NOT_ENOUGH_MEMORY);
     2716            }
     2717        }
     2718
     2719        if (pGuid)
     2720        {
     2721            hrc = CLSIDFromString(pWCfgGuidString, (LPCLSID)pGuid);
     2722            if (FAILED(hrc))
     2723                LogFlow(("CLSIDFromString failed, hrc (0x%x)\n", hrc));
     2724        }
     2725
     2726        INetCfg *pNetCfg = NULL;
     2727        LPWSTR lpszApp = NULL;
     2728        hr = VBoxNetCfgWinQueryINetCfg(&pNetCfg, TRUE, L"VirtualBox Host-Only Creation",
     2729                                       30 * 1000, /* on Vista we often get 6to4svc.dll holding the lock, wait for 30 sec.  */
     2730                                       /* TODO: special handling for 6to4svc.dll ???, i.e. several retrieves */
     2731                                       &lpszApp);
    28482732        if (hr == S_OK)
    28492733        {
    2850             hr = VBoxNetCfgWinRenameConnection (pWCfgGuidString, ConnectoinName);
    2851         }
    2852 
    2853         if (lppszName)
    2854         {
    2855             *lppszName = ::SysAllocString ((const OLECHAR *) DevName);
    2856             if (!*lppszName)
    2857             {
    2858                 Log("VBoxNetCfgWinCreateHostOnlyNetworkInterface: SysAllocString failed\n");
    2859                 Assert(0);
    2860                 hrc = HRESULT_FROM_WIN32(ERROR_NOT_ENOUGH_MEMORY);
    2861             }
    2862         }
    2863 
    2864         if (pGuid)
    2865         {
    2866             hrc = CLSIDFromString(pWCfgGuidString, (LPCLSID)pGuid);
    2867             if (hrc != S_OK)
    2868             {
    2869                 Log("VBoxNetCfgWinCreateHostOnlyNetworkInterface: CLSIDFromString failed, hrc (0x%x)\n", hrc);
    2870                 Assert(0);
    2871             }
    2872         }
    2873 
    2874         INetCfg *pNc;
    2875         LPWSTR lpszApp = NULL;
    2876 
    2877         hr = VBoxNetCfgWinQueryINetCfg(&pNc, TRUE, L"VirtualBox Host-Only Creation",
    2878                            30000, /* on Vista we often get 6to4svc.dll holding the lock, wait for 30 sec,  */
    2879                                   /* TODO: special handling for 6to4svc.dll ???, i.e. several retrieves */
    2880                            &lpszApp);
    2881         Assert(hr == S_OK);
    2882         if (hr == S_OK)
    2883         {
    2884             hr = vboxNetCfgWinEnumNetCfgComponents(pNc,
    2885                     &GUID_DEVCLASS_NETSERVICE,
    2886                     vboxNetCfgWinAdjustHostOnlyNetworkInterfacePriority,
    2887                     pGuid);
    2888             Assert(hr == S_OK);
    2889 
    2890             hr = vboxNetCfgWinEnumNetCfgComponents(pNc,
    2891                     &GUID_DEVCLASS_NETTRANS,
    2892                     vboxNetCfgWinAdjustHostOnlyNetworkInterfacePriority,
    2893                     pGuid);
    2894             Assert(hr == S_OK);
    2895 
    2896             hr = vboxNetCfgWinEnumNetCfgComponents(pNc,
    2897                     &GUID_DEVCLASS_NETCLIENT,
    2898                     vboxNetCfgWinAdjustHostOnlyNetworkInterfacePriority,
    2899                     pGuid);
    2900             Assert(hr == S_OK);
    2901 
    2902             if (hr == S_OK)
    2903             {
    2904                 hr = pNc->Apply();
    2905                 Assert(hr == S_OK);
    2906             }
    2907 
    2908             VBoxNetCfgWinReleaseINetCfg(pNc, TRUE);
     2734            hr = vboxNetCfgWinEnumNetCfgComponents(pNetCfg,
     2735                                                   &GUID_DEVCLASS_NETSERVICE,
     2736                                                   vboxNetCfgWinAdjustHostOnlyNetworkInterfacePriority,
     2737                                                   pGuid);
     2738            if (SUCCEEDED(hr))
     2739            {
     2740                hr = vboxNetCfgWinEnumNetCfgComponents(pNetCfg,
     2741                                                       &GUID_DEVCLASS_NETTRANS,
     2742                                                       vboxNetCfgWinAdjustHostOnlyNetworkInterfacePriority,
     2743                                                       pGuid);
     2744                if (SUCCEEDED(hr))
     2745                    hr = vboxNetCfgWinEnumNetCfgComponents(pNetCfg,
     2746                                                           &GUID_DEVCLASS_NETCLIENT,
     2747                                                           vboxNetCfgWinAdjustHostOnlyNetworkInterfacePriority,
     2748                                                           pGuid);
     2749            }
     2750
     2751            if (SUCCEEDED(hr))
     2752            {
     2753                hr = pNetCfg->Apply();
     2754            }
     2755            else
     2756                LogFlow(("Enumeration failed, hr 0x%x\n", hr));
     2757            VBoxNetCfgWinReleaseINetCfg(pNetCfg, TRUE);
    29092758        }
    29102759        else if (hr == NETCFG_E_NO_WRITE_LOCK && lpszApp)
    29112760        {
    2912             Log("VBoxNetCfgWinCreateHostOnlyNetworkInterface: app %S is holding the lock, failed\n", lpszApp);
     2761            LogFlow(("Application %ws is holding the lock, failed\n", lpszApp));
    29132762            CoTaskMemFree(lpszApp);
    29142763        }
    29152764        else
    2916         {
    2917             Log("VBoxNetCfgWinCreateHostOnlyNetworkInterface: VBoxNetCfgWinQueryINetCfg failed, hr 0x%x\n", hr);
    2918         }
    2919     }
    2920 
     2765            LogFlow(("VBoxNetCfgWinQueryINetCfg failed, hr 0x%x\n", hr));
     2766    }
    29212767    return hrc;
    29222768}
    29232769
    29242770#undef SetErrBreak
     2771
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