mirror of
https://github.com/reactos/reactos.git
synced 2025-02-25 01:39:30 +00:00
- Change our method of queuing work items so we don't leak anymore
svn path=/branches/aicom-network-fixes/; revision=36211
This commit is contained in:
parent
ac40a36ce9
commit
91ac8bce6e
1 changed files with 15 additions and 9 deletions
|
@ -748,11 +748,10 @@ NdisMQueryInformationComplete(
|
||||||
KeLowerIrql(OldIrql);
|
KeLowerIrql(OldIrql);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID NTAPI MiniportWorker(
|
VOID NTAPI MiniportWorker(IN PVOID WorkItem)
|
||||||
IN PDEVICE_OBJECT DeviceObject,
|
|
||||||
IN PVOID Context)
|
|
||||||
{
|
{
|
||||||
PLOGICAL_ADAPTER Adapter = GET_LOGICAL_ADAPTER(Context);
|
PNDIS_WORK_ITEM NdisWorkItem = WorkItem;
|
||||||
|
PLOGICAL_ADAPTER Adapter = GET_LOGICAL_ADAPTER(NdisWorkItem->Context);
|
||||||
KIRQL OldIrql;
|
KIRQL OldIrql;
|
||||||
NDIS_STATUS NdisStatus;
|
NDIS_STATUS NdisStatus;
|
||||||
PVOID WorkItemContext;
|
PVOID WorkItemContext;
|
||||||
|
@ -858,6 +857,8 @@ VOID NTAPI MiniportWorker(
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ExFreePool(WorkItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -876,15 +877,20 @@ VOID NTAPI MiniportDpc(
|
||||||
* SystemArgument2 = Unused
|
* SystemArgument2 = Unused
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
PIO_WORKITEM WorkItem;
|
PNDIS_WORK_ITEM NdisWorkItem;
|
||||||
PLOGICAL_ADAPTER Adapter = GET_LOGICAL_ADAPTER(DeferredContext);
|
PWORK_QUEUE_ITEM WorkItem;
|
||||||
|
|
||||||
NDIS_DbgPrint(DEBUG_MINIPORT, ("Called.\n"));
|
NDIS_DbgPrint(DEBUG_MINIPORT, ("Called.\n"));
|
||||||
|
|
||||||
WorkItem = IoAllocateWorkItem(Adapter->NdisMiniportBlock.DeviceObject);
|
NdisWorkItem = ExAllocatePool(NonPagedPool, sizeof(PNDIS_WORK_ITEM));
|
||||||
if( !WorkItem ) return;
|
|
||||||
|
|
||||||
IoQueueWorkItem(WorkItem, MiniportWorker, CriticalWorkQueue, DeferredContext);
|
WorkItem = (PWORK_QUEUE_ITEM)NdisWorkItem->WrapperReserved;
|
||||||
|
|
||||||
|
NdisWorkItem->Context = DeferredContext;
|
||||||
|
|
||||||
|
ExInitializeWorkItem(WorkItem, MiniportWorker, NdisWorkItem);
|
||||||
|
|
||||||
|
ExQueueWorkItem(WorkItem, CriticalWorkQueue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue