ObjectTypeInitializer.PoolType = NonPagedPool;
ObjectTypeInitializer.DeleteProcedure = ExpDeleteMutant;
ObjectTypeInitializer.ValidAccessMask = MUTANT_ALL_ACCESS;
+ ObjectTypeInitializer.InvalidAttributes = OBJ_OPENLINK;
Status = ObCreateObjectType(&Name, &ObjectTypeInitializer, NULL, &ExMutantObjectType);
if (!NT_SUCCESS(Status)) return FALSE;
return TRUE;
/* Check for success */
if(NT_SUCCESS(Status))
{
- /* Initalize the Kernel Mutant */
+ /* Initialize the Kernel Mutant */
DPRINT("Initializing the Mutant\n");
KeInitializeMutant(Mutant, InitialOwner);
/* Open the Object */
Status = ObReferenceObjectByHandle(MutantHandle,
- MUTANT_QUERY_STATE,
+ 0, /* No access rights required */
ExMutantObjectType,
PreviousMode,
(PVOID*)&Mutant,