if (current)
RtlpCreateUnicodeString (RemainingPath, current, NonPagedPool);
- RtlFreeUnicodeString (&PathString);
+ ExFreePool(PathString.Buffer);
*ReturnedObject = CurrentObject;
return STATUS_SUCCESS;
}
RtlFreeUnicodeString(&Header->Name);
RtlFreeUnicodeString(&RemainingPath);
- ExFreePool(Header);
+ ExFreePoolWithTag(Header, Header->ObjectType->Tag);
DPRINT("Create Failed\n");
return Status;
}
}
DPRINT("ObPerformRetentionChecks() = Freeing object\n");
- ExFreePool(Header);
+ ExFreePoolWithTag(Header, Header->ObjectType->Tag);
return(STATUS_SUCCESS);
}
ObpDeleteObjectWorkRoutine (IN PVOID Parameter)
{
PRETENTION_CHECK_PARAMS Params = (PRETENTION_CHECK_PARAMS)Parameter;
- /* ULONG Tag; */ /* See below */
+ ULONG Tag;
ASSERT(Params);
ASSERT(KeGetCurrentIrql() == PASSIVE_LEVEL); /* We need PAGED_CODE somewhere... */
- /* Turn this on when we have ExFreePoolWithTag
- Tag = Params->ObjectHeader->ObjectType->Tag; */
+ Tag = Params->ObjectHeader->ObjectType->Tag;
ObpDeleteObject(Params->ObjectHeader);
- ExFreePool(Params);
- /* ExFreePoolWithTag(Params, Tag); */
+ ExFreePoolWithTag(Params, Tag);
}