for ERESOURCE, I’ll make it shorter, just call it ER
IR is in fact a kind of lock
it can be acquired either shared or exclusive
in shared mode, the lock will aloow multiple thread to acquire the same ER, and read the data simultaneously
in exclusive, the kernel will ensure that there can only be one thread is holding ER, thus the data can be access atomically
in the words, ER allow multiple thread to read and allow only one thread to write, so ER is often refferred as reader/writer lock
ER can only be used when IRQL < DISPATCH_LEVEL, which is <= APC_LEVEL