Hi,everyone,now I have a question. I have 2 drivers. Both are WDM drivers
for Windows 2000. I
want driver A to control driver B. In driver A I use
IoBuildSynchronousFsdRequest() to build an Irp
which is passed to driver B using IoCallDriver() routine. This Irp is used
to remove the device of
driver B. The Irp is passed to the DispatchPnP() routine of driver B. I
build 2 Irps in driver A.
One Irp’s MinorFunction is IRP_MN_QUERY_REMOVE_DEVICE. Then I send the
other Irp to driver B who’s
MinorFunction is IRP_MN_REMOVE_DEVICE. After these operations I find that
the device of driver B
has been removed. I use SoftIce as my debugger. But when I turn to the
Device Manager I found
the the device of driver B was still there. The properity of this device
indicate that the device
is working properly. I don’t know why.That device of driver B is a virtual
disk device.
Furthermore when I restart my computer an ntoskrnl!KeBugCheckEx error
always occurs. The error code
is 44 which is MULTIPLE_IRP_COMPLETE_REQUESTS error. Why?
I also want to know that whether the PnP Irp must be sent by the PnP
Manager? Can these PnP Irp
be sent from a driver to another driver? If I want to implement this
function what can I do? I mean
I want use one driver to control another driver.
Thank you very much.
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
Hi,everyone,now I have a question. I have 2 drivers. Both are WDM drivers for Windows 2000. I
want driver A to control driver B. In driver A I use IoBuildSynchronousFsdRequest() to build an Irp
which is passed to driver B using IoCallDriver() routine. This Irp is used to remove the device of
driver B. The Irp is passed to the DispatchPnP() routine of driver B. I build 2 Irps in driver A.
One Irp’s MinorFunction is IRP_MN_QUERY_REMOVE_DEVICE. Then I send the other Irp to driver B who’s
MinorFunction is IRP_MN_REMOVE_DEVICE. After these operations I find that the device of driver B
has been removed. I use SoftIce as my debugger. But when I turn to the Device Manager I found
the the device of driver B was still there. The properity of this device indicate that the device
is working properly. I don’t know why.That device of driver B is a virtual disk device.
Furthermore when I restart my computer an ntoskrnl!KeBugCheckEx error always occurs. The error code
is 44 which is MULTIPLE_IRP_COMPLETE_REQUESTS error. Why?
I also want to know that whether the PnP Irp must be sent by the PnP Manager? Can these PnP Irp
be sent from a driver to another driver? If I want to implement this function what can I do? I mean
I want use one driver to control another driver.
Thank you very much.
???y˫???+.n?+???u?ڲ˛??^r*D???kN???r??zǧu??jy???^j???ׯ??? 0?j?b??(??(
> driver B. The Irp is passed to the DispatchPnP() routine of driver B. I
build 2 Irps in driver A.
One Irp’s MinorFunction is IRP_MN_QUERY_REMOVE_DEVICE. Then I send the
Assembling REMOVE IRP by hand is a strongly unrecommended practice. Only the
PnP manager must do this.
Do you really need this? Maybe there are better ways to do what you want?
Max
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com