Changeset 17713 in vbox for trunk/src/VBox/Main/win
- Timestamp:
- Mar 11, 2009 5:30:58 PM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 44225
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/win/NetIfList-win.cpp
r17710 r17713 478 478 if(SUCCEEDED(hr)) 479 479 { 480 } 481 } 480 VARIANT varReturnValue; 481 hr = pOutParams->Get(bstr_t(L"ReturnValue"), 0, 482 &varReturnValue, NULL, 0); 483 Assert(SUCCEEDED(hr)); 484 if(SUCCEEDED(hr)) 485 { 486 // Assert(varReturnValue.vt == VT_UINT); 487 int winEr = varReturnValue.uintVal; 488 switch(winEr) 489 { 490 case 0: 491 hr = S_OK; 492 break; 493 default: 494 hr = HRESULT_FROM_WIN32( winEr ); 495 break; 496 } 497 } 498 } } 482 499 SysFreeString(ClassName); 483 500 } … … 534 551 if(SUCCEEDED(hr)) 535 552 { 553 VARIANT varReturnValue; 554 hr = pOutParams->Get(bstr_t(L"ReturnValue"), 0, 555 &varReturnValue, NULL, 0); 556 Assert(SUCCEEDED(hr)); 557 if(SUCCEEDED(hr)) 558 { 559 // Assert(varReturnValue.vt == VT_UINT); 560 int winEr = varReturnValue.uintVal; 561 switch(winEr) 562 { 563 case 0: 564 hr = S_OK; 565 break; 566 default: 567 hr = HRESULT_FROM_WIN32( winEr ); 568 break; 569 } 570 } 536 571 } 537 572 } … … 548 583 } 549 584 550 static int collectNetIfInfo(Bstr &strName, PNETIFINFO pInfo) 585 static int netIfWinIsDhcpEnabled(const Guid &guid, BOOL *pEnabled) 586 { 587 HRESULT hr; 588 ComPtr <IWbemServices> pSvc; 589 hr = netIfWinCreateIWbemServices(pSvc.asOutParam()); 590 if(SUCCEEDED(hr)) 591 { 592 ComPtr <IWbemClassObject> pAdapterConfig; 593 hr = netIfWinFindAdapterClassById(pSvc, guid, pAdapterConfig.asOutParam()); 594 if(SUCCEEDED(hr)) 595 { 596 VARIANT vtEnabled; 597 hr = pAdapterConfig->Get(L"DHCPEnabled", 0, &vtEnabled, 0, 0); 598 if(SUCCEEDED(hr)) 599 { 600 *pEnabled = vtEnabled.boolVal; 601 } 602 } 603 } 604 605 return SUCCEEDED(hr) ? VINF_SUCCESS : VERR_GENERAL_FAILURE; 606 } 607 608 static int collectNetIfInfo(Bstr &strName, Guid &guid, PNETIFINFO pInfo) 551 609 { 552 610 DWORD dwRc; 611 int rc = VINF_SUCCESS; 553 612 /* 554 613 * Most of the hosts probably have less than 10 adapters, … … 642 701 RTStrFree(pszUuid); 643 702 } 703 704 BOOL bEnabled; 705 rc = netIfWinIsDhcpEnabled(guid, &bEnabled); 706 Assert(RT_SUCCESS(rc)); 707 if(RT_SUCCESS(rc)) 708 { 709 pInfo->bDhcpEnabled = bEnabled; 710 } 644 711 } 645 712 RTMemFree(pAddresses); … … 647 714 return VINF_SUCCESS; 648 715 } 649 650 //static HRESULT netIfWinUpdateConfig(HostNetworkInterface * pIf)651 //{652 // NETIFINFO Info;653 // memset(&Info, 0, sizeof(Info));654 // GUID guid;655 // HRESULT hr = pIf->COMGETTER(Id) (&guid);656 // if(SUCCEEDED(hr))657 // {658 // Info.Uuid = (RTUUID)*(RTUUID*)&guid;659 // BSTR name;660 // hr = pIf->COMGETTER(Name) (&name);661 // Assert(hr == S_OK);662 // if(hr == S_OK)663 // {664 // int rc = collectNetIfInfo(Bstr(name), &Info);665 // if (RT_SUCCESS(rc))666 // {667 // hr = pIf->updateConfig(&Info);668 // }669 // else670 // {671 // Log(("netIfWinUpdateConfig: collectNetIfInfo() -> %Vrc\n", rc));672 // hr = E_FAIL;673 // }674 // }675 // }676 //677 // return hr;678 //}679 716 680 717 static int netIfEnableStaticIpConfig(const Guid &guid, ULONG ip, ULONG mask) … … 2068 2105 memset(&Info, 0, sizeof(Info)); 2069 2106 Info.Uuid = *(Guid(IfGuid).raw()); 2070 rc = collectNetIfInfo(name, &Info);2107 rc = collectNetIfInfo(name, Guid(IfGuid), &Info); 2071 2108 if (RT_FAILURE(rc)) 2072 2109 { … … 2171 2208 Bstr name; 2172 2209 HRESULT hr = pIf->COMGETTER(Name)(name.asOutParam()); 2173 if(SUCCEEDED(hr)) 2174 { 2175 return collectNetIfInfo(name, pInfo); 2210 if(hr == S_OK) 2211 { 2212 GUID IfGuid; 2213 hr = pIf->COMGETTER(Id)(&IfGuid); 2214 Assert(hr == S_OK); 2215 if (hr == S_OK) 2216 { 2217 return collectNetIfInfo(name, Guid(IfGuid), pInfo); 2218 } 2176 2219 } 2177 2220 return VERR_GENERAL_FAILURE;
Note:
See TracChangeset
for help on using the changeset viewer.