- Perform all allocations / frees in dedicated alloc / free function

svn path=/trunk/; revision=47714
This commit is contained in:
Johannes Anderwald 2010-06-09 14:44:46 +00:00
parent db5472b519
commit 1bb04a5142
8 changed files with 49 additions and 50 deletions

View file

@ -530,7 +530,7 @@ KsAllocateDeviceHeader(
return STATUS_INVALID_PARAMETER;
/* allocate a device header */
Header = ExAllocatePoolWithTag(PagedPool, sizeof(KSIDEVICE_HEADER), TAG_DEVICE_HEADER);
Header = AllocateItem(PagedPool, sizeof(KSIDEVICE_HEADER));
/* check for success */
if (!Header)
@ -597,7 +597,7 @@ KsFreeDeviceHeader(
return;
KspFreeCreateItems(&Header->ItemList);
ExFreePoolWithTag(Header, TAG_DEVICE_HEADER);
FreeItem(Header);
}
/*
@ -641,7 +641,7 @@ KsAllocateObjectHeader(
/* check for an file object */
/* allocate the object header */
ObjectHeader = ExAllocatePoolWithTag(NonPagedPool, sizeof(KSIOBJECT_HEADER), TAG_DEVICE_HEADER);
ObjectHeader = AllocateItem(NonPagedPool, sizeof(KSIOBJECT_HEADER));
if (!ObjectHeader)
return STATUS_INSUFFICIENT_RESOURCES;
@ -659,10 +659,10 @@ KsAllocateObjectHeader(
{
/* copy object class */
ObjectHeader->ObjectClass.MaximumLength = IoStack->FileObject->FileName.MaximumLength;
ObjectHeader->ObjectClass.Buffer = ExAllocatePoolWithTag(NonPagedPool, ObjectHeader->ObjectClass.MaximumLength, TAG_DEVICE_HEADER);
ObjectHeader->ObjectClass.Buffer = AllocateItem(NonPagedPool, ObjectHeader->ObjectClass.MaximumLength);
if (!ObjectHeader->ObjectClass.Buffer)
{
ExFreePoolWithTag(ObjectHeader, TAG_DEVICE_HEADER);
FreeItem(ObjectHeader);
return STATUS_INSUFFICIENT_RESOURCES;
}
RtlCopyUnicodeString(&ObjectHeader->ObjectClass, &IoStack->FileObject->FileName);
@ -726,7 +726,7 @@ KsFreeObjectHeader(
if (ObjectHeader->ObjectClass.Buffer)
{
/* release object class buffer */
ExFreePoolWithTag(ObjectHeader->ObjectClass.Buffer, TAG_DEVICE_HEADER);
FreeItem(ObjectHeader->ObjectClass.Buffer);
}
if (ObjectHeader->Unknown)
@ -739,7 +739,7 @@ KsFreeObjectHeader(
KspFreeCreateItems(&ObjectHeader->ItemList);
/* free object header */
ExFreePoolWithTag(ObjectHeader, TAG_DEVICE_HEADER);
FreeItem(ObjectHeader);
}
@ -914,11 +914,11 @@ KsAllocateObjectCreateItem(
if (AllocateEntry)
{
/* allocate create item */
Item = ExAllocatePool(NonPagedPool, sizeof(KSOBJECT_CREATE_ITEM));
Item = AllocateItem(NonPagedPool, sizeof(KSOBJECT_CREATE_ITEM));
if (!Item)
{
/* no memory */
ExFreePool(CreateEntry);
FreeItem(CreateEntry);
return STATUS_INSUFFICIENT_RESOURCES;
}
@ -931,7 +931,7 @@ KsAllocateObjectCreateItem(
Item->ObjectClass.MaximumLength = CreateItem->ObjectClass.MaximumLength;
/* copy object class */
Item->ObjectClass.Buffer = ExAllocatePool(NonPagedPool, Item->ObjectClass.MaximumLength);
Item->ObjectClass.Buffer = AllocateItem(NonPagedPool, Item->ObjectClass.MaximumLength);
if (!Item->ObjectClass.Buffer)
{
/* release resources */
@ -1747,7 +1747,7 @@ KsCreateBusEnumObject(
Length = wcslen(BusIdentifier) * sizeof(WCHAR);
Length += sizeof(BUS_ENUM_DEVICE_EXTENSION);
BusDeviceExtension = ExAllocatePool(NonPagedPool, Length);
BusDeviceExtension = AllocateItem(NonPagedPool, Length);
if (!BusDeviceExtension)
{
/* not enough memory */
@ -1772,12 +1772,12 @@ KsCreateBusEnumObject(
BusDeviceExtension->ServicePath.Length = 0;
BusDeviceExtension->ServicePath.MaximumLength = Length;
BusDeviceExtension->ServicePath.Buffer = ExAllocatePool(NonPagedPool, Length);
BusDeviceExtension->ServicePath.Buffer = AllocateItem(NonPagedPool, Length);
if (!BusDeviceExtension->ServicePath.Buffer)
{
/* not enough memory */
ExFreePool(BusDeviceExtension);
FreeItem(BusDeviceExtension);
return STATUS_INSUFFICIENT_RESOURCES;
}
@ -1798,8 +1798,8 @@ KsCreateBusEnumObject(
/* check for success */
if (!NT_SUCCESS(Status))
{
ExFreePool(BusDeviceExtension->ServicePath.Buffer);
ExFreePool(BusDeviceExtension);
FreeItem(BusDeviceExtension->ServicePath.Buffer);
FreeItem(BusDeviceExtension);
return Status;
}
@ -1808,8 +1808,8 @@ KsCreateBusEnumObject(
if (!NT_SUCCESS(Status))
{
ExFreePool(BusDeviceExtension->ServicePath.Buffer);
ExFreePool(BusDeviceExtension);
FreeItem(BusDeviceExtension->ServicePath.Buffer);
FreeItem(BusDeviceExtension);
return Status;
}
@ -1836,8 +1836,8 @@ KsCreateBusEnumObject(
}
/* free device extension */
ExFreePool(BusDeviceExtension->ServicePath.Buffer);
ExFreePool(BusDeviceExtension);
FreeItem(BusDeviceExtension->ServicePath.Buffer);
FreeItem(BusDeviceExtension);
return STATUS_DEVICE_REMOVED;
}
@ -2795,7 +2795,7 @@ KsRegisterFilterWithNoKSPins(
}
/* free the symbolic link list */
ExFreePool(SymbolicLinkList);
FreeItem(SymbolicLinkList);
}
return Status;

View file

@ -239,7 +239,7 @@ KspReadMediaCategory(
/* allocate buffer for the registry key */
Path.Length = 0;
Path.MaximumLength = MediaPath.MaximumLength + GuidString.MaximumLength;
Path.Buffer = ExAllocatePool(NonPagedPool, Path.MaximumLength);
Path.Buffer = AllocateItem(NonPagedPool, Path.MaximumLength);
if (!Path.Buffer)
{
/* not enough memory */
@ -262,7 +262,7 @@ KspReadMediaCategory(
DPRINT("ZwOpenKey() status 0x%08lx %S\n", Status, Path.Buffer);
/* free path buffer */
ExFreePool(Path.Buffer);
FreeItem(Path.Buffer);
/* check for success */
if (!NT_SUCCESS(Status))
@ -281,7 +281,7 @@ KspReadMediaCategory(
}
/* allocate buffer to read key info */
KeyInfo = (PKEY_VALUE_PARTIAL_INFORMATION) ExAllocatePool(NonPagedPool, Size);
KeyInfo = (PKEY_VALUE_PARTIAL_INFORMATION) AllocateItem(NonPagedPool, Size);
if (!KeyInfo)
{
/* not enough memory */
@ -298,7 +298,7 @@ KspReadMediaCategory(
if (!NT_SUCCESS(Status))
{
/* failed to read key */
ExFreePool(KeyInfo);
FreeItem(KeyInfo);
return Status;
}
@ -545,13 +545,13 @@ KspPinPropertyHandler(
if (KeyInfo->DataLength + sizeof(WCHAR) > IoStack->Parameters.DeviceIoControl.OutputBufferLength)
{
Status = STATUS_BUFFER_OVERFLOW;
ExFreePool(KeyInfo);
FreeItem(KeyInfo);
break;
}
RtlMoveMemory(Irp->UserBuffer, &KeyInfo->Data, KeyInfo->DataLength);
((LPWSTR)Irp->UserBuffer)[KeyInfo->DataLength / sizeof(WCHAR)] = L'\0';
ExFreePool(KeyInfo);
FreeItem(KeyInfo);
break;
case KSPROPERTY_PIN_PROPOSEDATAFORMAT:
Size = sizeof(KSDATAFORMAT);

View file

@ -292,7 +292,7 @@ KspEnableEvent(
else
{
/* allocate it from nonpaged pool */
EventEntry = ExAllocatePool(NonPagedPool, Size);
EventEntry = AllocateItem(NonPagedPool, Size);
}
if (!EventEntry)
@ -529,7 +529,7 @@ KsDiscardEvent(
}
/* free event entry */
ExFreePool(EventEntry);
FreeItem(EventEntry);
}

View file

@ -45,7 +45,7 @@ KsLoadResource(
if (NT_SUCCESS(Status))
{
/* allocate resource buffer */
Result = ExAllocatePool(PoolType, Size);
Result = AllocateItem(PoolType, Size);
if (Result)
{
/* copy resource */
@ -75,7 +75,7 @@ KsLoadResource(
if (Result)
{
/* free resource buffer in case of a failure */
ExFreePool(Result);
FreeItem(Result);
}
}
/* done */
@ -127,7 +127,7 @@ KsGetImageNameAndResourceId(
/* allocate image name buffer */
ImageName->MaximumLength = sizeof(ImagePath) + ImageLength;
ImageName->Buffer = ExAllocatePool(PagedPool, ImageName->MaximumLength);
ImageName->Buffer = AllocateItem(PagedPool, ImageName->MaximumLength);
/* check for success */
if (!ImageName->Buffer)
@ -145,7 +145,7 @@ KsGetImageNameAndResourceId(
if (!NT_SUCCESS(Status))
{
/* unexpected error */
ExFreePool(ImageName->Buffer);
FreeItem(ImageName->Buffer);
return Status;
}
@ -154,13 +154,13 @@ KsGetImageNameAndResourceId(
Status = KspQueryRegValue(RegKey, L"ResourceId", NULL, &ImageLength, ValueType);
/* allocate resource id buffer*/
*ResourceId = (ULONG_PTR)ExAllocatePool(PagedPool, ImageLength);
*ResourceId = (ULONG_PTR)AllocateItem(PagedPool, ImageLength);
/* check for success */
if (!*ResourceId)
{
/* insufficient memory */
ExFreePool(ImageName->Buffer);
FreeItem(ImageName->Buffer);
return STATUS_INSUFFICIENT_RESOURCES;
}
/* now query for resource id */
@ -169,8 +169,8 @@ KsGetImageNameAndResourceId(
if (!NT_SUCCESS(Status))
{
/* unexpected error */
ExFreePool(ImageName->Buffer);
ExFreePool((PVOID)*ResourceId);
FreeItem(ImageName->Buffer);
FreeItem((PVOID)*ResourceId);
}
/* return result */
@ -209,7 +209,7 @@ KsMapModuleName(
/* initialize subkey buffer */
SubKeyName.Length = 0;
SubKeyName.MaximumLength = Modules.MaximumLength + ModuleName->MaximumLength;
SubKeyName.Buffer = ExAllocatePool(PagedPool, SubKeyName.MaximumLength);
SubKeyName.Buffer = AllocateItem(PagedPool, SubKeyName.MaximumLength);
/* check for success */
if (!SubKeyName.Buffer)
@ -240,7 +240,7 @@ KsMapModuleName(
}
/* free subkey string */
ExFreePool(SubKeyName.Buffer);
FreeItem(SubKeyName.Buffer);
/* close device key */
ZwClose(hKey);

View file

@ -101,7 +101,7 @@ KsDispatchSetSecurity(
if (NT_SUCCESS(Status))
{
/* free old descriptor */
ExFreePool(Descriptor);
FreeItem(Descriptor);
/* mark create item as changed */
CreateItem->Flags |= KSCREATE_ITEM_SECURITYCHANGED;
@ -896,7 +896,7 @@ ProbeMdl:
if (Length && ( (!HeaderSize) || (Length % HeaderSize == 0) || ((ProbeFlags & KSPROBE_ALLOWFORMATCHANGE) && (Length == sizeof(KSSTREAM_HEADER))) ) )
{
/* allocate stream header buffer */
Irp->AssociatedIrp.SystemBuffer = ExAllocatePool(NonPagedPool, Length);
Irp->AssociatedIrp.SystemBuffer = AllocateItem(NonPagedPool, Length);
if (!Irp->AssociatedIrp.SystemBuffer)
{

View file

@ -26,7 +26,6 @@ VOID
FreeItem(
IN PVOID Item)
{
ExFreePool(Item);
}

View file

@ -1560,7 +1560,7 @@ KsStreamPointerClone(
Size = sizeof(KSISTREAM_POINTER) + ContextSize;
/* allocate new stream pointer */
NewFrame = (PKSISTREAM_POINTER)ExAllocatePool(NonPagedPool, Size);
NewFrame = (PKSISTREAM_POINTER)AllocateItem(NonPagedPool, Size);
if (!NewFrame)
return STATUS_INSUFFICIENT_RESOURCES;

View file

@ -30,7 +30,7 @@ KspCreateObjectType(
Name.MaximumLength = wcslen(ObjectType) * sizeof(WCHAR) + CreateParametersSize + 2 * sizeof(WCHAR);
Name.MaximumLength += sizeof(WCHAR);
/* acquire request buffer */
Name.Buffer = ExAllocatePool(NonPagedPool, Name.MaximumLength);
Name.Buffer = AllocateItem(NonPagedPool, Name.MaximumLength);
/* check for success */
if (!Name.Buffer)
{
@ -68,7 +68,7 @@ KspCreateObjectType(
IO_NO_PARAMETER_CHECKING | IO_FORCE_ACCESS_CHECK);
/* free request buffer */
ExFreePool(Name.Buffer);
FreeItem(Name.Buffer);
return Status;
}
@ -200,7 +200,7 @@ KsTopologyPropertyHandler(
KeyName.Length = 0;
KeyName.MaximumLength = LocalMachine.Length + GuidString.Length + sizeof(WCHAR);
KeyName.Buffer = ExAllocatePool(PagedPool, KeyName.MaximumLength);
KeyName.Buffer = AllocateItem(PagedPool, KeyName.MaximumLength);
if (!KeyName.Buffer)
{
Irp->IoStatus.Information = 0;
@ -217,7 +217,7 @@ KsTopologyPropertyHandler(
InitializeObjectAttributes(&ObjectAttributes, &KeyName, OBJ_CASE_INSENSITIVE, NULL, NULL);
Status = ZwOpenKey(&hKey, GENERIC_READ, &ObjectAttributes);
ExFreePool(KeyName.Buffer);
FreeItem(KeyName.Buffer);
if (!NT_SUCCESS(Status))
{
@ -235,7 +235,7 @@ KsTopologyPropertyHandler(
}
ASSERT(Size);
KeyInfo = (PKEY_VALUE_PARTIAL_INFORMATION) ExAllocatePool(NonPagedPool, Size);
KeyInfo = (PKEY_VALUE_PARTIAL_INFORMATION) AllocateItem(NonPagedPool, Size);
if (!KeyInfo)
{
Status = STATUS_NO_MEMORY;
@ -245,7 +245,7 @@ KsTopologyPropertyHandler(
Status = ZwQueryValueKey(hKey, &Name, KeyValuePartialInformation, (PVOID)KeyInfo, Size, &Size);
if (!NT_SUCCESS(Status))
{
ExFreePool(KeyInfo);
FreeItem(KeyInfo);
ZwClose(hKey);
Irp->IoStatus.Information = 0;
break;
@ -256,14 +256,14 @@ KsTopologyPropertyHandler(
{
Irp->IoStatus.Information = KeyInfo->DataLength + sizeof(WCHAR);
Status = STATUS_MORE_ENTRIES;
ExFreePool(KeyInfo);
FreeItem(KeyInfo);
break;
}
RtlMoveMemory(Irp->UserBuffer, &KeyInfo->Data, KeyInfo->DataLength);
((LPWSTR)Irp->UserBuffer)[KeyInfo->DataLength / sizeof(WCHAR)] = L'\0';
Irp->IoStatus.Information = KeyInfo->DataLength + sizeof(WCHAR);
ExFreePool(KeyInfo);
FreeItem(KeyInfo);
break;
default:
Irp->IoStatus.Information = 0;