Locking w/ the minidirector...

I’m halfway through a proof of principle redirector, and
locking is still a mystery to me; probably not a good
situation.

When I get calls from the wrapper, it looks like, from examining
the samples, I get called with all necessary locks held?

However, I’m not so sure about the case where I return
STATUS_PENDING from a LowIo routine, for example, my read
routine.

In this case, I’m get an I/O in another process context which
I will use to satisify the read request.

Now, I assume that the wrapper has already build a MDL for
me and that when I call RxLowIoGetBufferAddress() I get
a process-independant address for the buffer?

Do I have to call RxLowIoGetBufferAddress() in a particular
process / thread context, or can it be called from arbitrary
thread context.

And then that other question is, what kind of locks do I need
to acquire, if any?

The LOWIO_CONTEXT has a ERESOURCE… what is this for?

Thanks for any insight,

  • Joseph