Storage Filter Drivers

Hello, I’m just learning about storage filter drivers. The documentation on them is not so clear. How do storage filter drivers attach to other storage devices? For example I have a SATA drive and I would like to filter some operations. I know how to do it from a casual WDM/KMDF driver with IRP hooks. But how would this look like in a storage filter driver? Also there aren’t many examples of storage filters.

I believe you need to be in the list of Upper/Lower filters for that particular class you are interested in to filter.

Key: HKLM\System\CurrentControlSet\Control\Class{WhateverClass}
Value: UpperFilters or LowerFilters
Data: MultiSZ - contains on each line the name of a filter driver

Check for example:
{4d36e967-e325-11ce-bfc1-08002be10318} which is DiskDrive class
UpperFilters: PartMgr
LowerFilters: EhStorClass

and so on…

I though the documentation on this is actually pretty plentiful, but to be honest I haven’t looked at it in a while.

Gabriel
www.kasardia.com

Thank you very much for your answer Gabriel.

Be aware that storage filters are in chaos at this time. In some cases commands are sent directly to the PDO, bypassing the filter drivers in the stack. In other cases I/O is handled in layers above filter drivers which again see nothing. It never used to be this way, but times have changed.

Hi Sven,
Can you please give me more information about this?
I have a disk lower filter driver that used to work fine, now in Windows 8.1 with the new miniport it is suddenly not catching any IRPs. The writers of the storage controller miniport say that they changed their model from SCSIPORT to STORPORT. I am wondering if that has anything to do with my filter not working now.
Thanks