Minifilter design best practice

Hey!

We are writing a minifilter driver, and I’m the dev responsible to implement the first filtering logic in it. I could just register my filtering logic as the pre / post op callback for the said IRP but then it’d be a problem if someone else would like to handle the same IRP in the future, for different reasons, to implement his own logic. The design I thought of is implementing a “MinifilterDispatcher” class that will have its callbacks registered with the filter manager, maintain a mapping of IRP and the list of handlers to call for it (expose a method add/remove handler) and just invoke one after another in its callback (can support priority as well). It’s just something I came up with though, and I’m sure it’s a common obstacle teams face, is there a best practice for this?