mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 20:03:12 +00:00
free work items after processing them
svn path=/trunk/; revision=14502
This commit is contained in:
parent
47632d3088
commit
2177dfcfd2
2 changed files with 7 additions and 2 deletions
|
@ -125,8 +125,11 @@ SerialReadWorkItem(
|
||||||
Irp = WorkItemData->Irp;
|
Irp = WorkItemData->Irp;
|
||||||
|
|
||||||
ReadBytes(DeviceObject, Irp, WorkItemData);
|
ReadBytes(DeviceObject, Irp, WorkItemData);
|
||||||
ExFreePoolWithTag(pWorkItemData, SERIAL_TAG);
|
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
|
|
||||||
|
IoFreeWorkItem(WorkItemData->IoWorkItem);
|
||||||
|
ExFreePoolWithTag(pWorkItemData, SERIAL_TAG);
|
||||||
}
|
}
|
||||||
|
|
||||||
NTSTATUS STDCALL
|
NTSTATUS STDCALL
|
||||||
|
@ -215,7 +218,8 @@ SerialRead(
|
||||||
WorkItem = IoAllocateWorkItem(DeviceObject);
|
WorkItem = IoAllocateWorkItem(DeviceObject);
|
||||||
if (WorkItem)
|
if (WorkItem)
|
||||||
{
|
{
|
||||||
IoQueueWorkItem(WorkItem, SerialReadWorkItem, DelayedWorkQueue, WorkItemData);
|
WorkItemData->IoWorkItem = WorkItem;
|
||||||
|
IoQueueWorkItem(WorkItem, SerialReadWorkItem, DelayedWorkQueue, WorkItemData);
|
||||||
IoMarkIrpPending(Irp);
|
IoMarkIrpPending(Irp);
|
||||||
return STATUS_PENDING;
|
return STATUS_PENDING;
|
||||||
}
|
}
|
||||||
|
|
|
@ -108,6 +108,7 @@ typedef struct _SERIAL_DEVICE_EXTENSION
|
||||||
typedef struct _WORKITEM_DATA
|
typedef struct _WORKITEM_DATA
|
||||||
{
|
{
|
||||||
PIRP Irp;
|
PIRP Irp;
|
||||||
|
PIO_WORKITEM IoWorkItem;
|
||||||
|
|
||||||
BOOLEAN UseIntervalTimeout;
|
BOOLEAN UseIntervalTimeout;
|
||||||
BOOLEAN UseTotalTimeout;
|
BOOLEAN UseTotalTimeout;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue