VirtualBox

Changeset 65698 in vbox for trunk/src/VBox/Main/src-client


Ignore:
Timestamp:
Feb 9, 2017 12:28:01 PM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
113406
Message:

NetAdp/win (bugref:8488) standalone implementation, does not require NetLwf to be installed.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/src-client/ConsoleImpl2.cpp

    r65584 r65698  
    48304830
    48314831
    4832 #ifdef RT_OS_WINDOWS
    4833 DECLINLINE(bool) IsNdis6(void)
    4834 {
    4835     LogFlowFunc(("entry\n"));
    4836     HANDLE hFile = CreateFile(L"\\\\.\\VBoxNetLwf",
    4837                               0,
    4838                               FILE_SHARE_READ | FILE_SHARE_WRITE,
    4839                               NULL,
    4840                               OPEN_EXISTING,
    4841                               0,
    4842                               NULL);
    4843     bool fNdis6 = hFile != INVALID_HANDLE_VALUE;
    4844     if (fNdis6)
    4845         CloseHandle(hFile);
    4846     else
    4847         LogFunc(("CreateFile failed with 0x%x\n", GetLastError()));
    4848     LogFlowFunc(("return %s\n", fNdis6 ? "true" : "false"));
    4849     return fNdis6;
    4850 }
    4851 #endif /* RT_OS_WINDOWS */
    4852 
    4853 
    48544832/**
    48554833 *  Construct the Network configuration tree
     
    56655643#  define VBOX_WIN_BINDNAME_PREFIX "\\DEVICE\\"
    56665644                char szTrunkName[INTNET_MAX_TRUNK_NAME];
    5667                 char *pszTrunkName = szTrunkName;
    5668                 wchar_t * pswzBindName;
    5669                 hrc = pAdaptorComponent->GetBindName(&pswzBindName);
     5645                bool fNdis6 = false;
     5646                wchar_t * pwszHelpText;
     5647                hrc = pAdaptorComponent->GetHelpText(&pwszHelpText);
    56705648                Assert(hrc == S_OK);
    56715649                if (hrc == S_OK)
    56725650                {
    5673                     int cwBindName = (int)wcslen(pswzBindName) + 1;
    5674                     int cbFullBindNamePrefix = sizeof(VBOX_WIN_BINDNAME_PREFIX);
    5675                     if (sizeof(szTrunkName) > cbFullBindNamePrefix + cwBindName)
     5651                    Log(("help-text=%ls\n", pwszHelpText));
     5652                    if (!wcscmp(pwszHelpText, L"VirtualBox NDIS 6.0 Miniport Driver"))
     5653                        fNdis6 = true;
     5654                    CoTaskMemFree(pwszHelpText);
     5655                }
     5656                if (fNdis6)
     5657                {
     5658                    strncpy(szTrunkName, pszHostOnlyName, sizeof(szTrunkName) - 1);
     5659                    Log(("trunk=%s\n", szTrunkName));
     5660                }
     5661                else
     5662                {
     5663                    char *pszTrunkName = szTrunkName;
     5664                    wchar_t * pswzBindName;
     5665                    hrc = pAdaptorComponent->GetBindName(&pswzBindName);
     5666                    Assert(hrc == S_OK);
     5667                    if (hrc == S_OK)
    56765668                    {
    5677                         strcpy(szTrunkName, VBOX_WIN_BINDNAME_PREFIX);
    5678                         pszTrunkName += cbFullBindNamePrefix-1;
    5679                         if (!WideCharToMultiByte(CP_ACP, 0, pswzBindName, cwBindName, pszTrunkName,
    5680                                                 sizeof(szTrunkName) - cbFullBindNamePrefix + 1, NULL, NULL))
     5669                        int cwBindName = (int)wcslen(pswzBindName) + 1;
     5670                        int cbFullBindNamePrefix = sizeof(VBOX_WIN_BINDNAME_PREFIX);
     5671                        if (sizeof(szTrunkName) > cbFullBindNamePrefix + cwBindName)
    56815672                        {
    5682                             DWORD err = GetLastError();
    5683                             hrc = HRESULT_FROM_WIN32(err);
    5684                             AssertLogRelMsgFailed(("NetworkAttachmentType_HostOnly: WideCharToMultiByte failed, hr=%Rhrc (0x%x) err=%u\n",
    5685                                                    hrc, hrc, err));
     5673                            strcpy(szTrunkName, VBOX_WIN_BINDNAME_PREFIX);
     5674                            pszTrunkName += cbFullBindNamePrefix-1;
     5675                            if (!WideCharToMultiByte(CP_ACP, 0, pswzBindName, cwBindName, pszTrunkName,
     5676                                                     sizeof(szTrunkName) - cbFullBindNamePrefix + 1, NULL, NULL))
     5677                            {
     5678                                DWORD err = GetLastError();
     5679                                hrc = HRESULT_FROM_WIN32(err);
     5680                                AssertLogRelMsgFailed(("NetworkAttachmentType_HostOnly: WideCharToMultiByte failed, hr=%Rhrc (0x%x) err=%u\n",
     5681                                                       hrc, hrc, err));
     5682                            }
     5683                        }
     5684                        else
     5685                        {
     5686                            AssertLogRelMsgFailed(("NetworkAttachmentType_HostOnly: insufficient szTrunkName buffer space\n"));
     5687                            /** @todo set appropriate error code */
     5688                            hrc = E_FAIL;
     5689                        }
     5690
     5691                        if (hrc != S_OK)
     5692                        {
     5693                            AssertFailed();
     5694                            CoTaskMemFree(pswzBindName);
     5695                            VBoxNetCfgWinReleaseINetCfg(pNc, FALSE /*fHasWriteLock*/);
     5696                            H();
    56865697                        }
    56875698                    }
    56885699                    else
    56895700                    {
    5690                         AssertLogRelMsgFailed(("NetworkAttachmentType_HostOnly: insufficient szTrunkName buffer space\n"));
    5691                         /** @todo set appropriate error code */
    5692                         hrc = E_FAIL;
    5693                     }
    5694 
    5695                     if (hrc != S_OK)
    5696                     {
    5697                         AssertFailed();
    5698                         CoTaskMemFree(pswzBindName);
    56995701                        VBoxNetCfgWinReleaseINetCfg(pNc, FALSE /*fHasWriteLock*/);
     5702                        AssertLogRelMsgFailed(("NetworkAttachmentType_HostOnly: VBoxNetCfgWinGetComponentByGuid failed, hrc=%Rhrc (0x%x)\n",
     5703                                               hrc, hrc));
    57005704                        H();
    57015705                    }
    5702                 }
    5703                 else
    5704                 {
    5705                     VBoxNetCfgWinReleaseINetCfg(pNc, FALSE /*fHasWriteLock*/);
    5706                     AssertLogRelMsgFailed(("NetworkAttachmentType_HostOnly: VBoxNetCfgWinGetComponentByGuid failed, hrc=%Rhrc (0x%x)\n",
    5707                                            hrc, hrc));
    5708                     H();
    5709                 }
    5710 
    5711 
    5712                 CoTaskMemFree(pswzBindName);
    5713 
    5714                 /* The old NDIS5.1 version of driver uses TRUNKTYPE_NETADP */
    5715                 trunkType = IsNdis6() ? TRUNKTYPE_NETFLT : TRUNKTYPE_NETADP;
    5716                 InsertConfigInteger(pCfg, "TrunkType", trunkType == TRUNKTYPE_NETFLT ? kIntNetTrunkType_NetFlt : kIntNetTrunkType_NetAdp);
     5706
     5707
     5708                    CoTaskMemFree(pswzBindName);
     5709                }
     5710
     5711                trunkType = TRUNKTYPE_NETADP;
     5712                InsertConfigInteger(pCfg, "TrunkType", kIntNetTrunkType_NetAdp);
    57175713
    57185714                pAdaptorComponent.setNull();
Note: See TracChangeset for help on using the changeset viewer.

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