ExAcquireSpinLockShared for Linked List Paged Memory

So in a MiniFilter I have a LIST_ENTRY linked list that occasionally may add or remove an item with user-mode communications. The rest of the time it’s just looking things up. But since ExAcquireSpinLockShared increases the IRQL to Dispatch Level, does that mean all my list entries have to be non-paged? Seems a waste since everywhere else it’s at passive level. Is there a better reader-writer type API in place?

TIA!!

Found something: FltAcquirePushLockShared

Looks like that’s what I want. I knew there would have to be something.

See also ERESOURCE and ExAcquireResourceExclusiveLite/ExAcquireResourceSharedLite:

Introduction to ERESOURCE Routines
https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/introduction-to-eresource-routines