mirror of
https://github.com/reactos/reactos.git
synced 2024-06-28 08:51:29 +00:00
[DRIVERS][NTOSKRNL]
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
This commit is contained in:
parent
fb35282eb3
commit
a8924f81c4
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
4
reactos/ntoskrnl/cache/cachesub.c
vendored
4
reactos/ntoskrnl/cache/cachesub.c
vendored
|
@ -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");
|
||||
}
|
||||
|
||||
|
|
4
reactos/ntoskrnl/cache/pinsup.c
vendored
4
reactos/ntoskrnl/cache/pinsup.c
vendored
|
@ -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");
|
||||
|
|
Loading…
Reference in a new issue