FltQueueDeferredIoWorkItem and FltQueueGenericWorkItem!

Hi!
I wanted to know what’s the difference between pending a callback data to a worker thread using FltQueueDeferredIoWorkItem and FltQueueGenericWorkItem?

Do they use different thread pools? Do they use different mechanisms?

And most importantly which is preferable and in which scenario?

Thanks!
Ayush Gupta

Different dispatcher priority of the worker threads I think.


Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

wrote in message news:xxxxx@ntfsd…
> Hi!
> I wanted to know what’s the difference between pending a callback data to a
worker thread using FltQueueDeferredIoWorkItem and FltQueueGenericWorkItem?
>
> Do they use different thread pools? Do they use different mechanisms?
>
> And most importantly which is preferable and in which scenario?
>
> Thanks!
> Ayush Gupta
>

Hi,
if processing you wanted to do is specific for certain IO you should use
FltQueueDeferredIoWorkItem. You can use advantage of checking input
parameters and you don’t need to pass another pointer to callback data in
your context then.
I think that even you use FltQueueGenericWorkItem for pending IO you should
implement same parameter checking as FltQueueDeferredIoWorkItem perform.

Thanks Maxim & Jan!

Please tell me the required parameter checking for FltQueueGenericWorkItem. Actually u have already checked for TopLevelIrp , IRP_SYNCHRONOUS_PAGING_IO, IRP_PAGING_IO. What else should i check for?

Is it better to use a DeferredIo workitem or a Generic Workitem?

Thanks!
Ayush Gupta

These routines use the same global worker queues based on the specified
queue type.

The difference between the two is that FltQueueDeferredIoWorkItem
determines if it is safe to queue the given operation or not. It will
return a failure if TopLevelIrp is SET (not NULL) or if this is a
PagingIO operation (IRP_PAGING_IO is set).

The FltQueueGenericWorkItem routine does not do these checks.

If you are queueing a workitem while processing an IO operation (which
means you have a callback data structure) you should use the Deferred
routine. If not use the generic routine.

Neal Christiansen
Microsoft NTFS Development Lead
This posting is provided “AS IS” with no warranties, and confers no
Rights

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of
xxxxx@yahoo.com
Sent: Tuesday, January 30, 2007 8:20 PM
To: Windows File Systems Devs Interest List
Subject: RE:[ntfsd] FltQueueDeferredIoWorkItem and
FltQueueGenericWorkItem!

Thanks Maxim & Jan!

Please tell me the required parameter checking for
FltQueueGenericWorkItem. Actually u have already checked for TopLevelIrp
, IRP_SYNCHRONOUS_PAGING_IO, IRP_PAGING_IO. What else should i check
for?

Is it better to use a DeferredIo workitem or a Generic Workitem?

Thanks!
Ayush Gupta


Questions? First check the IFS FAQ at
https://www.osronline.com/article.cfm?id=17

You are currently subscribed to ntfsd as: xxxxx@windows.microsoft.com
To unsubscribe send a blank email to xxxxx@lists.osr.com