How can I reparse a device to a file in my minifilter driver in Vista?



Hi all.
How can I reparse a device to a file in my minifilter driver?
I need to handle RAW disk access from my minifiler driver. But
minifilter is a file system filter driver. It should be not received
all read/write requests of raw device such as disk, IDE, SCSI, etc.
So I reparse device to a file in PreCreate of my minifilter driver.
When I can handle all read/write requests in the minifilter. It is
working well in WinXP. But it should be BSOD in Vista anyway. And
BugCheck is DRIVER_RETURNED_STATUS_REPARSE_FOR_VOLUME_OPEN. It means
that I can't return reparse when open a volume. I have read the codes
of WRK. It bug check at following place.

//
// No driver should return this status for a volume open.
// If they do then we would skip the security check as override is
true.
// To catch that case we bugcheck here.
//

if (op->Override) {
KeBugCheckEx(DRIVER_RETURNED_STATUS_REPARSE_FOR_VOLUME_OPEN,
(ULONG_PTR)parseDeviceObject,
(ULONG_PTR)deviceObject,
(ULONG_PTR)CompleteName,
(ULONG_PTR)ioStatus.Information
);

Then Override is member of OPEN_PACKET. This is its comment.

//
// The following is used to indicate that an open of a device has been
// performed and the access check for the device has already been
done,
// but because of a reparse, the I/O system has been called again for
// the same device. Since the access check has already been made, the
// state cannot handle being called again (access was already granted)
// and it need not anyway since the check has already been made.
//

BOOLEAN Override;

Why can I reparse it in WinXP? How can I do this in Vista?

Thanks
Doskey.
.