Another problem that needs to be considered with recursion is stack size
limits. Even when you can correctly detect recursion 100% of the time
(which is difficult if not impossible) you still run the risk of blowing
the 12K stack you’ve got.
Cheer,
Scott Belie
-----Original Message-----
From: Marc Sherman [mailto:xxxxx@bionetrix.com]
Sent: Wednesday, July 12, 2000 11:32 AM
To: File Systems Developers
Subject: [ntfsd] RE: preventing recursive loop in create dispatch hand ler
Before calling ZWCreateFile, aquire a mutex, then check to see if you’ve
aquired it recursively (mutex.Header.SignalState < 0). If this is true, your
hadling the irp that resulted from your ZWCreateFile. Release the mutex and
return. Remember to release your mutex after your ZWClose as well. This
works for one of our filters.
good luck,
Marc
-----Original Message-----
From: Smith, Joel [mailto:xxxxx@ntpsoftware.com]
Sent: Wednesday, July 12, 2000 2:21 PM
To: File Systems Developers
Subject: [ntfsd] RE: preventing recursive loop in create dispatch hand ler
Thanks,
In my case, though, I need to open the file before the file system
because it is important that I know the file’s size (if the file exists),
and, of course, a create might change the file’s size (overwrite,
superceded, etc). I suppose I could backup to the parent directory and do a
directory query for the file in question to determine its size. Then again,
I wonder if FsRtlGetFileSize is smart enough to work with a FILE_OBJECT that
has not been opened yet? Anyway, I’d still be interested in answers to my
original question because just recognizing a recursive open may be simpler
than solving the problem another way (like I mention above).
Thanks,
Joel
-----Original Message-----
From: Pavel Hrdina [mailto:xxxxx@sodatsw.cz mailto:xxxxx]
Sent: Wednesday, July 12, 2000 2:09 PM
To: File Systems Developers
Subject: [ntfsd] RE: preventing recursive loop in create dispatch handler
The best solution is to let the FSD to process the desired open first
and then you can read from the file. You do not need to close it because
you’re using the same file object as the successful requestor of this create
request.
Paul
> -----P?vodn? zpr?va-----
> Od: Smith, Joel [SMTP:xxxxx@ntpsoftware.com]
> Odesl?no: 12. ?ervence 2000 20:00
> Komu: File Systems Developers
> P?edm?t: [ntfsd] preventing recursive loop in create dispatch handler
>
> Hello,
> I know this has been asked before, and I apologize for asking
> again, but…
> Can anyone suggest a good way to prevent a recursive loop when
> opening the destination file for a create in the create dispatch routine.
>
> for example:
>
> CreateDisptachHandler(device, irp)
> {
> -ZwCreateFile(target of create) - this will cause a
> recursive loop, obviously
>
> -read some settings from file if it exists
>
> -ZwClose(target of create)
> }
>
> I believe there is a ‘well known’ solution to this problem, but I
> don’t know it.
>
> Thanks,
> Joel
>
—
You are currently subscribed to ntfsd as: xxxxx@ntpsoftware.com
To unsubscribe send a blank email to $subst(‘Email.Unsub’)</mailto:xxxxx>