ULONG Index;
Length = sizeof(KSP_PIN) + sizeof(KSMULTIPLE_ITEM) + ClientFormat->DataFormat.FormatSize;
- PinRequest = ExAllocatePool(NonPagedPool, Length);
+ PinRequest = AllocateItem(NonPagedPool, Length);
if (!PinRequest)
return STATUS_UNSUCCESSFUL;
if (NT_SUCCESS(Status))
{
- ExFreePool(PinRequest);
+ FreeItem(PinRequest);
return Status;
}
return Status;
}
- MultipleItem = ExAllocatePool(NonPagedPool, BytesReturned);
+ MultipleItem = AllocateItem(NonPagedPool, BytesReturned);
if (!MultipleItem)
{
- ExFreePool(PinRequest);
+ FreeItem(PinRequest);
return STATUS_NO_MEMORY;
}
if (!NT_SUCCESS(Status))
{
DPRINT("Property Request KSPROPERTY_PIN_DATARANGES failed with %x\n", Status);
- ExFreePool(MultipleItem);
- ExFreePool(PinRequest);
+ FreeItem(MultipleItem);
+ FreeItem(PinRequest);
return STATUS_UNSUCCESSFUL;
}
#endif
- ExFreePool(MultipleItem);
- ExFreePool(PinRequest);
+ FreeItem(MultipleItem);
+ FreeItem(PinRequest);
if (bFound)
return STATUS_SUCCESS;
PKSAUDIO_DEVICE_ENTRY DeviceEntry = NULL;
/* a new device has arrived */
- DeviceEntry = ExAllocatePool(NonPagedPool, sizeof(KSAUDIO_DEVICE_ENTRY));
+ DeviceEntry = AllocateItem(NonPagedPool, sizeof(KSAUDIO_DEVICE_ENTRY));
if (!DeviceEntry)
{
/* no memory */
DeviceEntry->DeviceName.Length = 0;
DeviceEntry->DeviceName.MaximumLength = DeviceName->MaximumLength + 10 * sizeof(WCHAR);
- DeviceEntry->DeviceName.Buffer = ExAllocatePool(NonPagedPool, DeviceEntry->DeviceName.MaximumLength);
+ DeviceEntry->DeviceName.Buffer = AllocateItem(NonPagedPool, DeviceEntry->DeviceName.MaximumLength);
if (!DeviceEntry->DeviceName.Buffer)
{
if (DeviceEntry)
{
if (DeviceEntry->DeviceName.Buffer)
- ExFreePool(DeviceEntry->DeviceName.Buffer);
+ FreeItem(DeviceEntry->DeviceName.Buffer);
- ExFreePool(DeviceEntry);
+ FreeItem(DeviceEntry);
}
return Status;
DPRINT("DispatchCreateSysAudio entered\n");
/* allocate create item */
- CreateItem = ExAllocatePool(NonPagedPool, sizeof(KSOBJECT_CREATE_ITEM));
+ CreateItem = AllocateItem(NonPagedPool, sizeof(KSOBJECT_CREATE_ITEM));
if (!CreateItem)
{
Irp->IoStatus.Information = 0;
PKSOBJECT_CREATE_ITEM CreateItem;
/* allocate create item */
- CreateItem = ExAllocatePool(NonPagedPool, sizeof(KSOBJECT_CREATE_ITEM));
+ CreateItem = AllocateItem(NonPagedPool, sizeof(KSOBJECT_CREATE_ITEM));
if (!CreateItem)
return STATUS_INSUFFICIENT_RESOURCES;
const GUID KSCATEGORY_PREFERRED_WAVEIN_DEVICE = {0xD6C50671L, 0x72C1, 0x11D2, {0x97, 0x55, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88}};
const GUID KSCATEGORY_PREFERRED_MIDIOUT_DEVICE = {0xD6C50674L, 0x72C1, 0x11D2, {0x97, 0x55, 0x00, 0x00, 0xF8, 0x00, 0x47, 0x88}};
+PVOID
+AllocateItem(
+ IN POOL_TYPE PoolType,
+ IN SIZE_T NumberOfBytes)
+{
+ PVOID Item = ExAllocatePool(PoolType, NumberOfBytes);
+ if (!Item)
+ return Item;
+
+ RtlZeroMemory(Item, NumberOfBytes);
+ return Item;
+}
+
+VOID
+FreeItem(
+ IN PVOID Item)
+{
+ ExFreePool(Item);
+}
VOID
RtlFreeUnicodeString(&DeviceEntry->DeviceName);
/* free audio device entry */
- ExFreePool(DeviceEntry);
+ FreeItem(DeviceEntry);
}
Irp->IoStatus.Information = 0;
ZwClose(Context->hMixerPin);
}
- ExFreePool(Context);
+ FreeItem(Context);
Irp->IoStatus.Status = STATUS_SUCCESS;
Irp->IoStatus.Information = 0;
/* the audio irp pin didnt accept the input format
* let's compute a compatible format
*/
- MixerPinConnect = ExAllocatePool(NonPagedPool, sizeof(KSPIN_CONNECT) + sizeof(KSDATAFORMAT_WAVEFORMATEX));
+ MixerPinConnect = AllocateItem(NonPagedPool, sizeof(KSPIN_CONNECT) + sizeof(KSDATAFORMAT_WAVEFORMATEX));
if (!MixerPinConnect)
{
/* not enough memory */
if (!NT_SUCCESS(Status))
{
DPRINT1("ComputeCompatibleFormat failed with %x\n", Status);
- ExFreePool(MixerPinConnect);
+ FreeItem(MixerPinConnect);
return Status;
}
DPRINT1(" InputFormat: SampleRate %u Bits %u Channels %u\n", InputFormat->WaveFormatEx.nSamplesPerSec, InputFormat->WaveFormatEx.wBitsPerSample, InputFormat->WaveFormatEx.nChannels);
DPRINT1("OutputFormat: SampleRate %u Bits %u Channels %u\n", OutputFormat->WaveFormatEx.nSamplesPerSec, OutputFormat->WaveFormatEx.wBitsPerSample, OutputFormat->WaveFormatEx.nChannels);
- ExFreePool(MixerPinConnect);
+ FreeItem(MixerPinConnect);
return Status;
}
}
if (!NT_SUCCESS(Status))
{
DPRINT1("Failed to create Mixer Pin with %x\n", Status);
- ExFreePool(MixerPinConnect);
+ FreeItem(MixerPinConnect);
}
}
/* done */
ParametersLength = IoStack->FileObject->FileName.MaximumLength - ObjectLength;
/* allocate buffer */
- Buffer = ExAllocatePool(NonPagedPool, ParametersLength);
+ Buffer = AllocateItem(NonPagedPool, ParametersLength);
if (!Buffer)
return STATUS_INSUFFICIENT_RESOURCES;
/* allocate dispatch context */
- DispatchContext = ExAllocatePool(NonPagedPool, sizeof(DISPATCH_CONTEXT));
+ DispatchContext = AllocateItem(NonPagedPool, sizeof(DISPATCH_CONTEXT));
if (!DispatchContext)
{
/* failed */
if (!NT_SUCCESS(Status))
{
/* failed */
- ExFreePool(DispatchContext);
+ FreeItem(DispatchContext);
Irp->IoStatus.Status = Status;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return Status;
{
/* failed */
KsFreeObjectHeader(DispatchContext->ObjectHeader);
- ExFreePool(DispatchContext);
+ FreeItem(DispatchContext);
}
else
{
IN ULONG PinId,
IN PKSDATAFORMAT_WAVEFORMATEX ClientFormat,
OUT PKSDATAFORMAT_WAVEFORMATEX MixerFormat);
+
+PVOID
+AllocateItem(
+ IN POOL_TYPE PoolType,
+ IN SIZE_T NumberOfBytes);
+
+VOID
+FreeItem(
+ IN PVOID Item);
+