D
Developer2718281828
Guest
Greetings.
I am writing a driver for W7Pro64 to handle multiple identical PCI cards. DriverEntry is invoked and the Driver Object successfully created, registering my DeviceAdd routine. I have 3 PCI cards installed, and DeviceAdd is called three times, creating the WDF Device Object successfully. It also makes calls to WdfMemoryCreate to obtain non-paged memory in the course of building various data structures (in case this matters). Each call registers a unique PrepareHardware callback for each of the three devices (this to aid in debug--each PrepareHardware routine does the same thing). Following the three DeviceAdd calls, Windows makes a call to the first PrepareHardware (which appears to follow all the good health rules and returns with STATUS_SUCCESS). Windows then calls the DeviceD0Entry for the first card, which does nothing other than to return with STATUS_SUCCESS. Upon return, the Windows boot process hangs, never to return. PrepareHardware for the second and third cards are never called.
I've tried simplifying PrepareHardware to consist of just a successful return, but still Windows boot hangs before calling the PrepareHardware for the second or third cards.
Anything jumps to mind that might cause this? Can I use WdfMemoryCreate in DeviceAdd?
Any help would be appreciated.
Continue reading...
I am writing a driver for W7Pro64 to handle multiple identical PCI cards. DriverEntry is invoked and the Driver Object successfully created, registering my DeviceAdd routine. I have 3 PCI cards installed, and DeviceAdd is called three times, creating the WDF Device Object successfully. It also makes calls to WdfMemoryCreate to obtain non-paged memory in the course of building various data structures (in case this matters). Each call registers a unique PrepareHardware callback for each of the three devices (this to aid in debug--each PrepareHardware routine does the same thing). Following the three DeviceAdd calls, Windows makes a call to the first PrepareHardware (which appears to follow all the good health rules and returns with STATUS_SUCCESS). Windows then calls the DeviceD0Entry for the first card, which does nothing other than to return with STATUS_SUCCESS. Upon return, the Windows boot process hangs, never to return. PrepareHardware for the second and third cards are never called.
I've tried simplifying PrepareHardware to consist of just a successful return, but still Windows boot hangs before calling the PrepareHardware for the second or third cards.
Anything jumps to mind that might cause this? Can I use WdfMemoryCreate in DeviceAdd?
Any help would be appreciated.
Continue reading...