[DRIVERS][NTOSKRNL]
authorHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Sun, 15 May 2016 00:16:31 +0000 (00:16 +0000)
committerHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Sun, 15 May 2016 00:16:31 +0000 (00:16 +0000)
Don't use PWORK_QUEUE_ITEM casts in ExQueueWorkItem calls, but use the explicit underlaying work queue item object instead.

svn path=/trunk/; revision=71330

reactos/drivers/filters/mountmgr/mntmgr.h
reactos/drivers/filters/mountmgr/notify.c
reactos/ntoskrnl/cache/cachesub.c
reactos/ntoskrnl/cache/pinsup.c

index 090d060..4153add 100644 (file)
@@ -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
index a5e0b25..197dc46 100644 (file)
@@ -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);
index cac0688..8ee3d4f 100644 (file)
@@ -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");
 }
 
index b8d3331..60c40c8 100644 (file)
@@ -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");