Hi!
i am using FltQueueDeferredIoWorkItem to queue a callback data for later processing. I wanted to know whether the “SYSTEM QUEUE” in which the Work item is inserted is a per instance system queue or a Single global system queue.
Thanks!
Ayush Gupta
Ayush,
The work item queue is a system-wide global queue. Each thread that processes a work item runs in the context of the system process. The number of worker threads is determined by the HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Executive registry key. This number will vary by OS version.
There are also three different types of worker threads, executing at different priorities. I would guess that FltQueueDeferredIoWorkItem places its work items in the Delayed Work Queue, executing at priority 12, but that is just an educated guess.
Hope that helps,
Bill
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@edsiohio.com
Sent: Tuesday, January 16, 2007 6:25 AM
To: Windows File Systems Devs Interest List
Subject: RE:[ntfsd] FltQueueDeferredIoWorkItem and System queue!
Ayush,
The work item queue is a system-wide global queue. Each thread that
processes a work item runs in the context of the system process. The
number of worker threads is determined by the
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Executive registry
key. This number will vary by OS version.
There are also three different types of worker threads, executing at
different priorities. I would guess that FltQueueDeferredIoWorkItem
places its work items in the Delayed Work Queue, executing at priority
12, but that is just an educated guess.
Hope that helps,
Bill
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
I was attempting to send some responses and it looks like the OSR list
server does not always like email from Office 2007. So in retrying this
morning I believe I sent the wrong response to he wrong email. I
believe this is the intended response for this question:
A change was made in filter managers worker queue code in Vista which I
do not believe made it into the documentation.
Starting with Vista filter manager now throttles requests sent through
the filter manager worker queue APIs. This was to prevent minifilters
from consuming all of the worker threads in the system which can cause
deadlocks. Previous to Vista if you are queing a lot of worker items
you may need to consider putting your own throttle code in place.
If you can get fltkd to work it has a new !work operation which displays
the internal throttled worker queue lists.
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@edsiohio.com
Sent: Tuesday, January 16, 2007 6:25 AM
To: Windows File Systems Devs Interest List
Subject: RE:[ntfsd] FltQueueDeferredIoWorkItem and System queue!
Ayush,
The work item queue is a system-wide global queue. Each thread that
processes a work item runs in the context of the system process. The
number of worker threads is determined by the
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Executive registry
key. This number will vary by OS version.
There are also three different types of worker threads, executing at
different priorities. I would guess that FltQueueDeferredIoWorkItem
places its work items in the Delayed Work Queue, executing at priority
12, but that is just an educated guess.
Hope that helps,
Bill
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
>>> Previous to Vista if you are queing a lot of worker items you may need to consider putting your own throttle code in place.
With regard to this i wanted to know what exactly is this throttling code ?
>>Do i have to check only these two things before marking an IRP pending:
- TopLevelIrp
- IRP_PAGING_IO
What about IRP_SYNCHRONOUS_PAGING_IO?
>>Why cant i pend IRP_MJ_SET_INORMATION? Whenever i try to do this, i am unable to rename and delete files & directories? Why is this so?
Thanks!
Ayush Gupta
Calsoft Pvt. Ltd.