From: canopy49 on
If at any time IOCTL_MINIPORT_PROCESS_SERVICE_IRP is sent to a
storport miniport adapter FDO in Vista or Windows Server 2008, it
causes removal to hang forever. I traced this down to storport!
RaidAdapterDeviceControlIrp calls IoAcquireRemoveLock, but never calls
IoReleaseRemoveLock each time this particular ioctl is received. This
means at removal time when storport calls IoReleaseRemoveLockAndWait
it hangs forever. Is there any possible workaround or chance this
might be fixed?
From: canopy49 on
Has anyone else tried writing a virtual miniport? This seems like a
critical problem that would prevent it being possible. It is blocking
our release and we don't know where to go.
From: chris.aseltine on
On Jul 29, 10:08 am, canop...(a)gmail.com wrote:

> Has anyone else tried writing a virtual miniport? This seems like a
> critical problem that would prevent it being possible. It is blocking
> our release and we don't know where to go.

If you're certain this is an issue not with your code, I would open a
ticket with PSS.
From: Alexander Grigoriev on
Do you have HwStorCompleteServiceIrp routine? What your
HwStorProcessServiceRequest looks like? Does it ever call IoCompleteRequest?

<canopy49(a)gmail.com> wrote in message
news:67a22c19-3e87-49cc-9cc8-053883fdc4bb(a)i20g2000prf.googlegroups.com...
> If at any time IOCTL_MINIPORT_PROCESS_SERVICE_IRP is sent to a
> storport miniport adapter FDO in Vista or Windows Server 2008, it
> causes removal to hang forever. I traced this down to storport!
> RaidAdapterDeviceControlIrp calls IoAcquireRemoveLock, but never calls
> IoReleaseRemoveLock each time this particular ioctl is received. This
> means at removal time when storport calls IoReleaseRemoveLockAndWait
> it hangs forever. Is there any possible workaround or chance this
> might be fixed?


From: canopy49 on
On Jul 30, 9:26 am, "Alexander Grigoriev" <al...(a)earthlink.net> wrote:
> Do you have HwStorCompleteServiceIrp routine?

Yes, just a stub that doesn't do anything. It is the very last thing
called before the hang. But not having this routine has no effect on
the problem.

VOID HwCompleteServiceIrp(PVOID DeviceExtension)
{
}


> What your HwStorProcessServiceRequest looks like?
> Does it ever call IoCompleteRequest?

Even when very simple like below it fails. If this routine were
somehow able to release the remove lock, it would solve the problem
but I did not find a way to access this object.

VOID HwProcessServiceRequest(IN PVOID DeviceExtension, IN PVOID Irp)
{
Irp->IoStatus.Status = STATUS_SUCCESS;

IoCompleteRequest(Irp, IO_NO_INCREMENT);
}