*/
#include "private.h"
-#include <devguid.h>
-#include <initguid.h>
-#include <ksmedia.h>
/*
This is called from DriverEntry so that PortCls can take care of some
/* 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 */
IIrpTarget *Filter;
PKSOBJECT_CREATE_ITEM CreateItem;
PPIN_WORKER_CONTEXT Context;
- PIO_WORKITEM WorkItem;
DPRINT("PcCreateItemDispatch called DeviceObject %p\n", DeviceObject);
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;
}