Monitor USB Device interrupt in User mode - repost


We have a composite USB camera device (WDM and DirectShow compatible), serviced by [url removed, login to view] and [url removed, login to view] under Windows 7/8, that includes a push button. The camera device push button is not an HID. No device INF or additional drivers are required.

In Device Manager, the camera appears in Imaging Devices (thru [url removed, login to view]) and USB Controllers as "Usb Composite Device" (thru [url removed, login to view]).

The camera software includes a now unsupported DLL (we asked the OEM) that appears to run a thread or threads that monitors the interrupt packets sent, and sends an event to the application. We can see the interrupt packet bytes using a USB filter driver utility, so we know that [url removed, login to view] is passing the interrupt packets. We also know this happens because we can run an alternative app that does not use the unsupported DLL at all, and still see the interrupt packets.

We've examined the OEM DLL exported and used function lists. There are calls to CreateFile, CreateThread, DeviceIoControl, CreateSemaphore, Initialize|Enter|DeleteCriticalSection, all of which suggest that a monitor thread is used.

We tried setting up threads with calls to CreateFile (using the relevent USB VID/PID and SetupDi* calls to create the device path), ReadFile and/or DeviceIOControl, but without success. Everything we tried returns Error#1 (wrong function) or similar. Since the now unsupported DLL does manage to do this in USER MODE, obviously there is a solution.

The Project:

Create some sample code (perhaps 100 lines of code) that successfully monitors the USB packets so that when the button is pressed, an event is created that can be passed to the host app. Please note that a pass-through driver is NOT the solution.

The Selected Freelancer must be able to demonstrate knowledge in dealing with USB devices in the Windows 7 environment, and will most likely have experience with USB firmware.

Our aim is is remove the dependency on the unsupported DLL, to provide full device access for other software projects.

Skills: C Programming, Windows API

See more: usb camera, usb driver, usb interrupt monitor, monitor usb device dll, windows usb interrupt monitor, composite usb device, windows app freelancer, windows 8 freelancer, use experience in freelancer, thread programming, software projects freelancer, setting up a project on freelancer, setting up a as freelancer, run freelancer on windows 7, project manager at freelancer, programming monitor, pid programming, freelancer windows app, freelancer software programming, freelancer remove project, freelancer projects programming, freelancer projects in c++, freelancer projects in c, freelancer path 1.1, freelancer in path

Project ID: #4176977