What is the best way for drivers to communicate with each other?

I want to design my software on multiple drivers but I have a big question about designing to communicate between drivers to avoid iterative operation.

how do design drivers to share data that needs all drivers?

1- I create shared memory on the kernel but what happens on the different interrupt request levels?

2- I shared data on user mode and communicate with all drivers on shared data on user mode?

Send Requests from Driver X to Driver Y. Or use Bus Interfaces for callbacks (described here).

@“Peter_Viscarola_(OSR)” said:
Send Requests from Driver X to Driver Y. Or use Bus Interfaces for callbacks (described here).

What happened on request from different dispatch level drivers?

I do not understand your question.

Peter

If you are developing the driver and defining the interface, then YOU get to establish the contract. If you want drivers to call you only as PASSIVE_LEVEL, then that’s how you define the interface. If you want to accept requests from dispatch, then your driver has to be smarter about what it does when it receives the request.

I don’t understand the question even a little.

Receiving Requests at IRQL DISPATCH_LEVEL is a regular thing. It’s the default contract in WDF.

OP needs to put some more effort into clarity, so we can continue to put effort into helping him.

I used “Callbacks method” and my “Mini-filter” driver speaks with my “WFP” driver and vice versa.

OK… so you’re good now?

Excellent. Glad we could help.

Peter