diff options
Diffstat (limited to 'include/VBox/usblib-win.h')
-rw-r--r-- | include/VBox/usblib-win.h | 90 |
1 files changed, 57 insertions, 33 deletions
diff --git a/include/VBox/usblib-win.h b/include/VBox/usblib-win.h index 739e61622..ed8885bb1 100644 --- a/include/VBox/usblib-win.h +++ b/include/VBox/usblib-win.h @@ -41,7 +41,7 @@ DEFINE_GUID(GUID_CLASS_VBOXUSB, 0x873fdf, 0xCAFE, 0x80EE, 0xaa, 0x5e, 0x0, 0xc0, #define USBFLT_NTDEVICE_NAME_STRING L"\\Device\\VBoxUSBFlt" #define USBFLT_SYMBOLIC_NAME_STRING L"\\DosDevices\\VBoxUSBFlt" -#define USBMON_SERVICE_NAME "VBoxUSBMon" +#define USBMON_SERVICE_NAME_W L"VBoxUSBMon" #define USBMON_DEVICE_NAME "\\\\.\\VBoxUSBMon" #define USBMON_DEVICE_NAME_NT L"\\Device\\VBoxUSBMon" #define USBMON_DEVICE_NAME_DOS L"\\DosDevices\\VBoxUSBMon" @@ -73,11 +73,11 @@ DEFINE_GUID(GUID_CLASS_VBOXUSB, 0x873fdf, 0xCAFE, 0x80EE, 0xaa, 0x5e, 0x0, 0xc0, #define USBFLT_MAJOR_VERSION 1 #define USBFLT_MINOR_VERSION 3 -#define USBMON_MAJOR_VERSION 1 -#define USBMON_MINOR_VERSION 1 +#define USBMON_MAJOR_VERSION 5 +#define USBMON_MINOR_VERSION 0 -#define USBDRV_MAJOR_VERSION 3 -#define USBDRV_MINOR_VERSION 1 +#define USBDRV_MAJOR_VERSION 4 +#define USBDRV_MINOR_VERSION 0 #define SUPUSB_IOCTL_TEST CTL_CODE(FILE_DEVICE_UNKNOWN, 0x601, METHOD_BUFFERED, FILE_WRITE_ACCESS) #define SUPUSB_IOCTL_GET_DEVICE CTL_CODE(FILE_DEVICE_UNKNOWN, 0x603, METHOD_BUFFERED, FILE_WRITE_ACCESS) @@ -102,23 +102,33 @@ DEFINE_GUID(GUID_CLASS_VBOXUSB, 0x873fdf, 0xCAFE, 0x80EE, 0xaa, 0x5e, 0x0, 0xc0, #define SUPUSBFLT_IOCTL_REMOVE_FILTER CTL_CODE(FILE_DEVICE_UNKNOWN, 0x612, METHOD_BUFFERED, FILE_WRITE_ACCESS) #define SUPUSBFLT_IOCTL_CAPTURE_DEVICE CTL_CODE(FILE_DEVICE_UNKNOWN, 0x613, METHOD_BUFFERED, FILE_WRITE_ACCESS) #define SUPUSBFLT_IOCTL_RELEASE_DEVICE CTL_CODE(FILE_DEVICE_UNKNOWN, 0x614, METHOD_BUFFERED, FILE_WRITE_ACCESS) +#define SUPUSBFLT_IOCTL_RUN_FILTERS CTL_CODE(FILE_DEVICE_UNKNOWN, 0x615, METHOD_BUFFERED, FILE_WRITE_ACCESS) +#define SUPUSBFLT_IOCTL_SET_NOTIFY_EVENT CTL_CODE(FILE_DEVICE_UNKNOWN, 0x616, METHOD_BUFFERED, FILE_WRITE_ACCESS) +#define SUPUSBFLT_IOCTL_GET_DEVICE CTL_CODE(FILE_DEVICE_UNKNOWN, 0x617, METHOD_BUFFERED, FILE_WRITE_ACCESS) #pragma pack(4) #define MAX_FILTER_NAME 128 #define MAX_USB_SERIAL_STRING 64 +/* a user-mode handle that could be used for retriving device information + * from the monitor driver */ +typedef void* HVBOXUSBDEVUSR; + typedef struct { - uint16_t vid, did, rev; - char serial_hash[MAX_USB_SERIAL_STRING]; - + HVBOXUSBDEVUSR hDevice; uint8_t fAttached; uint8_t fHiSpeed; } USBSUP_GETDEV, *PUSBSUP_GETDEV; typedef struct { + USBDEVICESTATE enmState; +} USBSUP_GETDEV_MON, *PUSBSUP_GETDEV_MON; + +typedef struct +{ uint32_t u32Major; uint32_t u32Minor; } USBSUP_VERSION, *PUSBSUP_VERSION; @@ -230,6 +240,41 @@ typedef struct USBSUP_ISOCPKT aIsoPkts[8]; /* [in/out] isochronous packet descriptors */ } USBSUP_URB, *PUSBSUP_URB; +typedef struct +{ + union + { + /* in: event handle */ + void* hEvent; + /* out: result */ + int rc; + } u; +} USBSUP_SET_NOTIFY_EVENT, *PUSBSUP_SET_NOTIFY_EVENT; + +typedef struct +{ + uint16_t usVendorId; + uint16_t usProductId; + uint16_t usRevision; + uint16_t usAlignment; + char DrvKeyName[512]; +} USBSUP_DEVID, *PUSBSUP_DEVID; + +typedef struct +{ + USBSUP_DEVID DevId; + char szName[512]; + USBDEVICESTATE enmState; + bool fHiSpeed; +} USBSUP_DEVINFO, *PUSBSUP_DEVINFO; + +typedef struct +{ + int rc; + uint32_t cDevices; + USBSUP_DEVINFO aDevices[1]; +} USBSUP_GET_DEVICES, *PUSBSUP_GET_DEVICES; + #pragma pack() /* paranoia */ @@ -248,34 +293,13 @@ RT_C_DECLS_BEGIN * @param ppDevices Receives pointer to list of devices * @param pcbNumDevices Number of USB devices in the list */ -USBLIB_DECL(int) USBLibGetDevices(PUSBDEVICE *ppDevices, uint32_t *pcbNumDevices); +USBLIB_DECL(int) USBLibGetDevices(PUSBDEVICE *ppDevices, uint32_t *pcbNumDevices); -/** - * Check for USB device arrivals or removals - * - * @returns boolean - */ -USBLIB_DECL(bool) USBLibHasPendingDeviceChanges(void); +USBLIB_DECL(int) USBLibWaitChange(RTMSINTERVAL cMillies); -/** - * Capture specified USB device - * - * @returns VBox status code - * @param usVendorId Vendor id - * @param usProductId Product id - * @param usRevision Revision - */ -USBLIB_DECL(int) USBLibCaptureDevice(uint16_t usVendorId, uint16_t usProductId, uint16_t usRevision); +USBLIB_DECL(int) USBLibInterruptWaitChange(); -/** - * Release specified USB device to the host. - * - * @returns VBox status code - * @param usVendorId Vendor id - * @param usProductId Product id - * @param usRevision Revision - */ -USBLIB_DECL(int) USBLibReleaseDevice(uint16_t usVendorId, uint16_t usProductId, uint16_t usRevision); +USBLIB_DECL(int) USBLibRunFilters(); /** @} */ #endif |