VirtualBox

Changeset 18688 in vbox for trunk/src


Ignore:
Timestamp:
Apr 3, 2009 1:13:34 PM (16 years ago)
Author:
vboxsync
Message:

VBoxMouse/win: Added mouse detection for interrupt 12h (ACPI enabled VMs).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/MouseFilter/VBoxMouse.cpp

    r18682 r18688  
    186186        if (status == STATUS_SUCCESS)
    187187        {
    188             /* Check whether the device claims the IO port 0x60. */
    189             BOOLEAN bPort60h = FALSE;
     188            /* Check whether the device claims the IO port 0x60 or interrupt 12. */
     189            BOOLEAN bDetected = FALSE;
    190190
    191191            CM_RESOURCE_LIST *pResourceList = (CM_RESOURCE_LIST *)&Property[0];
    192192
    193             dprintf(("VBoxMouse::vboxDeviceAdded: Configuration: descriptors %d\n",
     193            dprintf(("VBoxMouse::vboxDeviceAdded: Configuration: Number of descriptors = %d\n",
    194194                      pResourceList->Count));
    195195
     
    217217                             pPartialDescriptor->u.Generic.Start.QuadPart, pPartialDescriptor->u.Generic.Length));
    218218
    219                     if (pPartialDescriptor->Type == CmResourceTypePort)
     219                    switch(pPartialDescriptor->Type)
    220220                    {
     221
     222                    case CmResourceTypePort:
     223
     224                        dprintf(("VBoxMouse::vboxDeviceAdded: PartialDescriptor %d: Port 0x%x\n", iPartialDescriptor, pPartialDescriptor->u.Port.Start.QuadPart));
    221225                        if (pPartialDescriptor->u.Port.Start.QuadPart == 0x60)
    222226                        {
    223                             bPort60h = TRUE;
     227                            bDetected = TRUE;
    224228                        }
     229                        break;
     230
     231                    case CmResourceTypeInterrupt:
     232
     233                        dprintf(("VBoxMouse::vboxDeviceAdded: PartialDescriptor %d: Int %ld\n", iPartialDescriptor, pPartialDescriptor->u.Interrupt.Vector));
     234                        if (pPartialDescriptor->u.Interrupt.Vector == 0x12)
     235                        {
     236                            bDetected = TRUE;
     237                        }
     238                        break;
     239
     240                    default:
     241                        break;
    225242                    }
    226243                }
    227244            }
    228245
    229             if (bPort60h)
     246            if (bDetected)
    230247            {
    231248                /* It's the emulated 8042 PS/2 mouse/kbd device, so mark it as the Host one.
     
    234251                InterlockedExchange (&g_ctx.fHostMouseFound, TRUE);
    235252                devExt->HostMouse = TRUE;
    236                 dprintf(("VBoxMouse::vboxDeviceAdded: host mouse found.\n"));
     253                dprintf(("VBoxMouse::vboxDeviceAdded: Host mouse found.\n"));
    237254            }
    238255        }
     
    274291            dprintf(("VBoxMouse::vboxDeviceRemoved: the request allocation has failed.\n"));
    275292        }
    276    
     293
    277294        InterlockedExchange (&g_ctx.fHostInformed, FALSE);
    278295    }
     
    303320static void vboxInformHost (PDEVICE_EXTENSION devExt)
    304321{
    305     dprintf (("VBoxMouse::vboxInformHost: %p\n", devExt));
     322    dprintf (("VBoxMouse::vboxInformHost: DevExt=%p, HostMouse=%d\n", devExt, devExt->HostMouse));
    306323
    307324    if (vboxIsVBGLInited ())
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