I have inherited a device driver project (my background is user mode applications). The driver works successfully on windows 7 32 bit. My task has been to port this driver to 64 bit windows 7 (it will be targetting windows 10 soon).
I have built the driver with the X64 checked build enviroment in the windows 7 ddk. I can installed the driver and see the device in devicemanager and USB view.
The driver works by creating a windows file object and the client using the usual Win32 file IO command to read and write data.
The driver code (acquired from a third party many years ago) is based on the loopback example from "programming the windows driver model, 2nd Edition".
The driver will successfully plug and play, the device properties can be examined in device manager, and the client can successfully open the virtual file handle representing the device. I have test signed the device and the machine is currently in test signing mode (i.e. I have call "bcdedit set testsigning on"
However, when I attempt to read or write data to the device, when I submit my URB to the device stack, my call to IoCallDriver will return STATUS_PENDING, but not return any data. The only way the completion routine is called is when I physically unplug the usb cable to the device.
As far as I can tell, setup prior to the call to IoCallDriver matches the recommended best coding technique as shown here. https://docs.microsoft.com/en-us/windows-hardware/drivers/usbcon/send-requests-to-the-usb-driver-stack.n
I'm hoping someone might be able to shed some light on why this might not work in 64bit windows, or how I might find out what is going on further down the usb stack.
It looks like you're new here. If you want to get involved, click one of these buttons!
|Upcoming OSR Seminars|
|Writing WDF Drivers||21 Oct 2019||OSR Seminar Space & ONLINE|
|Internals & Software Drivers||18 Nov 2019||Dulles, VA|
|Kernel Debugging||30 Mar 2020||OSR Seminar Space|
|Developing Minifilters||27 Apr 2020||OSR Seminar Space & ONLINE|