ObReferenceObject can be called at DISPATCH_LEVEL, which means it both
can run at the same IRQL as an ordinary spin lock and that it must not
take very long to run. I can't imagine it calling back into my driver
because it's probably not much more than an interlocked increment.
Any specific reason ("no outcalls" is a little general) why
ObReferenceObject should not be safe to call while holding a spin
lock?
(so that I don't have to go through my code and change some of my spin
lock usage to a fast mutex)