VBoxMF.h revision c7814cf6e1240a519cbec0441e033d0e2470ed00
e12a4168124cdb9ebd1f61bc4a93f765bf399befvboxsync * VBox Mouse filter header
c7814cf6e1240a519cbec0441e033d0e2470ed00vboxsync * Copyright (C) 2011-2012 Oracle Corporation
e12a4168124cdb9ebd1f61bc4a93f765bf399befvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
e12a4168124cdb9ebd1f61bc4a93f765bf399befvboxsync * available from http://www.virtualbox.org. This file is free software;
e12a4168124cdb9ebd1f61bc4a93f765bf399befvboxsync * you can redistribute it and/or modify it under the terms of the GNU
e12a4168124cdb9ebd1f61bc4a93f765bf399befvboxsync * General Public License (GPL) as published by the Free Software
e12a4168124cdb9ebd1f61bc4a93f765bf399befvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
e12a4168124cdb9ebd1f61bc4a93f765bf399befvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
e12a4168124cdb9ebd1f61bc4a93f765bf399befvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
7519a1c4323fa86fbb19a36a91cd25abfd7af714vboxsync# define _InterlockedAddLargeStatistic _InterlockedAddLargeStatistic_StupidDDKVsCompilerCrap
e12a4168124cdb9ebd1f61bc4a93f765bf399befvboxsync#define IOCTL_INTERNAL_MOUSE_CONNECT CTL_CODE(FILE_DEVICE_MOUSE, 0x0080, METHOD_NEITHER, FILE_ANY_ACCESS)
b0a3d0ec5780199a2f379da63c59ccf48f1a73b9vboxsynctypedef VOID (*PFNSERVICECB)(PDEVICE_OBJECT DeviceObject, PMOUSE_INPUT_DATA InputDataStart,
e12a4168124cdb9ebd1f61bc4a93f765bf399befvboxsync PMOUSE_INPUT_DATA InputDataEnd, PULONG InputDataConsumed);
e12a4168124cdb9ebd1f61bc4a93f765bf399befvboxsync} INTERNAL_MOUSE_CONNECT_DATA, *PINTERNAL_MOUSE_CONNECT_DATA;
e12a4168124cdb9ebd1f61bc4a93f765bf399befvboxsync PDEVICE_OBJECT pdoMain; /* PDO passed to VBoxDrvAddDevice */
e12a4168124cdb9ebd1f61bc4a93f765bf399befvboxsync PDEVICE_OBJECT pdoSelf; /* our PDO created in VBoxDrvAddDevice*/
e12a4168124cdb9ebd1f61bc4a93f765bf399befvboxsync PDEVICE_OBJECT pdoParent; /* Highest PDO in chain before we've attached our filter */
e12a4168124cdb9ebd1f61bc4a93f765bf399befvboxsync BOOLEAN bHostMouse; /* Indicates if we're filtering the chain with emulated i8042 PS/2 adapter */
e12a4168124cdb9ebd1f61bc4a93f765bf399befvboxsync INTERNAL_MOUSE_CONNECT_DATA OriginalConnectData; /* Original connect data intercepted in IOCTL_INTERNAL_MOUSE_CONNECT */
e12a4168124cdb9ebd1f61bc4a93f765bf399befvboxsync VMMDevReqMouseStatus *pSCReq; /* Preallocated request to use in pfnServiceCB */
e12a4168124cdb9ebd1f61bc4a93f765bf399befvboxsync/* Interface functions */
e12a4168124cdb9ebd1f61bc4a93f765bf399befvboxsync NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath);
e12a4168124cdb9ebd1f61bc4a93f765bf399befvboxsyncNTSTATUS VBoxDrvAddDevice(IN PDRIVER_OBJECT Driver, IN PDEVICE_OBJECT PDO);
e12a4168124cdb9ebd1f61bc4a93f765bf399befvboxsync/* IRP handlers */
e12a4168124cdb9ebd1f61bc4a93f765bf399befvboxsyncNTSTATUS VBoxIrpPassthrough(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
e12a4168124cdb9ebd1f61bc4a93f765bf399befvboxsyncNTSTATUS VBoxIrpInternalIOCTL(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
e12a4168124cdb9ebd1f61bc4a93f765bf399befvboxsyncNTSTATUS VBoxIrpPnP(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
dcd56bc53b08f98a6dc6a33f805fc8fd2c0393b6vboxsyncNTSTATUS VBoxIrpPower(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
e12a4168124cdb9ebd1f61bc4a93f765bf399befvboxsync/* Internal functions */
46ff7af86c9b48efa8270af373c8d5dcfa7d05c5vboxsyncVOID VBoxDrvNotifyServiceCB(PVBOXMOUSE_DEVEXT pDevExt, PMOUSE_INPUT_DATA InputDataStart, PMOUSE_INPUT_DATA InputDataEnd, PULONG InputDataConsumed);
e12a4168124cdb9ebd1f61bc4a93f765bf399befvboxsync#endif /*VBOXMF_H*/