Alternatives to Mutex Objects
Fast mutexes and guarded mutexes can be used as a replacement for mutex objects. A fast mutex or guarded mutex can be acquired and released faster than a mutex object, but they have the following restrictions:
Drivers cannot use the KeWaitForSingleObject or KeWaitForMultipleObjects routines to wait for a fast or guarded mutex. Thus, a driver cannot wait for a fast or guarded mutex and a dispatcher object simultaneously.
Drivers cannot acquire a fast or guarded mutex recursively. If a driver tries to acquire a fast or guarded mutex that it has already acquired, the driver will deadlock. A mutex object, however, can be acquired recursively.
For more information about fast and guarded mutexes, see Fast Mutexes and Guarded Mutexes.