I am supporting an older driver. The driver filters volumes. I have added
code to filter shadow volumes as well. When VSS creates a snapshot, In PNP
Start call, I use IoForwardIrpSynchronously to pass the call down to the
device below me. Then, on return, I need to send the above mentioned IOCTL
to the ShadowCopy to retrieve the name of the original volume. I am using
IoBuildDeviceIoControlRequest to build my IRP.
The problem is that the call to the lower driver fails with invalid device
object error. The IOCTL is undocumented, so I am driving in the dark here.
Is this IOCTL intended to be sent to the top of the stack through the FS,
or is it OK to send this directly to the devices under the attached filter?
I need a quick way to associate a ShadowCopy with its original volume. If I
were rewriting the driver, it would be easier to implement, but I am forced
to work on an existing code base. So, I just was to setup a pointer
association in the device extensions between the volume and the shadow. I
have implemented all of the code, but I am getting stuck on the IOCTL error.
I fear I am going to have to do a lot more work, but if I could somehow
achieve this association, it would save me time, and help my client meet
their deadline.
Thanks.