[ros-diffs] [weiden] 14502: free work items after processing them

weiden at svn.reactos.com weiden at svn.reactos.com
Tue Apr 5 17:08:21 CEST 2005


free work items after processing them
Modified: trunk/reactos/drivers/dd/serial/rw.c
Modified: trunk/reactos/drivers/dd/serial/serial.h
  _____  

Modified: trunk/reactos/drivers/dd/serial/rw.c
--- trunk/reactos/drivers/dd/serial/rw.c	2005-04-05 12:34:38 UTC
(rev 14501)
+++ trunk/reactos/drivers/dd/serial/rw.c	2005-04-05 15:08:18 UTC
(rev 14502)
@@ -125,8 +125,11 @@

 	Irp = WorkItemData->Irp;
 	
 	ReadBytes(DeviceObject, Irp, WorkItemData);
+	
+	IoCompleteRequest(Irp, IO_NO_INCREMENT);
+	
+	IoFreeWorkItem(WorkItemData->IoWorkItem);
 	ExFreePoolWithTag(pWorkItemData, SERIAL_TAG);
-	IoCompleteRequest(Irp, IO_NO_INCREMENT);
 }
 
 NTSTATUS STDCALL
@@ -215,7 +218,8 @@
 	WorkItem = IoAllocateWorkItem(DeviceObject);
 	if (WorkItem)
 	{
-		IoQueueWorkItem(WorkItem, SerialReadWorkItem,
DelayedWorkQueue, WorkItemData);
+                WorkItemData->IoWorkItem = WorkItem;
+                IoQueueWorkItem(WorkItem, SerialReadWorkItem,
DelayedWorkQueue, WorkItemData);
 		IoMarkIrpPending(Irp);
 		return STATUS_PENDING;
 	}
  _____  

Modified: trunk/reactos/drivers/dd/serial/serial.h
--- trunk/reactos/drivers/dd/serial/serial.h	2005-04-05 12:34:38 UTC
(rev 14501)
+++ trunk/reactos/drivers/dd/serial/serial.h	2005-04-05 15:08:18 UTC
(rev 14502)
@@ -108,6 +108,7 @@

 typedef struct _WORKITEM_DATA
 {
 	PIRP Irp;
+	PIO_WORKITEM IoWorkItem;
 	
 	BOOLEAN UseIntervalTimeout;
 	BOOLEAN UseTotalTimeout;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.reactos.org/pipermail/ros-diffs/attachments/20050405/847c5343/attachment.html


More information about the Ros-diffs mailing list