mirror of
https://github.com/reactos/reactos.git
synced 2025-05-28 05:28:14 +00:00
[KS]
- Perform all allocations / frees in dedicated alloc / free function svn path=/trunk/; revision=47714
This commit is contained in:
parent
db5472b519
commit
1bb04a5142
8 changed files with 49 additions and 50 deletions
|
@ -530,7 +530,7 @@ KsAllocateDeviceHeader(
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
|
||||||
/* allocate a device header */
|
/* allocate a device header */
|
||||||
Header = ExAllocatePoolWithTag(PagedPool, sizeof(KSIDEVICE_HEADER), TAG_DEVICE_HEADER);
|
Header = AllocateItem(PagedPool, sizeof(KSIDEVICE_HEADER));
|
||||||
|
|
||||||
/* check for success */
|
/* check for success */
|
||||||
if (!Header)
|
if (!Header)
|
||||||
|
@ -597,7 +597,7 @@ KsFreeDeviceHeader(
|
||||||
return;
|
return;
|
||||||
|
|
||||||
KspFreeCreateItems(&Header->ItemList);
|
KspFreeCreateItems(&Header->ItemList);
|
||||||
ExFreePoolWithTag(Header, TAG_DEVICE_HEADER);
|
FreeItem(Header);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -641,7 +641,7 @@ KsAllocateObjectHeader(
|
||||||
/* check for an file object */
|
/* check for an file object */
|
||||||
|
|
||||||
/* allocate the object header */
|
/* allocate the object header */
|
||||||
ObjectHeader = ExAllocatePoolWithTag(NonPagedPool, sizeof(KSIOBJECT_HEADER), TAG_DEVICE_HEADER);
|
ObjectHeader = AllocateItem(NonPagedPool, sizeof(KSIOBJECT_HEADER));
|
||||||
if (!ObjectHeader)
|
if (!ObjectHeader)
|
||||||
return STATUS_INSUFFICIENT_RESOURCES;
|
return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
|
|
||||||
|
@ -659,10 +659,10 @@ KsAllocateObjectHeader(
|
||||||
{
|
{
|
||||||
/* copy object class */
|
/* copy object class */
|
||||||
ObjectHeader->ObjectClass.MaximumLength = IoStack->FileObject->FileName.MaximumLength;
|
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)
|
if (!ObjectHeader->ObjectClass.Buffer)
|
||||||
{
|
{
|
||||||
ExFreePoolWithTag(ObjectHeader, TAG_DEVICE_HEADER);
|
FreeItem(ObjectHeader);
|
||||||
return STATUS_INSUFFICIENT_RESOURCES;
|
return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
}
|
}
|
||||||
RtlCopyUnicodeString(&ObjectHeader->ObjectClass, &IoStack->FileObject->FileName);
|
RtlCopyUnicodeString(&ObjectHeader->ObjectClass, &IoStack->FileObject->FileName);
|
||||||
|
@ -726,7 +726,7 @@ KsFreeObjectHeader(
|
||||||
if (ObjectHeader->ObjectClass.Buffer)
|
if (ObjectHeader->ObjectClass.Buffer)
|
||||||
{
|
{
|
||||||
/* release object class buffer */
|
/* release object class buffer */
|
||||||
ExFreePoolWithTag(ObjectHeader->ObjectClass.Buffer, TAG_DEVICE_HEADER);
|
FreeItem(ObjectHeader->ObjectClass.Buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ObjectHeader->Unknown)
|
if (ObjectHeader->Unknown)
|
||||||
|
@ -739,7 +739,7 @@ KsFreeObjectHeader(
|
||||||
KspFreeCreateItems(&ObjectHeader->ItemList);
|
KspFreeCreateItems(&ObjectHeader->ItemList);
|
||||||
|
|
||||||
/* free object header */
|
/* free object header */
|
||||||
ExFreePoolWithTag(ObjectHeader, TAG_DEVICE_HEADER);
|
FreeItem(ObjectHeader);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -914,11 +914,11 @@ KsAllocateObjectCreateItem(
|
||||||
if (AllocateEntry)
|
if (AllocateEntry)
|
||||||
{
|
{
|
||||||
/* allocate create item */
|
/* allocate create item */
|
||||||
Item = ExAllocatePool(NonPagedPool, sizeof(KSOBJECT_CREATE_ITEM));
|
Item = AllocateItem(NonPagedPool, sizeof(KSOBJECT_CREATE_ITEM));
|
||||||
if (!Item)
|
if (!Item)
|
||||||
{
|
{
|
||||||
/* no memory */
|
/* no memory */
|
||||||
ExFreePool(CreateEntry);
|
FreeItem(CreateEntry);
|
||||||
return STATUS_INSUFFICIENT_RESOURCES;
|
return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -931,7 +931,7 @@ KsAllocateObjectCreateItem(
|
||||||
Item->ObjectClass.MaximumLength = CreateItem->ObjectClass.MaximumLength;
|
Item->ObjectClass.MaximumLength = CreateItem->ObjectClass.MaximumLength;
|
||||||
|
|
||||||
/* copy object class */
|
/* copy object class */
|
||||||
Item->ObjectClass.Buffer = ExAllocatePool(NonPagedPool, Item->ObjectClass.MaximumLength);
|
Item->ObjectClass.Buffer = AllocateItem(NonPagedPool, Item->ObjectClass.MaximumLength);
|
||||||
if (!Item->ObjectClass.Buffer)
|
if (!Item->ObjectClass.Buffer)
|
||||||
{
|
{
|
||||||
/* release resources */
|
/* release resources */
|
||||||
|
@ -1747,7 +1747,7 @@ KsCreateBusEnumObject(
|
||||||
Length = wcslen(BusIdentifier) * sizeof(WCHAR);
|
Length = wcslen(BusIdentifier) * sizeof(WCHAR);
|
||||||
Length += sizeof(BUS_ENUM_DEVICE_EXTENSION);
|
Length += sizeof(BUS_ENUM_DEVICE_EXTENSION);
|
||||||
|
|
||||||
BusDeviceExtension = ExAllocatePool(NonPagedPool, Length);
|
BusDeviceExtension = AllocateItem(NonPagedPool, Length);
|
||||||
if (!BusDeviceExtension)
|
if (!BusDeviceExtension)
|
||||||
{
|
{
|
||||||
/* not enough memory */
|
/* not enough memory */
|
||||||
|
@ -1772,12 +1772,12 @@ KsCreateBusEnumObject(
|
||||||
|
|
||||||
BusDeviceExtension->ServicePath.Length = 0;
|
BusDeviceExtension->ServicePath.Length = 0;
|
||||||
BusDeviceExtension->ServicePath.MaximumLength = Length;
|
BusDeviceExtension->ServicePath.MaximumLength = Length;
|
||||||
BusDeviceExtension->ServicePath.Buffer = ExAllocatePool(NonPagedPool, Length);
|
BusDeviceExtension->ServicePath.Buffer = AllocateItem(NonPagedPool, Length);
|
||||||
|
|
||||||
if (!BusDeviceExtension->ServicePath.Buffer)
|
if (!BusDeviceExtension->ServicePath.Buffer)
|
||||||
{
|
{
|
||||||
/* not enough memory */
|
/* not enough memory */
|
||||||
ExFreePool(BusDeviceExtension);
|
FreeItem(BusDeviceExtension);
|
||||||
return STATUS_INSUFFICIENT_RESOURCES;
|
return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1798,8 +1798,8 @@ KsCreateBusEnumObject(
|
||||||
/* check for success */
|
/* check for success */
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
ExFreePool(BusDeviceExtension->ServicePath.Buffer);
|
FreeItem(BusDeviceExtension->ServicePath.Buffer);
|
||||||
ExFreePool(BusDeviceExtension);
|
FreeItem(BusDeviceExtension);
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1808,8 +1808,8 @@ KsCreateBusEnumObject(
|
||||||
|
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
ExFreePool(BusDeviceExtension->ServicePath.Buffer);
|
FreeItem(BusDeviceExtension->ServicePath.Buffer);
|
||||||
ExFreePool(BusDeviceExtension);
|
FreeItem(BusDeviceExtension);
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1836,8 +1836,8 @@ KsCreateBusEnumObject(
|
||||||
}
|
}
|
||||||
|
|
||||||
/* free device extension */
|
/* free device extension */
|
||||||
ExFreePool(BusDeviceExtension->ServicePath.Buffer);
|
FreeItem(BusDeviceExtension->ServicePath.Buffer);
|
||||||
ExFreePool(BusDeviceExtension);
|
FreeItem(BusDeviceExtension);
|
||||||
|
|
||||||
return STATUS_DEVICE_REMOVED;
|
return STATUS_DEVICE_REMOVED;
|
||||||
}
|
}
|
||||||
|
@ -2795,7 +2795,7 @@ KsRegisterFilterWithNoKSPins(
|
||||||
}
|
}
|
||||||
|
|
||||||
/* free the symbolic link list */
|
/* free the symbolic link list */
|
||||||
ExFreePool(SymbolicLinkList);
|
FreeItem(SymbolicLinkList);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
|
|
|
@ -239,7 +239,7 @@ KspReadMediaCategory(
|
||||||
/* allocate buffer for the registry key */
|
/* allocate buffer for the registry key */
|
||||||
Path.Length = 0;
|
Path.Length = 0;
|
||||||
Path.MaximumLength = MediaPath.MaximumLength + GuidString.MaximumLength;
|
Path.MaximumLength = MediaPath.MaximumLength + GuidString.MaximumLength;
|
||||||
Path.Buffer = ExAllocatePool(NonPagedPool, Path.MaximumLength);
|
Path.Buffer = AllocateItem(NonPagedPool, Path.MaximumLength);
|
||||||
if (!Path.Buffer)
|
if (!Path.Buffer)
|
||||||
{
|
{
|
||||||
/* not enough memory */
|
/* not enough memory */
|
||||||
|
@ -262,7 +262,7 @@ KspReadMediaCategory(
|
||||||
DPRINT("ZwOpenKey() status 0x%08lx %S\n", Status, Path.Buffer);
|
DPRINT("ZwOpenKey() status 0x%08lx %S\n", Status, Path.Buffer);
|
||||||
|
|
||||||
/* free path buffer */
|
/* free path buffer */
|
||||||
ExFreePool(Path.Buffer);
|
FreeItem(Path.Buffer);
|
||||||
|
|
||||||
/* check for success */
|
/* check for success */
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
|
@ -281,7 +281,7 @@ KspReadMediaCategory(
|
||||||
}
|
}
|
||||||
|
|
||||||
/* allocate buffer to read key info */
|
/* allocate buffer to read key info */
|
||||||
KeyInfo = (PKEY_VALUE_PARTIAL_INFORMATION) ExAllocatePool(NonPagedPool, Size);
|
KeyInfo = (PKEY_VALUE_PARTIAL_INFORMATION) AllocateItem(NonPagedPool, Size);
|
||||||
if (!KeyInfo)
|
if (!KeyInfo)
|
||||||
{
|
{
|
||||||
/* not enough memory */
|
/* not enough memory */
|
||||||
|
@ -298,7 +298,7 @@ KspReadMediaCategory(
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
/* failed to read key */
|
/* failed to read key */
|
||||||
ExFreePool(KeyInfo);
|
FreeItem(KeyInfo);
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -545,13 +545,13 @@ KspPinPropertyHandler(
|
||||||
if (KeyInfo->DataLength + sizeof(WCHAR) > IoStack->Parameters.DeviceIoControl.OutputBufferLength)
|
if (KeyInfo->DataLength + sizeof(WCHAR) > IoStack->Parameters.DeviceIoControl.OutputBufferLength)
|
||||||
{
|
{
|
||||||
Status = STATUS_BUFFER_OVERFLOW;
|
Status = STATUS_BUFFER_OVERFLOW;
|
||||||
ExFreePool(KeyInfo);
|
FreeItem(KeyInfo);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
RtlMoveMemory(Irp->UserBuffer, &KeyInfo->Data, KeyInfo->DataLength);
|
RtlMoveMemory(Irp->UserBuffer, &KeyInfo->Data, KeyInfo->DataLength);
|
||||||
((LPWSTR)Irp->UserBuffer)[KeyInfo->DataLength / sizeof(WCHAR)] = L'\0';
|
((LPWSTR)Irp->UserBuffer)[KeyInfo->DataLength / sizeof(WCHAR)] = L'\0';
|
||||||
ExFreePool(KeyInfo);
|
FreeItem(KeyInfo);
|
||||||
break;
|
break;
|
||||||
case KSPROPERTY_PIN_PROPOSEDATAFORMAT:
|
case KSPROPERTY_PIN_PROPOSEDATAFORMAT:
|
||||||
Size = sizeof(KSDATAFORMAT);
|
Size = sizeof(KSDATAFORMAT);
|
||||||
|
|
|
@ -292,7 +292,7 @@ KspEnableEvent(
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* allocate it from nonpaged pool */
|
/* allocate it from nonpaged pool */
|
||||||
EventEntry = ExAllocatePool(NonPagedPool, Size);
|
EventEntry = AllocateItem(NonPagedPool, Size);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!EventEntry)
|
if (!EventEntry)
|
||||||
|
@ -529,7 +529,7 @@ KsDiscardEvent(
|
||||||
}
|
}
|
||||||
|
|
||||||
/* free event entry */
|
/* free event entry */
|
||||||
ExFreePool(EventEntry);
|
FreeItem(EventEntry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@ KsLoadResource(
|
||||||
if (NT_SUCCESS(Status))
|
if (NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
/* allocate resource buffer */
|
/* allocate resource buffer */
|
||||||
Result = ExAllocatePool(PoolType, Size);
|
Result = AllocateItem(PoolType, Size);
|
||||||
if (Result)
|
if (Result)
|
||||||
{
|
{
|
||||||
/* copy resource */
|
/* copy resource */
|
||||||
|
@ -75,7 +75,7 @@ KsLoadResource(
|
||||||
if (Result)
|
if (Result)
|
||||||
{
|
{
|
||||||
/* free resource buffer in case of a failure */
|
/* free resource buffer in case of a failure */
|
||||||
ExFreePool(Result);
|
FreeItem(Result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* done */
|
/* done */
|
||||||
|
@ -127,7 +127,7 @@ KsGetImageNameAndResourceId(
|
||||||
|
|
||||||
/* allocate image name buffer */
|
/* allocate image name buffer */
|
||||||
ImageName->MaximumLength = sizeof(ImagePath) + ImageLength;
|
ImageName->MaximumLength = sizeof(ImagePath) + ImageLength;
|
||||||
ImageName->Buffer = ExAllocatePool(PagedPool, ImageName->MaximumLength);
|
ImageName->Buffer = AllocateItem(PagedPool, ImageName->MaximumLength);
|
||||||
|
|
||||||
/* check for success */
|
/* check for success */
|
||||||
if (!ImageName->Buffer)
|
if (!ImageName->Buffer)
|
||||||
|
@ -145,7 +145,7 @@ KsGetImageNameAndResourceId(
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
/* unexpected error */
|
/* unexpected error */
|
||||||
ExFreePool(ImageName->Buffer);
|
FreeItem(ImageName->Buffer);
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -154,13 +154,13 @@ KsGetImageNameAndResourceId(
|
||||||
Status = KspQueryRegValue(RegKey, L"ResourceId", NULL, &ImageLength, ValueType);
|
Status = KspQueryRegValue(RegKey, L"ResourceId", NULL, &ImageLength, ValueType);
|
||||||
|
|
||||||
/* allocate resource id buffer*/
|
/* allocate resource id buffer*/
|
||||||
*ResourceId = (ULONG_PTR)ExAllocatePool(PagedPool, ImageLength);
|
*ResourceId = (ULONG_PTR)AllocateItem(PagedPool, ImageLength);
|
||||||
|
|
||||||
/* check for success */
|
/* check for success */
|
||||||
if (!*ResourceId)
|
if (!*ResourceId)
|
||||||
{
|
{
|
||||||
/* insufficient memory */
|
/* insufficient memory */
|
||||||
ExFreePool(ImageName->Buffer);
|
FreeItem(ImageName->Buffer);
|
||||||
return STATUS_INSUFFICIENT_RESOURCES;
|
return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
}
|
}
|
||||||
/* now query for resource id */
|
/* now query for resource id */
|
||||||
|
@ -169,8 +169,8 @@ KsGetImageNameAndResourceId(
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
/* unexpected error */
|
/* unexpected error */
|
||||||
ExFreePool(ImageName->Buffer);
|
FreeItem(ImageName->Buffer);
|
||||||
ExFreePool((PVOID)*ResourceId);
|
FreeItem((PVOID)*ResourceId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* return result */
|
/* return result */
|
||||||
|
@ -209,7 +209,7 @@ KsMapModuleName(
|
||||||
/* initialize subkey buffer */
|
/* initialize subkey buffer */
|
||||||
SubKeyName.Length = 0;
|
SubKeyName.Length = 0;
|
||||||
SubKeyName.MaximumLength = Modules.MaximumLength + ModuleName->MaximumLength;
|
SubKeyName.MaximumLength = Modules.MaximumLength + ModuleName->MaximumLength;
|
||||||
SubKeyName.Buffer = ExAllocatePool(PagedPool, SubKeyName.MaximumLength);
|
SubKeyName.Buffer = AllocateItem(PagedPool, SubKeyName.MaximumLength);
|
||||||
|
|
||||||
/* check for success */
|
/* check for success */
|
||||||
if (!SubKeyName.Buffer)
|
if (!SubKeyName.Buffer)
|
||||||
|
@ -240,7 +240,7 @@ KsMapModuleName(
|
||||||
}
|
}
|
||||||
|
|
||||||
/* free subkey string */
|
/* free subkey string */
|
||||||
ExFreePool(SubKeyName.Buffer);
|
FreeItem(SubKeyName.Buffer);
|
||||||
|
|
||||||
/* close device key */
|
/* close device key */
|
||||||
ZwClose(hKey);
|
ZwClose(hKey);
|
||||||
|
|
|
@ -101,7 +101,7 @@ KsDispatchSetSecurity(
|
||||||
if (NT_SUCCESS(Status))
|
if (NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
/* free old descriptor */
|
/* free old descriptor */
|
||||||
ExFreePool(Descriptor);
|
FreeItem(Descriptor);
|
||||||
|
|
||||||
/* mark create item as changed */
|
/* mark create item as changed */
|
||||||
CreateItem->Flags |= KSCREATE_ITEM_SECURITYCHANGED;
|
CreateItem->Flags |= KSCREATE_ITEM_SECURITYCHANGED;
|
||||||
|
@ -896,7 +896,7 @@ ProbeMdl:
|
||||||
if (Length && ( (!HeaderSize) || (Length % HeaderSize == 0) || ((ProbeFlags & KSPROBE_ALLOWFORMATCHANGE) && (Length == sizeof(KSSTREAM_HEADER))) ) )
|
if (Length && ( (!HeaderSize) || (Length % HeaderSize == 0) || ((ProbeFlags & KSPROBE_ALLOWFORMATCHANGE) && (Length == sizeof(KSSTREAM_HEADER))) ) )
|
||||||
{
|
{
|
||||||
/* allocate stream header buffer */
|
/* allocate stream header buffer */
|
||||||
Irp->AssociatedIrp.SystemBuffer = ExAllocatePool(NonPagedPool, Length);
|
Irp->AssociatedIrp.SystemBuffer = AllocateItem(NonPagedPool, Length);
|
||||||
|
|
||||||
if (!Irp->AssociatedIrp.SystemBuffer)
|
if (!Irp->AssociatedIrp.SystemBuffer)
|
||||||
{
|
{
|
||||||
|
|
|
@ -26,7 +26,6 @@ VOID
|
||||||
FreeItem(
|
FreeItem(
|
||||||
IN PVOID Item)
|
IN PVOID Item)
|
||||||
{
|
{
|
||||||
|
|
||||||
ExFreePool(Item);
|
ExFreePool(Item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1560,7 +1560,7 @@ KsStreamPointerClone(
|
||||||
Size = sizeof(KSISTREAM_POINTER) + ContextSize;
|
Size = sizeof(KSISTREAM_POINTER) + ContextSize;
|
||||||
|
|
||||||
/* allocate new stream pointer */
|
/* allocate new stream pointer */
|
||||||
NewFrame = (PKSISTREAM_POINTER)ExAllocatePool(NonPagedPool, Size);
|
NewFrame = (PKSISTREAM_POINTER)AllocateItem(NonPagedPool, Size);
|
||||||
|
|
||||||
if (!NewFrame)
|
if (!NewFrame)
|
||||||
return STATUS_INSUFFICIENT_RESOURCES;
|
return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
|
|
|
@ -30,7 +30,7 @@ KspCreateObjectType(
|
||||||
Name.MaximumLength = wcslen(ObjectType) * sizeof(WCHAR) + CreateParametersSize + 2 * sizeof(WCHAR);
|
Name.MaximumLength = wcslen(ObjectType) * sizeof(WCHAR) + CreateParametersSize + 2 * sizeof(WCHAR);
|
||||||
Name.MaximumLength += sizeof(WCHAR);
|
Name.MaximumLength += sizeof(WCHAR);
|
||||||
/* acquire request buffer */
|
/* acquire request buffer */
|
||||||
Name.Buffer = ExAllocatePool(NonPagedPool, Name.MaximumLength);
|
Name.Buffer = AllocateItem(NonPagedPool, Name.MaximumLength);
|
||||||
/* check for success */
|
/* check for success */
|
||||||
if (!Name.Buffer)
|
if (!Name.Buffer)
|
||||||
{
|
{
|
||||||
|
@ -68,7 +68,7 @@ KspCreateObjectType(
|
||||||
IO_NO_PARAMETER_CHECKING | IO_FORCE_ACCESS_CHECK);
|
IO_NO_PARAMETER_CHECKING | IO_FORCE_ACCESS_CHECK);
|
||||||
|
|
||||||
/* free request buffer */
|
/* free request buffer */
|
||||||
ExFreePool(Name.Buffer);
|
FreeItem(Name.Buffer);
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -200,7 +200,7 @@ KsTopologyPropertyHandler(
|
||||||
|
|
||||||
KeyName.Length = 0;
|
KeyName.Length = 0;
|
||||||
KeyName.MaximumLength = LocalMachine.Length + GuidString.Length + sizeof(WCHAR);
|
KeyName.MaximumLength = LocalMachine.Length + GuidString.Length + sizeof(WCHAR);
|
||||||
KeyName.Buffer = ExAllocatePool(PagedPool, KeyName.MaximumLength);
|
KeyName.Buffer = AllocateItem(PagedPool, KeyName.MaximumLength);
|
||||||
if (!KeyName.Buffer)
|
if (!KeyName.Buffer)
|
||||||
{
|
{
|
||||||
Irp->IoStatus.Information = 0;
|
Irp->IoStatus.Information = 0;
|
||||||
|
@ -217,7 +217,7 @@ KsTopologyPropertyHandler(
|
||||||
InitializeObjectAttributes(&ObjectAttributes, &KeyName, OBJ_CASE_INSENSITIVE, NULL, NULL);
|
InitializeObjectAttributes(&ObjectAttributes, &KeyName, OBJ_CASE_INSENSITIVE, NULL, NULL);
|
||||||
Status = ZwOpenKey(&hKey, GENERIC_READ, &ObjectAttributes);
|
Status = ZwOpenKey(&hKey, GENERIC_READ, &ObjectAttributes);
|
||||||
|
|
||||||
ExFreePool(KeyName.Buffer);
|
FreeItem(KeyName.Buffer);
|
||||||
|
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
|
@ -235,7 +235,7 @@ KsTopologyPropertyHandler(
|
||||||
}
|
}
|
||||||
|
|
||||||
ASSERT(Size);
|
ASSERT(Size);
|
||||||
KeyInfo = (PKEY_VALUE_PARTIAL_INFORMATION) ExAllocatePool(NonPagedPool, Size);
|
KeyInfo = (PKEY_VALUE_PARTIAL_INFORMATION) AllocateItem(NonPagedPool, Size);
|
||||||
if (!KeyInfo)
|
if (!KeyInfo)
|
||||||
{
|
{
|
||||||
Status = STATUS_NO_MEMORY;
|
Status = STATUS_NO_MEMORY;
|
||||||
|
@ -245,7 +245,7 @@ KsTopologyPropertyHandler(
|
||||||
Status = ZwQueryValueKey(hKey, &Name, KeyValuePartialInformation, (PVOID)KeyInfo, Size, &Size);
|
Status = ZwQueryValueKey(hKey, &Name, KeyValuePartialInformation, (PVOID)KeyInfo, Size, &Size);
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
ExFreePool(KeyInfo);
|
FreeItem(KeyInfo);
|
||||||
ZwClose(hKey);
|
ZwClose(hKey);
|
||||||
Irp->IoStatus.Information = 0;
|
Irp->IoStatus.Information = 0;
|
||||||
break;
|
break;
|
||||||
|
@ -256,14 +256,14 @@ KsTopologyPropertyHandler(
|
||||||
{
|
{
|
||||||
Irp->IoStatus.Information = KeyInfo->DataLength + sizeof(WCHAR);
|
Irp->IoStatus.Information = KeyInfo->DataLength + sizeof(WCHAR);
|
||||||
Status = STATUS_MORE_ENTRIES;
|
Status = STATUS_MORE_ENTRIES;
|
||||||
ExFreePool(KeyInfo);
|
FreeItem(KeyInfo);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
RtlMoveMemory(Irp->UserBuffer, &KeyInfo->Data, KeyInfo->DataLength);
|
RtlMoveMemory(Irp->UserBuffer, &KeyInfo->Data, KeyInfo->DataLength);
|
||||||
((LPWSTR)Irp->UserBuffer)[KeyInfo->DataLength / sizeof(WCHAR)] = L'\0';
|
((LPWSTR)Irp->UserBuffer)[KeyInfo->DataLength / sizeof(WCHAR)] = L'\0';
|
||||||
Irp->IoStatus.Information = KeyInfo->DataLength + sizeof(WCHAR);
|
Irp->IoStatus.Information = KeyInfo->DataLength + sizeof(WCHAR);
|
||||||
ExFreePool(KeyInfo);
|
FreeItem(KeyInfo);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Irp->IoStatus.Information = 0;
|
Irp->IoStatus.Information = 0;
|
||||||
|
|
Loading…
Reference in a new issue