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