Q: programmable restart of a 64-bit driver from a 32-bit application

  • Thread starter Vladimir Chugunov
  • Start date
V

Vladimir Chugunov

Hello,

we have an application that need to restart network driver to apply
configuration changes without restarting the system. We are using
SetupDi* functions to do this.

The 32-bits version of the application works fine on 32-bits system as
well as 64-bits version works fine on the 64-bits Windows. But in case
of 32-bits application on 64-bits system the SetupDiCallClassInstaller()
function returns FALSE and reports 0xE0000235 code through GetLastError().

Is there a possibility to restart driver or just to propagate the
setting changes to the driver from 32-bits application?

Thanks in advance,

Vladimir.
 
G

Gary G. Little

Silly question: you are of course using a 64 bit driver on the 64 bit
system?

At first glance, E0000235 is a customer error message, so when does your
driver generate that error message, or if using a 3rd party driver what
conditions dictate the return of that error message?
 
V

Vladimir Chugunov

Gary said:
Silly question: you are of course using a 64 bit driver on the 64 bit
system?
Yes, of course.
At first glance, E0000235 is a customer error message, so when does your
driver generate that error message, or if using a 3rd party driver what
conditions dictate the return of that error message?
The error isn't generated by the driver. It is reported by the
SetupDiCallClassInstaller function that we are using to stop and then
start the driver - just to propagate changes made in the registry to the
driver.

Are there some other possibilities to apply changes to the working
driver without stopping application or restarting the system?

Thanks in advance,
Vladimir.
 
G

Gary G. Little

To stop and start a driver all handles to it have to be released/closed.
thus your application, while it does not have to close does have to close
any handle it has to the driver. After that, the driver may still not unload
if it has an outstanding IRP which has no cancel routine and thus must
timeout.

You could always create an IOCTL that would tell th e driver to
re-initialize itself, with all the caveates and warts that has.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top