Index: /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-win.cpp
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-win.cpp	(revision 41642)
+++ /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-win.cpp	(revision 41643)
@@ -962,6 +962,5 @@
  * @param   pContext    Context specific pointer.
  */
-void vboxguestwinDpcHandler(PKDPC pDPC, PDEVICE_OBJECT pDevObj,
-                            PIRP pIrp, PVOID pContext)
+void vboxguestwinDpcHandler(PKDPC pDPC, PDEVICE_OBJECT pDevObj, PIRP pIrp, PVOID pContext)
 {
     PVBOXGUESTDEVEXT pDevExt = (PVBOXGUESTDEVEXT)pDevObj->DeviceExtension;
@@ -971,17 +970,17 @@
     if (ASMAtomicXchgU32(&pDevExt->u32MousePosChangedSeq, 0))
     {
-        Assert(KeGetCurrentIrql() == DISPATCH_LEVEL);
         /* we need a lock here to avoid concurrency with the set event ioctl handler thread,
          * i.e. to prevent the event from destroyed while we're using it */
+        Assert(KeGetCurrentIrql() == DISPATCH_LEVEL);
         KeAcquireSpinLockAtDpcLevel(&pDevExt->win.s.MouseEventAccessLock);
-        if (pDevExt->win.s.pfnMouseNotify)
-        {
-            pDevExt->win.s.pfnMouseNotify(pDevExt->win.s.pvMouseNotify);
-        }
+
+        if (pDevExt->MouseNotifyCallback.pfnNotify)
+            pDevExt->MouseNotifyCallback.pfnNotify(pDevExt->MouseNotifyCallback.pvUser);
+
         KeReleaseSpinLockFromDpcLevel(&pDevExt->win.s.MouseEventAccessLock);
     }
 
     /* Process the wake-up list we were asked by the scheduling a DPC
-     *  in vboxguestwinIsrHandler(). */
+     * in vboxguestwinIsrHandler(). */
     VBoxGuestWaitDoWakeUps(pDevExt);
 }
Index: /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-win.h
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-win.h	(revision 41642)
+++ /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-win.h	(revision 41643)
@@ -117,8 +117,7 @@
     PVBOXGUESTSESSION pKernelSession;
 
-
+    /** Spinlock protecting MouseNotifyCallback. Required since the consumer is
+     *  in a DPC callback and not the ISR. */
     KSPIN_LOCK MouseEventAccessLock;
-    PFNVBOXMOUSENOTIFYCB pfnMouseNotify;
-    void *pvMouseNotify;
 } VBOXGUESTDEVEXTWIN, *PVBOXGUESTDEVEXTWIN;
 
