diff --git a/reactos/drivers/wdm/audio/backpln/portcls/adapter.c b/reactos/drivers/wdm/audio/backpln/portcls/adapter.c index e686dc1c55a..8ea63f32e71 100644 --- a/reactos/drivers/wdm/audio/backpln/portcls/adapter.c +++ b/reactos/drivers/wdm/audio/backpln/portcls/adapter.c @@ -10,9 +10,6 @@ */ #include "private.h" -#include -#include -#include /* This is called from DriverEntry so that PortCls can take care of some @@ -152,6 +149,9 @@ PcAddAdapterDevice( /* clear initializing flag */ fdo->Flags &= ~ DO_DEVICE_INITIALIZING; + /* allocate work item */ + portcls_ext->WorkItem = IoAllocateWorkItem(fdo); + /* allocate the device header */ status = KsAllocateDeviceHeader(&portcls_ext->KsDeviceHeader, MaxObjects, portcls_ext->CreateItems); /* did we succeed */ diff --git a/reactos/drivers/wdm/audio/backpln/portcls/port_topology.c b/reactos/drivers/wdm/audio/backpln/portcls/port_topology.c index 2598d0534fb..d83913d612a 100644 --- a/reactos/drivers/wdm/audio/backpln/portcls/port_topology.c +++ b/reactos/drivers/wdm/audio/backpln/portcls/port_topology.c @@ -500,7 +500,6 @@ PcCreateItemDispatch( IIrpTarget *Filter; PKSOBJECT_CREATE_ITEM CreateItem; PPIN_WORKER_CONTEXT Context; - PIO_WORKITEM WorkItem; DPRINT("PcCreateItemDispatch called DeviceObject %p\n", DeviceObject); @@ -599,20 +598,11 @@ PcCreateItemDispatch( Context->Filter = Filter; Context->Irp = Irp; - WorkItem = IoAllocateWorkItem(DeviceObject); - if (!WorkItem) - { - Irp->IoStatus.Information = 0; - Irp->IoStatus.Status = STATUS_INSUFFICIENT_RESOURCES; - FreeItem(Context, TAG_PORTCLASS); - IoCompleteRequest(Irp, IO_NO_INCREMENT); - return STATUS_INSUFFICIENT_RESOURCES; - } DPRINT("Queueing IRP %p Irql %u\n", Irp, KeGetCurrentIrql()); Irp->IoStatus.Information = 0; Irp->IoStatus.Status = STATUS_PENDING; IoMarkIrpPending(Irp); - IoQueueWorkItem(WorkItem, CreatePinWorkerRoutine, DelayedWorkQueue, (PVOID)Context); + IoQueueWorkItem(DeviceExt->WorkItem, CreatePinWorkerRoutine, DelayedWorkQueue, (PVOID)Context); return STATUS_PENDING; } diff --git a/reactos/drivers/wdm/audio/backpln/portcls/private.h b/reactos/drivers/wdm/audio/backpln/portcls/private.h index 57806e881de..65b1edf376d 100644 --- a/reactos/drivers/wdm/audio/backpln/portcls/private.h +++ b/reactos/drivers/wdm/audio/backpln/portcls/private.h @@ -156,7 +156,7 @@ typedef struct ULONG MaxSubDevices; KSOBJECT_CREATE_ITEM * CreateItems; - + PIO_WORKITEM WorkItem; IResourceList* resources; LIST_ENTRY SubDeviceList; LIST_ENTRY PhysicalConnectionList;