Strictly speaking, you can call KeWaitForSingleObject and
KeWaitForMultipleObjects at APC_LEVEL as well as PASSIVE_LEVEL. Note,
however, that if you are waiting for I/O completion, doing so at APC_LEVEL
is generally a bad idea, since it is the delivery of the APC that actually
sets the event - and at APC_LEVEL the APC cannot be delivered (and hence the
wait cannot be satisfied.)
This is a common problem when dealing with the TDI drivers, for instance -
you cannot normally call TDI at APC_LEVEL because if the IRP is posted there
is no way to process the I/O completion (which is finished in the original
thread context via an APC.)
The symptoms of such a call are exactly as you describe - the thread hangs
waiting for the event. The event cannot be signalled because the APC cannot
be delivered. The I/O, however, is done.
Regards,
Tony Mason
Consulting Partner
OSR Open Systems Resources, Inc.
http://www.osr.com
-----Original Message-----
From: Jamey Kirby [mailto:xxxxx@storagecraft.com]
Sent: Saturday, May 06, 2000 4:21 PM
To: File Systems Developers
Subject: [ntfsd] RE: Problem with TDI
Are you in PASSIVE_MODE? Check. You can not call the KeWaitXxx() unless you
are at passive.
Jamey
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com]On Behalf Of Almas Khan
Sent: Saturday, May 06, 2000 8:24 AM
To: File Systems Developers
Subject: [ntfsd] Problem with TDI
Hi there,
I am facing a big problem here, would appreciate if someone could help
out.
I have a filter driver for the FS. In this, I basically block the Irp
and ask the TDI to do some network functions for me. The problem is
that sometimes it works fine for a long time and sometimes it just hangs
in the call to the TDI.
The point it exactly hangs is when I have allocated an event (from
non-paged pool) and passed it to the TDI, then I wait for the request to
get over and the TDI to signal back, it is at this point that it just
hangs. Meaning I just keep waiting in my KeWaitForSingleObject()
routine.
I have been trying to debug this thing for the past 1 week and cant get
through.
Any help is much appreciated,
thanks in advance,
Almas
You are currently subscribed to ntfsd as: xxxxx@storagecraft.com
To unsubscribe send a blank email to $subst(‘Email.Unsub’)
You are currently subscribed to ntfsd as: xxxxx@osr.com
To unsubscribe send a blank email to $subst(‘Email.Unsub’)