static void VBoxServiceCB(PDEVICE_OBJECT DeviceObject, PMOUSE_INPUT_DATA InputDataStart, PMOUSE_INPUT_DATA InputDataEnd, PULONG InputDataConsumed) { PVBOXMOUSE_DEVEXT pDevExt; LOGF_ENTER(); pDevExt = (PVBOXMOUSE_DEVEXT) DeviceObject->DeviceExtension; VBoxDrvNotifyServiceCB(pDevExt, InputDataStart, InputDataEnd, InputDataConsumed); LOGF_LEAVE(); }
static DECLCALLBACK(void) vboxNewProtMouseEventCb(void *pvContext) { PVBOXMOUSE_DEVEXT pDevExt = (PVBOXMOUSE_DEVEXT)ASMAtomicUoReadPtr((void * volatile *)&g_ctx.pCurrentDevExt); if (pDevExt) { #define VBOXMOUSE_POLLERTAG 'PMBV' NTSTATUS Status = IoAcquireRemoveLock(&pDevExt->RemoveLock, pDevExt); if (NT_SUCCESS(Status)) { ULONG InputDataConsumed = 0; VBoxDrvNotifyServiceCB(pDevExt, &g_ctx.LastReportedData, &g_ctx.LastReportedData + 1, &InputDataConsumed); IoReleaseRemoveLock(&pDevExt->RemoveLock, pDevExt); } else { WARN(("IoAcquireRemoveLock failed, Status (0x%x)", Status)); } } else { WARN(("no current pDevExt specified")); } }