IRQL and major ops

My filter will sniff file operations originating from user space, e.g. MS
Office applications. All the filter needs to do is inform an app in user
space that a particular file has been opened for writing, then closed. The
user space app will then scan it for changes.

So, the filter looks for and notes IRP_MJ_CREATE and IRP_MJ_CLOSE,
*_FLUSH_BUFFERS, and the like, passing them onward untouched. Everything
else just passes through.

It is problematic to deal with code running at or above DISPATCH_LEVEL.

Can I safely discard (i.e., pass through) all major ops calls that come in
at or above DISPATCH_LEVEL, without losing data? I am not interested in page
file writes and system file updates.

Can user code (e.g., Internet Explorer) generate calls to the file system at
IRQL > DISPATCH_LEVEL?

Can a file be opened at, say, PASSIVE_LEVEL, then closed at DISPATCH_LEVEL,
or vice versa?

Does the IRQL ever change for a given file system op, as the IRP makes it’s
way through the stack? Can a file system get an IRP at PASSIVE_LEVEL, and
pass it down-stack to a SCSI disk driver at, say, DISPATCH_LEVEL?

IIRC the only FSD IRPs which can be sent on DISPATCH are the MDL-based
read/write IRPs with IRP_MN_DPC flag set.

Max

----- Original Message -----
From: “Eric Fowler”
To: “File Systems Developers”
Sent: Monday, November 18, 2002 1:11 AM
Subject: [ntfsd] IRQL and major ops

> My filter will sniff file operations originating from user space,
e.g. MS
> Office applications. All the filter needs to do is inform an app in
user
> space that a particular file has been opened for writing, then
closed. The
> user space app will then scan it for changes.
>
> So, the filter looks for and notes IRP_MJ_CREATE and IRP_MJ_CLOSE,
> *_FLUSH_BUFFERS, and the like, passing them onward untouched.
Everything
> else just passes through.
>
> It is problematic to deal with code running at or above
DISPATCH_LEVEL.
>
> Can I safely discard (i.e., pass through) all major ops calls that
come in
> at or above DISPATCH_LEVEL, without losing data? I am not interested
in page
> file writes and system file updates.
>
> Can user code (e.g., Internet Explorer) generate calls to the file
system at
> IRQL > DISPATCH_LEVEL?
>
> Can a file be opened at, say, PASSIVE_LEVEL, then closed at
DISPATCH_LEVEL,
> or vice versa?
>
> Does the IRQL ever change for a given file system op, as the IRP
makes it’s
> way through the stack? Can a file system get an IRP at
PASSIVE_LEVEL, and
> pass it down-stack to a SCSI disk driver at, say, DISPATCH_LEVEL?
>
>
>
>
>
>
> —
> You are currently subscribed to ntfsd as: xxxxx@storagecraft.com
> To unsubscribe send a blank email to %%email.unsub%%
>