diff --git a/reactos/drivers/filters/mountmgr/mntmgr.h b/reactos/drivers/filters/mountmgr/mntmgr.h index 090d0609ded..4153add6781 100644 --- a/reactos/drivers/filters/mountmgr/mntmgr.h +++ b/reactos/drivers/filters/mountmgr/mntmgr.h @@ -112,7 +112,7 @@ typedef struct _DEVICE_INFORMATION_ENTRY typedef struct _ONLINE_NOTIFICATION_WORK_ITEM { - WORK_QUEUE_ITEM; // 0x00 + WORK_QUEUE_ITEM WorkItem; // 0x00 PDEVICE_EXTENSION DeviceExtension; // 0x10 UNICODE_STRING SymbolicName; // 0x14 } ONLINE_NOTIFICATION_WORK_ITEM, *PONLINE_NOTIFICATION_WORK_ITEM; // 0x1C diff --git a/reactos/drivers/filters/mountmgr/notify.c b/reactos/drivers/filters/mountmgr/notify.c index a5e0b25b78c..197dc4653e5 100644 --- a/reactos/drivers/filters/mountmgr/notify.c +++ b/reactos/drivers/filters/mountmgr/notify.c @@ -119,11 +119,11 @@ SendOnlineNotificationWorker(IN PVOID Parameter) { /* Queue a new one for execution */ Head = RemoveHeadList(&(DeviceExtension->OnlineNotificationListHead)); - NewWorkItem = CONTAINING_RECORD(Head, ONLINE_NOTIFICATION_WORK_ITEM, List); + NewWorkItem = CONTAINING_RECORD(Head, ONLINE_NOTIFICATION_WORK_ITEM, WorkItem.List); KeReleaseSpinLock(&(DeviceExtension->WorkerLock), OldIrql); - NewWorkItem->List.Blink = NULL; - NewWorkItem->List.Flink = NULL; - ExQueueWorkItem((PWORK_QUEUE_ITEM)NewWorkItem, DelayedWorkQueue); + NewWorkItem->WorkItem.List.Blink = NULL; + NewWorkItem->WorkItem.List.Flink = NULL; + ExQueueWorkItem(&NewWorkItem->WorkItem, DelayedWorkQueue); } else { @@ -155,10 +155,8 @@ PostOnlineNotification(IN PDEVICE_EXTENSION DeviceExtension, return; } - WorkItem->List.Flink = NULL; + ExInitializeWorkItem(&WorkItem->WorkItem, SendOnlineNotificationWorker, WorkItem); WorkItem->DeviceExtension = DeviceExtension; - WorkItem->WorkerRoutine = SendOnlineNotificationWorker; - WorkItem->Parameter = WorkItem; WorkItem->SymbolicName.Length = SymbolicName->Length; WorkItem->SymbolicName.MaximumLength = SymbolicName->Length + sizeof(WCHAR); WorkItem->SymbolicName.Buffer = AllocatePool(WorkItem->SymbolicName.MaximumLength); @@ -179,12 +177,12 @@ PostOnlineNotification(IN PDEVICE_EXTENSION DeviceExtension, { /* Queue that one for execution */ DeviceExtension->OnlineNotificationWorkerActive = 1; - ExQueueWorkItem((PWORK_QUEUE_ITEM)WorkItem, DelayedWorkQueue); + ExQueueWorkItem(&WorkItem->WorkItem, DelayedWorkQueue); } else { /* Otherwise, just put it in the queue list */ - InsertTailList(&(DeviceExtension->OnlineNotificationListHead), &(WorkItem->List)); + InsertTailList(&(DeviceExtension->OnlineNotificationListHead), &(WorkItem->WorkItem.List)); } KeReleaseSpinLock(&(DeviceExtension->WorkerLock), OldIrql); diff --git a/reactos/ntoskrnl/cache/cachesub.c b/reactos/ntoskrnl/cache/cachesub.c index cac0688ca01..8ee3d4f3dc9 100644 --- a/reactos/ntoskrnl/cache/cachesub.c +++ b/reactos/ntoskrnl/cache/cachesub.c @@ -108,11 +108,11 @@ CcScheduleReadAhead(IN PFILE_OBJECT FileObject, WorkItem->FileOffset = *FileOffset; WorkItem->Length = Length; - ExInitializeWorkItem(((PWORK_QUEUE_ITEM)WorkItem), + ExInitializeWorkItem(&WorkItem->WorkItem, (PWORKER_THREAD_ROUTINE)CcpReadAhead, WorkItem); - ExQueueWorkItem((PWORK_QUEUE_ITEM)WorkItem, DelayedWorkQueue); + ExQueueWorkItem(&WorkItem->WorkItem, DelayedWorkQueue); DPRINT("Done\n"); } diff --git a/reactos/ntoskrnl/cache/pinsup.c b/reactos/ntoskrnl/cache/pinsup.c index b8d333179de..60c40c8bc19 100644 --- a/reactos/ntoskrnl/cache/pinsup.c +++ b/reactos/ntoskrnl/cache/pinsup.c @@ -273,7 +273,7 @@ CcpDereferenceCache(ULONG Start, WorkItem->ReleaseFromLazyWrite = Bcb->Map->Callbacks.ReleaseFromLazyWrite; WorkItem->LazyContext = Bcb->Map->LazyContext; - ExInitializeWorkItem(((PWORK_QUEUE_ITEM)WorkItem), + ExInitializeWorkItem(&WorkItem->WorkItem, (PWORKER_THREAD_ROUTINE)CcpUnmapCache, WorkItem); @@ -287,7 +287,7 @@ CcpDereferenceCache(ULONG Start, RemoveEntryList(&Bcb->ThisFileList); CcpUnlock(); - ExQueueWorkItem((PWORK_QUEUE_ITEM)WorkItem, DelayedWorkQueue); + ExQueueWorkItem(&WorkItem->WorkItem, DelayedWorkQueue); CcpLock(); } DPRINT("Done\n");