AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
"AFSWorkerThread Wait for queue items failed Status %08lX\n", ntStatus);
+
+ ntStatus = STATUS_SUCCESS;
}
else
{
pWorkItem = AFSRemoveWorkItem();
- if( pWorkItem != NULL)
+ if( pWorkItem == NULL)
+ {
+
+ ntStatus = KeWaitForSingleObject( &pLibraryDevExt->Specific.Library.WorkerQueueHasItems,
+ Executive,
+ KernelMode,
+ FALSE,
+ NULL);
+ }
+ else
{
freeWorkItem = TRUE;
ExFreePoolWithTag( pWorkItem, AFS_WORK_ITEM_TAG);
}
+
+ ntStatus = STATUS_SUCCESS;
}
}
-
- ntStatus = KeWaitForSingleObject( &pLibraryDevExt->Specific.Library.WorkerQueueHasItems,
- Executive,
- KernelMode,
- FALSE,
- NULL);
-
} // worker thread loop
ClearFlag( pPoolContext->State, AFS_WORKER_INITIALIZED);
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
"AFSIOWorkerThread Wait for queue items failed Status %08lX\n", ntStatus);
+
+ ntStatus = STATUS_SUCCESS;
}
else
{
pWorkItem = AFSRemoveIOWorkItem();
- if( pWorkItem != NULL)
+ if( pWorkItem == NULL)
+ {
+
+ ntStatus = KeWaitForSingleObject( &pLibraryDevExt->Specific.Library.IOWorkerQueueHasItems,
+ Executive,
+ KernelMode,
+ FALSE,
+ NULL);
+ }
+ else
{
freeWorkItem = TRUE;
ExFreePoolWithTag( pWorkItem, AFS_WORK_ITEM_TAG);
}
+
+ ntStatus = STATUS_SUCCESS;
}
}
-
- ntStatus = KeWaitForSingleObject( &pLibraryDevExt->Specific.Library.IOWorkerQueueHasItems,
- Executive,
- KernelMode,
- FALSE,
- NULL);
-
} // worker thread loop
ClearFlag( pPoolContext->State, AFS_WORKER_INITIALIZED);