Changeset 57937 in vbox for trunk/src/VBox/HostDrivers/VBoxNetFlt/win/drv
- Timestamp:
- Sep 29, 2015 11:33:00 AM (10 years ago)
- svn:sync-xref-src-repo-rev:
- 102911
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostDrivers/VBoxNetFlt/win/drv/VBoxNetFltRt-win.cpp
r56874 r57937 119 119 static int vboxNetFltWinAttachToInterface(PVBOXNETFLTINS pThis, void * pContext, bool fRediscovery); 120 120 static int vboxNetFltWinConnectIt(PVBOXNETFLTINS pThis); 121 static int vboxNetFltWin TryFiniIdc();121 static int vboxNetFltWinFiniIdc(); 122 122 static void vboxNetFltWinFiniNetFltBase(); 123 123 static int vboxNetFltWinInitNetFltBase(); … … 1667 1667 LogFlow((__FUNCTION__" ==> DO (0x%x)\n", DriverObject)); 1668 1668 1669 rc = vboxNetFltWin TryFiniIdc();1669 rc = vboxNetFltWinFiniIdc(); 1670 1670 if (RT_FAILURE(rc)) 1671 1671 { … … 1673 1673 AssertFailed(); 1674 1674 1675 Log((__FUNCTION__": vboxNetFltWin TryFiniIdc - failed, busy.\n"));1675 Log((__FUNCTION__": vboxNetFltWinFiniIdc - failed, busy.\n")); 1676 1676 } 1677 1677 … … 2450 2450 } 2451 2451 2452 static int vboxNetFltWinTryFiniIdc() 2452 /* 2453 * Defines max timeout for waiting for driver unloading 2454 * (3000 * 100 ms = 5 minutes) 2455 */ 2456 #define MAX_UNLOAD_PROBES 3000 2457 2458 static int vboxNetFltWinFiniIdc() 2453 2459 { 2454 2460 int rc; 2461 int i; 2455 2462 2456 2463 vboxNetFltWinStopInitIdcProbing(); … … 2458 2465 if (g_bVBoxIdcInitialized) 2459 2466 { 2460 rc = vboxNetFltTryDeleteIdc(&g_VBoxNetFltGlobals); 2467 for (i = 0; (rc = vboxNetFltTryDeleteIdc(&g_VBoxNetFltGlobals)) == VERR_WRONG_ORDER 2468 && i < MAX_UNLOAD_PROBES; i++) 2469 { 2470 RTThreadSleep(100); 2471 } 2472 if (i == MAX_UNLOAD_PROBES) 2473 { 2474 // seems something hungs in driver 2475 LogFlow(("vboxNetFltWinFiniIdc - Can't delete Idc. pInH=%p cFRefs=%d fIDcOpen=%s", 2476 g_VBoxNetFltGlobals.pInstanceHead, g_VBoxNetFltGlobals.cFactoryRefs, 2477 g_VBoxNetFltGlobals.fIDCOpen ? "true" : "false")); 2478 LogFlow(("vboxNetFltWinFiniIdc g_VBoxNetFltGlobalsWin cDvRefs=%d hDev=%x pDev=%p Mp=%x \n", 2479 g_VBoxNetFltGlobalsWin.cDeviceRefs, g_VBoxNetFltGlobalsWin.hDevice, 2480 g_VBoxNetFltGlobalsWin.pDevObj, g_VBoxNetFltGlobalsWin.Mp.hMiniport)); 2481 Assert(i == MAX_UNLOAD_PROBES); 2482 return VERR_WRONG_ORDER; 2483 } 2484 2461 2485 if (RT_SUCCESS(rc)) 2462 2486 { … … 2474 2498 static int vboxNetFltWinFiniNetFlt() 2475 2499 { 2476 int rc = vboxNetFltWin TryFiniIdc();2500 int rc = vboxNetFltWinFiniIdc(); 2477 2501 if (RT_SUCCESS(rc)) 2478 2502 {
Note:
See TracChangeset
for help on using the changeset viewer.