VirtualBox

Changeset 37038 in vbox for trunk/src/VBox


Ignore:
Timestamp:
May 11, 2011 2:57:23 PM (14 years ago)
Author:
vboxsync
Message:

usb: fix issue with uncompleting IRP on device enumeration

Location:
trunk/src/VBox/HostDrivers/VBoxUSB/win/mon
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostDrivers/VBoxUSB/win/mon/VBoxUsbFlt.cpp

    r36999 r37038  
    667667                            for (ULONG k = 0; k < pDevRelations->Count; ++k)
    668668                            {
    669                                 Log(("Found existing USB PDO %p\n", pDevRelations->Objects[k]));
     669                                PDEVICE_OBJECT pDevObj = pDevRelations->Objects[k];
     670                                if (!pDevObj->DriverObject
     671                                        || !pDevObj->DriverObject->DriverName.Buffer
     672                                        || !pDevObj->DriverObject->DriverName.Length)
     673                                {
     674                                    AssertFailed();
     675                                    continue;
     676                                }
     677
     678                                bool fIsHub = false;
     679                                for (int z = 0; z < RT_ELEMENTS(lpszStandardControllerName); ++z)
     680                                {
     681                                    if (!RtlCompareUnicodeString(&szStandardControllerName[z], &pDevObj->DriverObject->DriverName, TRUE /* case insensitive */))
     682                                    {
     683                                        fIsHub = true;
     684                                        break;
     685                                    }
     686                                }
     687
     688                                if (fIsHub)
     689                                {
     690                                    Log(("Found sub-hub, PDO 0x%p\n", pDevObj));
     691                                    continue;
     692                                }
     693
     694                                Log(("Found existing USB PDO 0x%p\n", pDevObj));
    670695                                VBOXUSBFLT_LOCK_ACQUIRE();
    671                                 PVBOXUSBFLT_DEVICE pDevice = vboxUsbFltDevGetLocked(pDevRelations->Objects[k]);
     696                                PVBOXUSBFLT_DEVICE pDevice = vboxUsbFltDevGetLocked(pDevObj);
    672697                                if (pDevice)
    673698                                {
  • trunk/src/VBox/HostDrivers/VBoxUSB/win/mon/VBoxUsbMon.cpp

    r36998 r37038  
    647647static NTSTATUS vboxUsbMonHookInstall()
    648648{
     649#ifdef VBOXUSBMON_DBG_NO_PNPHOOK
     650    return STATUS_SUCCESS;
     651#else
    649652    return VBoxUsbHookInstall(&g_VBoxUsbMonGlobals.UsbHubPnPHook.Hook);
     653#endif
    650654}
    651655
    652656static NTSTATUS vboxUsbMonHookUninstall()
    653657{
     658#ifdef VBOXUSBMON_DBG_NO_PNPHOOK
     659    return STATUS_SUCCESS;
     660#else
    654661    return VBoxUsbHookUninstall(&g_VBoxUsbMonGlobals.UsbHubPnPHook.Hook);
     662#endif
    655663}
    656664
     
    850858static int VBoxUsbMonFltAdd(PVBOXUSBMONCTX pContext, PUSBFILTER pFilter, uintptr_t *pId)
    851859{
     860#ifdef VBOXUSBMON_DBG_NO_FILTERS
     861    static uintptr_t idDummy = 1;
     862    *pId = idDummy;
     863    ++idDummy;
     864    return VINF_SUCCESS;
     865#else
    852866    int rc = VBoxUsbFltAdd(&pContext->FltCtx, pFilter, pId);
    853867    return rc;
     868#endif
    854869}
    855870
    856871static int VBoxUsbMonFltRemove(PVBOXUSBMONCTX pContext, uintptr_t uId)
    857872{
     873#ifdef VBOXUSBMON_DBG_NO_FILTERS
     874    return VINF_SUCCESS;
     875#else
    858876    int rc = VBoxUsbFltRemove(&pContext->FltCtx, uId);
    859877    return rc;
     878#endif
    860879}
    861880
  • trunk/src/VBox/HostDrivers/VBoxUSB/win/mon/VBoxUsbMon.h

    r36968 r37038  
    2323#include <iprt/asm.h>
    2424#include <VBox/log.h>
     25
     26#ifdef DEBUG
     27/* disables filters */
     28//#define VBOXUSBMON_DBG_NO_FILTERS
     29/* disables pnp hooking */
     30//#define VBOXUSBMON_DBG_NO_PNPHOOK
     31#endif
    2532
    2633#include "../cmn/VBoxDrvTool.h"
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