Use a guarded mutex instead -- you're confused with what's actually going on.
Fast mutexes use events, Guarded mutexes use gates. Both are initialized by their respective Ke/Ex/InitializeFast/Guarded mutex.
On 28-Dec-08, at 3:06 PM, pschweitzer@svn.reactos.org wrote:
Author: pschweitzer Date: Sun Dec 28 14:06:08 2008 New Revision: 38432
URL: http://svn.reactos.org/svn/reactos?rev=38432&view=rev Log: FsRtlInitializeLargeMcb: Initialize fast mutex gate
Modified: branches/pierre-fsd/ntoskrnl/fsrtl/largemcb.c
Modified: branches/pierre-fsd/ntoskrnl/fsrtl/largemcb.c URL: http://svn.reactos.org/svn/reactos/branches/pierre-fsd/ntoskrnl/fsrtl/largem... = = = = = = = = ====================================================================== --- branches/pierre-fsd/ntoskrnl/fsrtl/largemcb.c [iso-8859-1] (original) +++ branches/pierre-fsd/ntoskrnl/fsrtl/largemcb.c [iso-8859-1] Sun Dec 28 14:06:08 2008 @@ -130,7 +130,9 @@ IN POOL_TYPE PoolType) { Mcb->FastMutex = ExAllocateFromNPagedLookasideList(&FsRtlFastMutexLookasideList);
ExInitializeFastMutex(Mcb->FastMutex);
KeInitializeGate((PKGATE)&(Mcb->FastMutex->Gate));
FsRtlInitializeBaseMcb(&(Mcb->BaseMcb), PoolType);
}
Best regards, Alex Ionescu